- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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;
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks, I tried this and no difference, same warning...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page