No-reset registers initialization
Initialize registers without reset and mode of initialization
Model Configuration Pane: Global Settings / Coding style
Description
Specify whether you want to initialize registers without reset and the mode of initialization.
Settings
Generate initialization inside module
(default) | Do not initialize
| Generate an external script
Default: Generate initialization inside module
The options are:
Do not initialize
HDL Coder™ does not initialize the registers without a reset port.
Generate an external script
HDL Coder generates a script to initialize registers that do not have a reset port in the generated code.
Generate initialization inside module
HDL Coder initializes the registers that do not have a reset port as part of the HDL code generated for the DUT. In Verilog or SystemVerilog, an
initial
construct in the corresponding module definition initializes the no-reset registers. In VHDL, the initialization code is part of the signal declaration statements.
Tips
To set this property, use the functions hdlset_param
or makehdl
. To view the property value, use
the function hdlget_param
.
If you have blocks with ResetType set to none
in your Simulink® model or specify the adaptive pipelining optimization, the generated HDL code can contain registers without a reset port. If you do not initialize these registers, there can be potential numerical mismatches in the HDL simulation results, because the registers are insensitive to the global reset logic. To avoid simulation mismatches, use this setting to initialize these registers in the generated code. For better simulation results, if you have registers without a reset port at the boundaries of the DUT, select Initialize test bench inputs in the Test Bench pane. Setting this property provides an initial value for the data driven to the DUT, and initializes the registers with these values.
Functionality | Script | None value | InsideModule |
---|---|---|---|
Generated HDL code for DUT | The script is generated externally and does not affect the HDL code for the DUT. | HDL Coder does not initialize the registers in the generated code. | The code for initializing the registers is part of the HDL code for the DUT. |
HDL simulator support | The syntax of the script is compliant with ModelSim™ 10.2c or later. Other HDL simulators or older ModelSim versions do not support the syntax of the initialization script. This mode does not support enumeration types, and initializing the registers with non zero values. | There can be numerical mismatches in the HDL simulation results, because this mode does not initialize the registers that do not have a reset port. | All HDL simulators support this initialization mode, and initialize the no-reset registers with appropriate values. |
Synthesis tool support | As the script does not affect the HDL code generated for the DUT, all synthesis tools support this initialization mode. | Synthesis tools do not initialize the no-reset registers in this mode. | Later versions of synthesis tools support the initialization constructs in the generated code. However, it is possible that older versions do not synthesize the initialization constructs. To avoid such issues, make sure that synthesis tools can synthesize the generated code. |
Recommended Settings
No recommended settings.
Programmatic Use
Parameter: NoResetInitializationMode |
Type: character vector |
Value: 'InsideModule' | 'None' | 'Script' |
Default: 'InsideModule' |
Version History
Introduced in R2016b