I have a question about what seems to me odd behavior of an AGC/SPI controller I\'m working on. It\'s done in Verilog, targeting a Xilinx Spartan 3e FPGA. The controller i
I answer in the context of FPGAs (I have most experience with Xilinx FPGAs); I disagree with Tim's answer.
When an FPGA is programmed and initialized, many internal resources are initialized to a known state. This includes all flip flops and block rams. By adding blanket reset logic throughout your design, you may make it significantly more complicated than it needs to be, if you could otherwise count on internal elements initializing to a known state. High fanout reset nets can make implementation of your design much more difficult for the router, and mapping your design into slices is also complicated by your choice of resets - especially asynchronous ones.
My suggestions: