N
news.optonline.net
Guest
What is the consensus of opinion regarding the use of a explicity coded
global reset line that is driven by a power on reset circuit?
I'm targeting Xilinx Virtex II and QuickLogic Eclipse (both are available in
radiation hardened versions). The QL part resets all flops at reset. The
Xilinx can set/reset a flop. Therefore, theoretically I wouldn't need a POR
circuit and waste the routing resources.
However, eliminating the explicitly coded reset makes the Verilog synthesis
optimizer do strange things since it doesn't know what the initial value of
the flop will be (even if a directive is provided). In addition, it makes
simulation a bit more difficult.
That being said, I'm curious regarding other people's opinions on the
subject.
I am aware that using the GSR line on some Xilinx parts results in slow
reset distribution. In my case, it really shouldn't matter...
I give the following example of a reset flag for use by a ground link to a
spacecraft:
// This works fine
always @(posedge CLOCK, posedge RESET)
if (RESET)
RESET_FLAG_N <= 1'b0;
else if (FLAGS_READ_BY_TELEMETRY)
RESET_FLAG_N <= 1'b1;
// This gets optimized to a net tied to Vcc by both XST and Synplify
// adding a preserve attribute in Synplify makes all OK. The equivalent
// attribute in XST says the attribute is not applicable (another mystery)
always @(posedge CLOCK)
if (FLAGS_READ_BY_TELEMETRY)
RESET_FLAG_N <= 1'b1;
Thanks
global reset line that is driven by a power on reset circuit?
I'm targeting Xilinx Virtex II and QuickLogic Eclipse (both are available in
radiation hardened versions). The QL part resets all flops at reset. The
Xilinx can set/reset a flop. Therefore, theoretically I wouldn't need a POR
circuit and waste the routing resources.
However, eliminating the explicitly coded reset makes the Verilog synthesis
optimizer do strange things since it doesn't know what the initial value of
the flop will be (even if a directive is provided). In addition, it makes
simulation a bit more difficult.
That being said, I'm curious regarding other people's opinions on the
subject.
I am aware that using the GSR line on some Xilinx parts results in slow
reset distribution. In my case, it really shouldn't matter...
I give the following example of a reset flag for use by a ground link to a
spacecraft:
// This works fine
always @(posedge CLOCK, posedge RESET)
if (RESET)
RESET_FLAG_N <= 1'b0;
else if (FLAGS_READ_BY_TELEMETRY)
RESET_FLAG_N <= 1'b1;
// This gets optimized to a net tied to Vcc by both XST and Synplify
// adding a preserve attribute in Synplify makes all OK. The equivalent
// attribute in XST says the attribute is not applicable (another mystery)
always @(posedge CLOCK)
if (FLAGS_READ_BY_TELEMETRY)
RESET_FLAG_N <= 1'b1;
Thanks