Arrays are often defined as static variables, which implies all elements are
initialized to zero; and arrays are typically implemented as block RAM. When reset
options
state
or all
are
used, it forces all arrays implemented as block RAM to be returned to their initialized
state after reset. This may result in two very undesirable conditions in the RTL
design:- Unlike a power-up initialization, an explicit reset requires the RTL design iterate through each address in the block RAM to set the value: this can take many clock cycles if N is large, and requires more area resources to implement the reset.
- A reset is added to every array in the design.
To prevent adding reset logic onto every such block RAM, and incurring the cycle
overhead to reset all elements in the RAM, specify the default control
reset mode and use the RESET directive to identify individual
static or global variables to be reset.
Alternatively, you can use the state
reset mode, and use the RESET directive off
option to
identify individual static or global variables to remove the reset from.