diff --git a/hw/ip/rom_ctrl/rtl/rom_ctrl_fsm.sv b/hw/ip/rom_ctrl/rtl/rom_ctrl_fsm.sv index b13518c706591..f270376be5fea 100644 --- a/hw/ip/rom_ctrl/rtl/rom_ctrl_fsm.sv +++ b/hw/ip/rom_ctrl/rtl/rom_ctrl_fsm.sv @@ -145,7 +145,10 @@ module rom_ctrl_fsm ReadingLow: begin // Switch to ReadingHigh when counter_lnt is true and kmac_rom_rdy_i & kmac_rom_vld_o // (implying that the transaction went through) - if (counter_lnt && kmac_rom_rdy_i && kmac_rom_vld_o) begin + // + // If counter_lnt is true then we requested the last non-top word from the ROM on the last + // cycle and the response will be available now. This gets taken if kmac_rom_rdy_i. + if (counter_lnt && kmac_rom_rdy_i) begin state_d = ReadingHigh; end end @@ -311,4 +314,6 @@ module rom_ctrl_fsm assign alert_o = fsm_alert | checker_alert | unexpected_counter_change; + `ASSERT(CounterLntImpliesKmacRomVldO_A, counter_lnt -> kmac_rom_vld_o) + endmodule