@@ -449,40 +449,6 @@ index 5324b4978..a1a858232 100644
449449 } reg2hw_wrap_t;
450450
451451 endpackage : alert_pkg
452- diff --git a/hw/ip/flash_ctrl/rtl/flash_ctrl.sv b/hw/ip/flash_ctrl/rtl/flash_ctrl.sv
453- index 6b573e1b7..6a4f5b30e 100644
454- --- a/hw/ip/flash_ctrl/rtl/flash_ctrl.sv
455- +++ b/hw/ip/flash_ctrl/rtl/flash_ctrl.sv
456- @@ -309,20 +309,20 @@ module flash_ctrl import flash_ctrl_pkg::*; (
457- end
458-
459- // extra region is the default region
460- - flash_ctrl_reg2hw_mp_region_cfg_mreg_t [MpRegions:0] region_cfgs;
461- + logic [MpRegions*24:0] region_cfgs;
462-
463- - assign region_cfgs[MpRegions-1:0] = reg2hw.mp_region_cfg[MpRegions-1:0];
464- + assign region_cfgs[(MpRegions - 1)*24-1:0] = reg2hw.mp_region_cfg[MpRegions*24-1:0];
465-
466- //default region
467- - assign region_cfgs[MpRegions].base.q = '0;
468- - assign region_cfgs[MpRegions].size.q = NumBanks * PagesPerBank;
469- - assign region_cfgs[MpRegions].en.q = 1'b1;
470- - assign region_cfgs[MpRegions].rd_en.q = reg2hw.default_region.rd_en.q;
471- - assign region_cfgs[MpRegions].prog_en.q = reg2hw.default_region.prog_en.q;
472- - assign region_cfgs[MpRegions].erase_en.q = reg2hw.default_region.erase_en.q;
473- + assign region_cfgs[(MpRegions - 1)*24+19:(MpRegions - 1)*24+11] = '0;
474- + assign region_cfgs[(MpRegions - 1)*24+10:(MpRegions - 1)*24+1] = NumBanks * PagesPerBank;
475- + assign region_cfgs[(MpRegions - 1)*24+23] = 1'b1;
476- + assign region_cfgs[(MpRegions - 1)*24+22] = reg2hw.default_region.rd_en.q;
477- + assign region_cfgs[(MpRegions - 1)*24+21] = reg2hw.default_region.prog_en.q;
478- + assign region_cfgs[(MpRegions - 1)*24+20] = reg2hw.default_region.erase_en.q;
479- // we are allowed to set default accessibility of data partitions
480- // however info partitions default to inaccessible
481- - assign region_cfgs[MpRegions].partition.q = FlashPartData;
482- + assign region_cfgs[(MpRegions - 1)*24+0] = FlashPartData;
483-
484- flash_part_e flash_part_sel;
485- assign flash_part_sel = flash_part_e'(reg2hw.control.partition_sel.q);
486452diff --git a/hw/ip/padctrl/rtl/padring.sv b/hw/ip/padctrl/rtl/padring.sv
487453index fc8b3d183..2b94b0d67 100644
488454--- a/hw/ip/padctrl/rtl/padring.sv
@@ -556,115 +522,6 @@ index 962d3b559..9d5a10c8c 100644
556522 `endif
557523 end
558524
559- diff --git a/hw/ip/rv_timer/rtl/rv_timer.sv b/hw/ip/rv_timer/rtl/rv_timer.sv
560- index 9b939eedd..a4c91c238 100644
561- --- a/hw/ip/rv_timer/rtl/rv_timer.sv
562- +++ b/hw/ip/rv_timer/rtl/rv_timer.sv
563- @@ -31,10 +31,10 @@ module rv_timer (
564-
565- logic [N_HARTS-1:0] tick;
566-
567- - logic [63:0] mtime_d [N_HARTS];
568- - logic [63:0] mtime [N_HARTS];
569- - logic [63:0] mtimecmp [N_HARTS][N_TIMERS]; // Only [harts][0] is connected to mtimecmp CSRs
570- - logic mtimecmp_update [N_HARTS][N_TIMERS];
571- + logic [63:0] mtime_d ;
572- + logic [63:0] mtime ;
573- + logic [63:0] mtimecmp; // Only [harts][0] is connected to mtimecmp CSRs
574- + logic mtimecmp_update;
575-
576- logic [N_HARTS*N_TIMERS-1:0] intr_timer_set;
577- logic [N_HARTS*N_TIMERS-1:0] intr_timer_en;
578- @@ -52,25 +52,25 @@ module rv_timer (
579-
580- // Once reggen supports nested multireg, the following can be automated. For the moment, it must
581- // be connected manually.
582- - assign active[0] = reg2hw.ctrl[0].q;
583- + assign active[0] = reg2hw.ctrl.q;
584- assign prescaler = '{reg2hw.cfg0.prescale.q};
585- assign step = '{reg2hw.cfg0.step.q};
586-
587- assign hw2reg.timer_v_upper0.de = tick[0];
588- assign hw2reg.timer_v_lower0.de = tick[0];
589- - assign hw2reg.timer_v_upper0.d = mtime_d[0][63:32];
590- - assign hw2reg.timer_v_lower0.d = mtime_d[0][31: 0];
591- - assign mtime[0] = {reg2hw.timer_v_upper0.q, reg2hw.timer_v_lower0.q};
592- + assign hw2reg.timer_v_upper0.d = mtime_d[63:32];
593- + assign hw2reg.timer_v_lower0.d = mtime_d[31: 0];
594- + assign mtime = {reg2hw.timer_v_upper0.q, reg2hw.timer_v_lower0.q};
595- assign mtimecmp = '{'{{reg2hw.compare_upper0_0.q,reg2hw.compare_lower0_0.q}}};
596- - assign mtimecmp_update[0][0] = reg2hw.compare_upper0_0.qe | reg2hw.compare_lower0_0.qe;
597- + assign mtimecmp_update = reg2hw.compare_upper0_0.qe | reg2hw.compare_lower0_0.qe;
598-
599- assign intr_timer_expired_0_0_o = intr_out[0];
600- - assign intr_timer_en = reg2hw.intr_enable0[0].q;
601- - assign intr_timer_state_q = reg2hw.intr_state0[0].q;
602- - assign intr_timer_test_q = reg2hw.intr_test0[0].q;
603- - assign intr_timer_test_qe = reg2hw.intr_test0[0].qe;
604- - assign hw2reg.intr_state0[0].de = intr_timer_state_de | mtimecmp_update[0][0];
605- - assign hw2reg.intr_state0[0].d = intr_timer_state_d & ~mtimecmp_update[0][0];
606- + assign intr_timer_en = reg2hw.intr_enable0.q;
607- + assign intr_timer_state_q = reg2hw.intr_state0.q;
608- + assign intr_timer_test_q = reg2hw.intr_test0.q;
609- + assign intr_timer_test_qe = reg2hw.intr_test0.qe;
610- + assign hw2reg.intr_state0.de = intr_timer_state_de | mtimecmp_update;
611- + assign hw2reg.intr_state0.d = intr_timer_state_d & ~mtimecmp_update;
612-
613-
614- for (genvar h = 0 ; h < N_HARTS ; h++) begin : gen_harts
615- @@ -96,14 +96,14 @@ module rv_timer (
616- .rst_ni,
617-
618- .active (active[h]),
619- - .prescaler (prescaler[h]),
620- - .step (step[h]),
621- + .prescaler (prescaler),
622- + .step (step),
623-
624- .tick (tick[h]),
625-
626- - .mtime_d (mtime_d[h]),
627- - .mtime (mtime[h]),
628- - .mtimecmp (mtimecmp[h]),
629- + .mtime_d (mtime_d),
630- + .mtime (mtime),
631- + .mtimecmp (mtimecmp),
632-
633- .intr (intr_timer_set[h*N_TIMERS+:N_TIMERS])
634- );
635- diff --git a/hw/ip/rv_timer/rtl/rv_timer_reg_pkg.sv b/hw/ip/rv_timer/rtl/rv_timer_reg_pkg.sv
636- index 2addad698..37e6d79c4 100644
637- --- a/hw/ip/rv_timer/rtl/rv_timer_reg_pkg.sv
638- +++ b/hw/ip/rv_timer/rtl/rv_timer_reg_pkg.sv
639- @@ -78,15 +78,15 @@ package rv_timer_reg_pkg;
640- // Register to internal design logic //
641- ///////////////////////////////////////
642- typedef struct packed {
643- - rv_timer_reg2hw_ctrl_mreg_t [0:0] ctrl; // [154:154]
644- + rv_timer_reg2hw_ctrl_mreg_t ctrl; // [154:154]
645- rv_timer_reg2hw_cfg0_reg_t cfg0; // [153:134]
646- rv_timer_reg2hw_timer_v_lower0_reg_t timer_v_lower0; // [133:102]
647- rv_timer_reg2hw_timer_v_upper0_reg_t timer_v_upper0; // [101:70]
648- rv_timer_reg2hw_compare_lower0_0_reg_t compare_lower0_0; // [69:37]
649- rv_timer_reg2hw_compare_upper0_0_reg_t compare_upper0_0; // [36:4]
650- - rv_timer_reg2hw_intr_enable0_mreg_t [0:0] intr_enable0; // [3:3]
651- - rv_timer_reg2hw_intr_state0_mreg_t [0:0] intr_state0; // [2:2]
652- - rv_timer_reg2hw_intr_test0_mreg_t [0:0] intr_test0; // [1:0]
653- + rv_timer_reg2hw_intr_enable0_mreg_t intr_enable0; // [3:3]
654- + rv_timer_reg2hw_intr_state0_mreg_t intr_state0; // [2:2]
655- + rv_timer_reg2hw_intr_test0_mreg_t intr_test0; // [1:0]
656- } rv_timer_reg2hw_t;
657-
658- ///////////////////////////////////////
659- @@ -95,7 +95,7 @@ package rv_timer_reg_pkg;
660- typedef struct packed {
661- rv_timer_hw2reg_timer_v_lower0_reg_t timer_v_lower0; // [67:36]
662- rv_timer_hw2reg_timer_v_upper0_reg_t timer_v_upper0; // [35:4]
663- - rv_timer_hw2reg_intr_state0_mreg_t [0:0] intr_state0; // [3:2]
664- + rv_timer_hw2reg_intr_state0_mreg_t intr_state0; // [3:2]
665- } rv_timer_hw2reg_t;
666-
667- // Register Address
668525diff --git a/hw/ip/tlul/rtl/tlul_adapter_sram.sv b/hw/ip/tlul/rtl/tlul_adapter_sram.sv
669526index 6e2f33191..2820baadd 100644
670527--- a/hw/ip/tlul/rtl/tlul_adapter_sram.sv
0 commit comments