AN 919: Improving Quality of Results with Design Assistant

ID 683369
Date 4/26/2024
Public

Initial Power-Up Conditions Rules

The initial condition of the design at power-up represents the state of the design at clock cycle 0. This state is transitional rather than functional because the design cannot return to this condition.
Table 4.  Initial Conditions RulesThe following Design Assistant rules identify initial conditions in the design and provide you guidance.
Rule Description Possible course of action
HRR-10203 Catches registers whose initial conditions drop because of IGNORE_REGISTER_POWER_UP_INITIALIZATION ON Verify that the design is still functionally correct without these initial conditions.
RES-30132 Registers might not be properly reset Check to see if you need these registers.
RES-30133 Catches memories that may have spurious writes because of initial conditions Check to see that these registers are reset.
HRR-10201 Power-up don’t care synthesis setting might prevent retiming Remove power-up don’t care setting
TMC-20205 Setup-failing path endpoints with explicit power-up states that might restrict retiming Use QSFs to ignore initial conditions

Remove initial conditions and use reset.

In the Design Assistant example design, count_q is not reset, which triggers rule RES-30132. Do not assume that Quartus® Prime sets count_q to 0 at power-up.

 always@(posedge clk) 
begin
 count_q <= count_q + 1'd1;
 if(count_q == 4'hf)
 wen_q <= 1'b1;
 else
 wen_q <= 1'b0;
 end

Applying a reset to count_q so that it is set to 0 at reset fixes the violation.

Agilex™ 7 and Intel Stratix 10 devices don’t power up uniformly across all sectors. They power-up sector by sector. Some parts of the device may have their initial conditions before other parts of the device, which can lead to race conditions or spurious writes to memory during power-up.