@@ -1591,9 +1591,28 @@ module ibex_core import ibex_pkg::*; #(
15911591 rvfi_ext_stage_debug_req[i+ 1 ] <= '0 ;
15921592 rvfi_ext_stage_debug_mode[i] <= '0 ;
15931593 rvfi_ext_stage_mcycle[i] <= '0 ;
1594- rvfi_ext_stage_mhpmcounters[i] <= '{ 10 { '0 }} ;
1595- rvfi_ext_stage_mhpmcountersh[i] <= '{ 10 { '0 }} ;
15961594 rvfi_ext_stage_ic_scr_key_valid[i] <= '0 ;
1595+ // DSim does not properly support array assignment in for loop, so unroll
1596+ rvfi_ext_stage_mhpmcounters[i][0 ] <= '0 ;
1597+ rvfi_ext_stage_mhpmcountersh[i][0 ] <= '0 ;
1598+ rvfi_ext_stage_mhpmcounters[i][1 ] <= '0 ;
1599+ rvfi_ext_stage_mhpmcountersh[i][1 ] <= '0 ;
1600+ rvfi_ext_stage_mhpmcounters[i][2 ] <= '0 ;
1601+ rvfi_ext_stage_mhpmcountersh[i][2 ] <= '0 ;
1602+ rvfi_ext_stage_mhpmcounters[i][3 ] <= '0 ;
1603+ rvfi_ext_stage_mhpmcountersh[i][3 ] <= '0 ;
1604+ rvfi_ext_stage_mhpmcounters[i][4 ] <= '0 ;
1605+ rvfi_ext_stage_mhpmcountersh[i][4 ] <= '0 ;
1606+ rvfi_ext_stage_mhpmcounters[i][5 ] <= '0 ;
1607+ rvfi_ext_stage_mhpmcountersh[i][5 ] <= '0 ;
1608+ rvfi_ext_stage_mhpmcounters[i][6 ] <= '0 ;
1609+ rvfi_ext_stage_mhpmcountersh[i][6 ] <= '0 ;
1610+ rvfi_ext_stage_mhpmcounters[i][7 ] <= '0 ;
1611+ rvfi_ext_stage_mhpmcountersh[i][7 ] <= '0 ;
1612+ rvfi_ext_stage_mhpmcounters[i][8 ] <= '0 ;
1613+ rvfi_ext_stage_mhpmcountersh[i][8 ] <= '0 ;
1614+ rvfi_ext_stage_mhpmcounters[i][9 ] <= '0 ;
1615+ rvfi_ext_stage_mhpmcountersh[i][9 ] <= '0 ;
15971616 end else begin
15981617 rvfi_stage_valid[i] <= rvfi_stage_valid_d[i];
15991618
@@ -1624,12 +1643,27 @@ module ibex_core import ibex_pkg::*; #(
16241643 rvfi_ext_stage_debug_mode[i] <= debug_mode;
16251644 rvfi_ext_stage_mcycle[i] <= cs_registers_i.mcycle_counter_i.counter_val_o;
16261645 rvfi_ext_stage_ic_scr_key_valid[i] <= cs_registers_i.cpuctrlsts_ic_scr_key_valid_q;
1627- // This is done this way because SystemVerilog does not support looping through
1628- // gen_cntrs[k] within a for loop.
1629- for (int k= 0 ; k < 10 ; k++ ) begin
1630- rvfi_ext_stage_mhpmcounters[i][k] <= cs_registers_i.mhpmcounter[k+ 3 ][31 : 0 ];
1631- rvfi_ext_stage_mhpmcountersh[i][k] <= cs_registers_i.mhpmcounter[k+ 3 ][63 : 32 ];
1632- end
1646+ // DSim does not properly support array assignment in for loop, so unroll
1647+ rvfi_ext_stage_mhpmcounters[i][0 ] <= cs_registers_i.mhpmcounter[3 ][31 : 0 ];
1648+ rvfi_ext_stage_mhpmcountersh[i][0 ] <= cs_registers_i.mhpmcounter[3 ][63 : 32 ];
1649+ rvfi_ext_stage_mhpmcounters[i][1 ] <= cs_registers_i.mhpmcounter[4 ][31 : 0 ];
1650+ rvfi_ext_stage_mhpmcountersh[i][1 ] <= cs_registers_i.mhpmcounter[4 ][63 : 32 ];
1651+ rvfi_ext_stage_mhpmcounters[i][2 ] <= cs_registers_i.mhpmcounter[5 ][31 : 0 ];
1652+ rvfi_ext_stage_mhpmcountersh[i][2 ] <= cs_registers_i.mhpmcounter[5 ][63 : 32 ];
1653+ rvfi_ext_stage_mhpmcounters[i][3 ] <= cs_registers_i.mhpmcounter[6 ][31 : 0 ];
1654+ rvfi_ext_stage_mhpmcountersh[i][3 ] <= cs_registers_i.mhpmcounter[6 ][63 : 32 ];
1655+ rvfi_ext_stage_mhpmcounters[i][4 ] <= cs_registers_i.mhpmcounter[7 ][31 : 0 ];
1656+ rvfi_ext_stage_mhpmcountersh[i][4 ] <= cs_registers_i.mhpmcounter[7 ][63 : 32 ];
1657+ rvfi_ext_stage_mhpmcounters[i][5 ] <= cs_registers_i.mhpmcounter[8 ][31 : 0 ];
1658+ rvfi_ext_stage_mhpmcountersh[i][5 ] <= cs_registers_i.mhpmcounter[8 ][63 : 32 ];
1659+ rvfi_ext_stage_mhpmcounters[i][6 ] <= cs_registers_i.mhpmcounter[9 ][31 : 0 ];
1660+ rvfi_ext_stage_mhpmcountersh[i][6 ] <= cs_registers_i.mhpmcounter[9 ][63 : 32 ];
1661+ rvfi_ext_stage_mhpmcounters[i][7 ] <= cs_registers_i.mhpmcounter[10 ][31 : 0 ];
1662+ rvfi_ext_stage_mhpmcountersh[i][7 ] <= cs_registers_i.mhpmcounter[10 ][63 : 32 ];
1663+ rvfi_ext_stage_mhpmcounters[i][8 ] <= cs_registers_i.mhpmcounter[11 ][31 : 0 ];
1664+ rvfi_ext_stage_mhpmcountersh[i][8 ] <= cs_registers_i.mhpmcounter[11 ][63 : 32 ];
1665+ rvfi_ext_stage_mhpmcounters[i][9 ] <= cs_registers_i.mhpmcounter[12 ][31 : 0 ];
1666+ rvfi_ext_stage_mhpmcountersh[i][9 ] <= cs_registers_i.mhpmcounter[12 ][63 : 32 ];
16331667 end
16341668
16351669 // Some of the rvfi_ext_* signals are used to provide an interrupt notification (signalled
0 commit comments