FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
5892 Discussions

How am I inferring latch in this code?

AIbra11
Novice
779 Views

I'm getting warning 10631 in Quartus II (inferring latches)

Warning (10631): VHDL Process Statement warning at U6D2CPUSeq.vhd(947): inferring latch(es) for signal or variable "RST_RSMRST_N_200MS_DELAY", which holds its previous value in one or more paths through the process

Warning (10631): VHDL Process Statement warning at U6D2CPUSeq.vhd(947): inferring latch(es) for signal or variable "RST_RSMRST_N_200MS_CNT", which holds its previous value in one or more paths through the process

 

here is my code:

process(LED_500HZ_CLK, RST_RSMRST_PLD_R_N_T, RST_DEDI_BUSY_PLD_N) begin if RST_RSMRST_PLD_R_N_T = '0' or RST_DEDI_BUSY_PLD_N ='0' then RST_RSMRST_N_200MS_DELAY <= '0'; RST_RSMRST_N_200MS_CNT <= (others =>'0'); elsif rising_edge(LED_500HZ_CLK) then RST_RSMRST_N_200MS_CNT <= RST_RSMRST_N_200MS_CNT + '1'; if RST_RSMRST_N_200MS_CNT = "1100100" then RST_RSMRST_N_200MS_DELAY <='1'; end if; end if; end process;

 

0 Kudos
3 Replies
sstrell
Honored Contributor III
576 Views

I think you want to be doing this under rising_edge:

if RST_RSMRST_N_200MS_CNT = "1100100" then RST_RSMRST_N_200MS_DELAY <='1'; else RST_RSMRST_N_200MS_CNT <= RST_RSMRST_N_200MS_CNT + '1'; end if;

Doing the count before checking the count value implies that there must already be a value in RST_RSMRST_N_200MS_CNT already to increment, causing the latch.

 

Or you could use a variable to temporarily store the count.

 

#iwork4intel

0 Kudos
AIbra11
Novice
576 Views

Thanks, I tried this and no difference, same warning...

0 Kudos
MEIYAN_L_Intel
Employee
576 Views

Hi,

The warning is due to you had assigned statement RST_RSMRST_N_200MS_DELAY <='1' when RST_RSMRST_N_200MS_CNT = "1100100" but you do not assign new value for RST_RSMRST_N_200MS_DELAY if RST_RSMRST_N_200MS_CNT is not equal to "1100100".

You may refer to the information as below:

https://www.intel.com/content/www/us/en/programmable/quartushelp/current/index.htm#msgs/msgs/wvrfx_l2_vhdl_id_in_comb_process_holds_value.htm

Thanks

0 Kudos
Reply