updated cov-verilog code: removed debug
diff --git a/verilog/rtl/azadi_soc_top.v b/verilog/rtl/azadi_soc_top.v
index 0b0cbd4..c34f2b2 100644
--- a/verilog/rtl/azadi_soc_top.v
+++ b/verilog/rtl/azadi_soc_top.v
@@ -1,5 +1,6 @@
-`default_nettype wire
+/*azadi_soc_top_conv-v0.6*/
 
+`default_nettype wire
 module azadi_soc_top (
 	`ifdef USE_POWER_PINS
     inout VPWR,	// User area 1 1.8V supply
@@ -12,12 +13,6 @@
 	gpio_i,
 	gpio_o,
 	gpio_oe,
-	jtag_tck_i,
-	jtag_tms_i,
-	jtag_trst_ni,
-	jtag_tdi_i,
-	jtag_tdo_o,
-	jtag_tdo_oe_o,
 	uart_tx,
 	uart_rx,
 	pwm_o,
@@ -37,12 +32,6 @@
 	input wire [31:0] gpio_i;
 	output wire [31:0] gpio_o;
 	output wire [31:0] gpio_oe;
-	input wire jtag_tck_i;
-	input wire jtag_tms_i;
-	input wire jtag_trst_ni;
-	input wire jtag_tdi_i;
-	output wire jtag_tdo_o;
-	output wire jtag_tdo_oe_o;
 	output wire uart_tx;
 	input wire uart_rx;
 	output wire pwm_o;
@@ -54,7 +43,6 @@
 	output wire sd_o;
 	output wire sd_oe;
 	input wire sd_i;
-	localparam [31:0] JTAG_ID = 32'b00000100111101010100100001001101;
 	wire prog_rst_n;
 	wire system_rst_ni;
 	wire [31:0] gpio_in;
@@ -65,8 +53,6 @@
 	wire [11:0] tlul_addr;
 	wire req_i;
 	wire [31:0] tlul_data;
-	wire dbg_req;
-	wire dbg_rst;
 	wire instr_csb;
 	wire [11:0] instr_addr;
 	wire [31:0] instr_wdata;
@@ -98,10 +84,6 @@
 	wire [51:0] dccm_to_xbar;
 	wire [85:0] xbarp_to_gpio;
 	wire [51:0] gpio_to_xbarp;
-	wire [85:0] dm_to_xbar;
-	wire [51:0] xbar_to_dm;
-	wire [85:0] dbgrom_to_xbar;
-	wire [51:0] xbar_to_dbgrom;
 	wire [85:0] plic_req;
 	wire [51:0] plic_resp;
 	wire [85:0] xbar_to_uart;
@@ -128,17 +110,6 @@
 	wire intr_timer;
 	wire intr_u_tx;
 	assign intr_vector = {intr_srx, intr_stx, intr_u_tx, intr_gpio, 1'b0};
-	wire [3:0] jtag_req;
-	wire [1:0] jtag_rsp;
-	assign jtag_req[3] = jtag_tck_i;
-	assign jtag_req[2] = jtag_tms_i;
-	assign jtag_req[1] = jtag_trst_ni;
-	assign jtag_req[0] = jtag_tdi_i;
-	assign jtag_tdo_o = jtag_rsp[1];
-	assign jtag_tdo_oe_o = jtag_rsp[0];
-	localparam [63:0] dm_HaltAddress = 64'h0000000000000800;
-	localparam [63:0] dm_ExceptionAddress = dm_HaltAddress + 8;
-	localparam [31:0] tl_main_pkg_ADDR_SPACE_DEBUG_ROM = 32'h10040000;
 	localparam integer brq_pkg_RV32BNone = 0;
 	localparam integer brq_pkg_RV32MSlow = 1;
 	localparam integer brq_pkg_RegFileFF = 0;
@@ -160,8 +131,8 @@
 		.DbgTriggerEn(1'b1),
 		.DbgHwBreakNum(1),
 		.Securebrq(1'b0),
-		.DmHaltAddr(tl_main_pkg_ADDR_SPACE_DEBUG_ROM + 32'h00000800),
-		.DmExceptionAddr(tl_main_pkg_ADDR_SPACE_DEBUG_ROM + dm_ExceptionAddress)
+		.DmHaltAddr(1'sb0),
+		.DmExceptionAddr(1'sb0)
 	) u_top(
 		.clk_i(clk_i),
 		.rst_ni(system_rst_ni),
@@ -176,30 +147,12 @@
 		.irq_external_i(intr_req),
 		.irq_fast_i({15 {1'sb0}}),
 		.irq_nm_i(1'b0),
-		.debug_req_i(dbg_req),
+		.debug_req_i(1'b0),
 		.fetch_enable_i(1'b1),
 		.alert_minor_o(),
 		.alert_major_o(),
 		.core_sleep_o()
 	);
-	rv_dm #(
-		.NrHarts(1),
-		.IdcodeValue(JTAG_ID)
-	) debug_module(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.testmode_i(1'b0),
-		.ndmreset_o(dbg_rst),
-		.dmactive_o(),
-		.debug_req_o(dbg_req),
-		.unavailable_i(1'b0),
-		.tl_d_i(dbgrom_to_xbar),
-		.tl_d_o(xbar_to_dbgrom),
-		.tl_h_o(dm_to_xbar),
-		.tl_h_i(xbar_to_dm),
-		.jtag_req_i(jtag_req),
-		.jtag_rsp_o(jtag_rsp)
-	);
 	tl_xbar_main main_swith(
 		.clk_i(clk_i),
 		.rst_ni(system_rst_ni),
@@ -207,12 +160,8 @@
 		.tl_brqif_o(xbar_to_ifu),
 		.tl_brqlsu_i(lsu_to_xbar),
 		.tl_brqlsu_o(xbar_to_lsu),
-		.tl_dm_sba_i(dm_to_xbar),
-		.tl_dm_sba_o(xbar_to_dm),
 		.tl_iccm_o(xbar_to_iccm),
 		.tl_iccm_i(iccm_to_xbar),
-		.tl_debug_rom_o(dbgrom_to_xbar),
-		.tl_debug_rom_i(xbar_to_dbgrom),
 		.tl_dccm_o(xbar_to_dccm),
 		.tl_dccm_i(dccm_to_xbar),
 		.tl_timer0_o(xbar_to_timer),
@@ -272,7 +221,6 @@
 	rstmgr reset_manager(
 		.clk_i(clk_i),
 		.rst_ni(rst_ni),
-		.ndmreset(dbg_rst),
 		.prog_rst_ni(prog_rst_ni),
 		.sys_rst_ni(system_rst_ni)
 	);
@@ -296,7 +244,7 @@
 	);
 	wire rx_dv_i;
 	wire [7:0] rx_byte_i;
-	iccm_controller u_dut(
+	iccm_controller iccm_controller(
 		.clk_i(clk_i),
 		.rst_ni(rst_ni),
 		.prog_i(prog),
@@ -331,8 +279,7 @@
 		.we_o(instr_we),
 		.rdata_i(instr_rdata)
 	);
-	wire [31:0] unused_data1;
-	wire [31:0] unused_data2;
+	wire [31:0] un_conn1;
 	sky130_sram_4kbyte_1rw1r_32x1024_8 u_iccm(
 		`ifdef USE_POWER_PINS
   	  .vccd1(VPWR),	
@@ -347,8 +294,8 @@
 		.dout0(instr_rdata),
 		.clk1(1'b0),
 		.csb1(1'b1),
-		.addr1(10'b0000000000),
-		.dout1(unused_data1)
+		.addr1({10 {1'sb0}}),
+		.dout1(un_conn1)
 	);
 	data_mem_top dccm_adapter(
 		.clk_i(clk_i),
@@ -362,13 +309,14 @@
 		.we_o(data_we),
 		.rdata_i(data_rdata)
 	);
+	wire [31:0] un_conn2;
 	sky130_sram_4kbyte_1rw1r_32x1024_8 u_dccm(
 		`ifdef USE_POWER_PINS
   	  .vccd1(VPWR),	
-			.vssd1(VGND),	
+  	  .vssd1(VGND),	
   	`endif
 		.clk0(clk_i),
-		.csb0(data_csb),
+		.csb0(instr_csb),
 		.web0(data_we),
 		.wmask0(data_wmask),
 		.addr0(data_addr[9:0]),
@@ -376,8 +324,8 @@
 		.dout0(data_rdata),
 		.clk1(1'b0),
 		.csb1(1'b1),
-		.addr1(10'b0000000000),
-		.dout1(unused_data2)
+		.addr1({10 {1'sb0}}),
+		.dout1(un_conn2)
 	);
 endmodule
 module brq_core (
@@ -413,7 +361,7 @@
 );
 	parameter [0:0] PMPEnable = 1'b0;
 	parameter [31:0] PMPGranularity = 0;
-	parameter [31:0] PMPNumRegions = 0;
+	parameter [31:0] PMPNumRegions = 4;
 	parameter [31:0] MHPMCounterNum = 0;
 	parameter [31:0] MHPMCounterWidth = 40;
 	parameter [0:0] RV32E = 1'b0;
@@ -509,10 +457,10 @@
 	wire [2:0] fp_frm_csr;
 	wire [2:0] fp_frm_fpnew;
 	wire [3:0] fp_alu_operator;
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] fp_src_fmt;
-	wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] fp_dst_fmt;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	wire [1:0] fp_src_fmt;
+	wire [1:0] fp_dst_fmt;
 	localparam [31:0] PMP_NUM_CHAN = 2;
 	localparam [0:0] DataIndTiming = Securebrq;
 	localparam [0:0] DummyInstructions = Securebrq;
@@ -686,7 +634,7 @@
 	assign core_sleep_o = ~clock_en;
 	prim_clock_gating core_clock_gate_i(
 		.clk_i(clk_i),
-		.en_i(clock_en),
+		.en_i(1'b1),
 		.test_en_i(test_en_i),
 		.clk_o(clk)
 	);
@@ -747,8 +695,7 @@
 		.DataIndTiming(DataIndTiming),
 		.SpecBranch(SpecBranch),
 		.WritebackStage(WritebackStage),
-		.BranchPredictor(BranchPredictor),
-		.FloatingPoint(FloatingPoint)
+		.BranchPredictor(BranchPredictor)
 	) id_stage_i(
 		.clk_i(clk),
 		.rst_ni(rst_ni),
@@ -1211,27 +1158,27 @@
 	localparam [1:0] fpnew_pkg_BEFORE = 0;
 	localparam [1:0] fpnew_pkg_MERGED = 2;
 	localparam [1:0] fpnew_pkg_PARALLEL = 1;
-	function automatic [31:0] sv2v_cast_CC116;
-		input reg [31:0] inp;
+	function automatic [127:0] sv2v_cast_CC116;
+		input reg [127:0] inp;
 		sv2v_cast_CC116 = inp;
 	endfunction
-	function automatic [127:0] sv2v_cast_128;
-		input reg [127:0] inp;
-		sv2v_cast_128 = inp;
+	function automatic [511:0] sv2v_cast_512;
+		input reg [511:0] inp;
+		sv2v_cast_512 = inp;
 	endfunction
-	function automatic [7:0] sv2v_cast_8;
-		input reg [7:0] inp;
-		sv2v_cast_8 = inp;
+	function automatic [31:0] sv2v_cast_32;
+		input reg [31:0] inp;
+		sv2v_cast_32 = inp;
 	endfunction
-	localparam [137:0] fpnew_pkg_DEFAULT_NOREGS = {sv2v_cast_128({fpnew_pkg_NUM_OPGROUPS {sv2v_cast_CC116(0)}}), sv2v_cast_8({{fpnew_pkg_PARALLEL}, {fpnew_pkg_MERGED}, {fpnew_pkg_PARALLEL}, {fpnew_pkg_MERGED}}), fpnew_pkg_BEFORE};
-	localparam [31:0] fpnew_pkg_NUM_INT_FORMATS = 1;
-	localparam [31:0] fpnew_pkg_INT_FORMAT_BITS = 0;
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
+	localparam [545:0] fpnew_pkg_DEFAULT_NOREGS = {sv2v_cast_512({fpnew_pkg_NUM_OPGROUPS {sv2v_cast_CC116(0)}}), sv2v_cast_32({{fpnew_pkg_NUM_FP_FORMATS {fpnew_pkg_PARALLEL}}, {fpnew_pkg_NUM_FP_FORMATS {fpnew_pkg_MERGED}}, {fpnew_pkg_NUM_FP_FORMATS {fpnew_pkg_PARALLEL}}, {fpnew_pkg_NUM_FP_FORMATS {fpnew_pkg_MERGED}}}), fpnew_pkg_BEFORE};
+	localparam [31:0] fpnew_pkg_NUM_INT_FORMATS = 4;
+	localparam [31:0] fpnew_pkg_INT_FORMAT_BITS = 2;
+	function automatic [3:0] sv2v_cast_4;
+		input reg [3:0] inp;
+		sv2v_cast_4 = inp;
 	endfunction
-	localparam [35:0] fpnew_pkg_RV32F = {34'b0000000000000000000000000010000001, sv2v_cast_1(5'b10000), sv2v_cast_1(4'b0010)};
-	localparam [fpnew_pkg_INT_FORMAT_BITS - 1:0] fpnew_pkg_INT32 = 0;
+	localparam [41:0] fpnew_pkg_RV32F = {34'b0000000000000000000000000010000001, sv2v_cast_4(5'b10000), 4'b0010};
+	localparam [1:0] fpnew_pkg_INT32 = 2;
 	fpnew_top_F1920 #(
 		.Features(fpnew_pkg_RV32F),
 		.Implementation(fpnew_pkg_DEFAULT_NOREGS)
@@ -1246,7 +1193,7 @@
 		.dst_fmt_i(fp_dst_fmt),
 		.int_fmt_i(fpnew_pkg_INT32),
 		.vectorial_op_i(1'b0),
-		.tag_i(),
+		.tag_i(1'b1),
 		.in_valid_i(in_valid_c2fpu),
 		.in_ready_o(out_ready_fpu2c),
 		.flush_i(fp_flush),
@@ -1328,7 +1275,7 @@
 );
 	parameter [0:0] PMPEnable = 1'b0;
 	parameter [31:0] PMPGranularity = 0;
-	parameter [31:0] PMPNumRegions = 0;
+	parameter [31:0] PMPNumRegions = 4;
 	parameter [31:0] MHPMCounterNum = 0;
 	parameter [31:0] MHPMCounterWidth = 40;
 	parameter [0:0] RV32E = 1'b0;
@@ -1438,7 +1385,7 @@
 		.alert_major_o(alert_major_o),
 		.core_sleep_o(core_sleep_o)
 	);
-	tlul_host_adapter #(.MAX_REQS(2)) intr_interface(
+	tlul_host_adapter #(.MAX_REQS(2)) instr_interface(
 		.clk_i(clk_i),
 		.rst_ni(rst_ni),
 		.req_i(instr_req),
@@ -1469,6 +1416,204 @@
 		.tl_h_c_d(tl_d_i)
 	);
 endmodule
+module rstmgr (
+	clk_i,
+	rst_ni,
+	prog_rst_ni,
+	ndmreset,
+	sys_rst_ni
+);
+	input clk_i;
+	input rst_ni;
+	input prog_rst_ni;
+	input wire ndmreset;
+	output reg sys_rst_ni;
+	reg [1:0] rst_fsm_cs;
+	reg [1:0] rst_fsm_ns;
+	reg rst_run_d;
+	reg rst_run_q;
+	localparam [1:0] IDLE = 1;
+	localparam [1:0] PROG = 2;
+	localparam [1:0] RESET = 0;
+	localparam [1:0] RUN = 3;
+	always @(*) begin : comb_part
+		rst_fsm_ns = rst_fsm_cs;
+		sys_rst_ni = 1'b0;
+		case (rst_fsm_cs)
+			RESET: begin
+				sys_rst_ni = 1'b0;
+				rst_fsm_ns = IDLE;
+			end
+			IDLE: begin
+				sys_rst_ni = 1'b0;
+				rst_run_d = 1'b0;
+				if (rst_run_q)
+					rst_fsm_ns = RUN;
+				else if (!prog_rst_ni)
+					rst_fsm_ns = PROG;
+				else
+					rst_fsm_ns = IDLE;
+			end
+			PROG: begin
+				sys_rst_ni = 1'b0;
+				rst_run_d = 1'b0;
+				if (!prog_rst_ni)
+					rst_fsm_ns = PROG;
+				else
+					rst_fsm_ns = RUN;
+			end
+			RUN: begin
+				sys_rst_ni = 1'b1;
+				rst_run_d = 1'b0;
+				if (!rst_ni) begin
+					rst_run_d = 1'b1;
+					rst_fsm_ns = RESET;
+				end
+				else if (!prog_rst_ni)
+					rst_fsm_ns = PROG;
+				else
+					rst_fsm_ns = RUN;
+			end
+			default: begin
+				rst_fsm_ns = rst_fsm_cs;
+				sys_rst_ni = 1'b0;
+				rst_run_d = 1'b0;
+			end
+		endcase
+	end
+	always @(posedge clk_i or negedge rst_ni) begin : seq_part
+		if (!rst_ni) begin
+			rst_fsm_cs <= RESET;
+			rst_run_q <= 1'b0;
+		end
+		else begin
+			rst_fsm_cs <= rst_fsm_ns;
+			rst_run_q <= rst_run_d;
+		end
+	end
+endmodule
+module tl_xbar_main (
+	clk_i,
+	rst_ni,
+	tl_brqif_i,
+	tl_brqif_o,
+	tl_brqlsu_i,
+	tl_brqlsu_o,
+	tl_iccm_o,
+	tl_iccm_i,
+	tl_dccm_o,
+	tl_dccm_i,
+	tl_timer0_o,
+	tl_timer0_i,
+	tl_uart_o,
+	tl_uart_i,
+	tl_spi_o,
+	tl_spi_i,
+	tl_pwm_o,
+	tl_pwm_i,
+	tl_gpio_o,
+	tl_gpio_i,
+	tl_plic_o,
+	tl_plic_i
+);
+	input wire clk_i;
+	input wire rst_ni;
+	localparam signed [31:0] tlul_pkg_TL_AIW = 8;
+	localparam signed [31:0] tlul_pkg_TL_AW = 32;
+	localparam signed [31:0] tlul_pkg_TL_DW = 32;
+	localparam signed [31:0] tlul_pkg_TL_DBW = 4;
+	localparam signed [31:0] tlul_pkg_TL_SZW = 2;
+	input wire [85:0] tl_brqif_i;
+	localparam signed [31:0] tlul_pkg_TL_DIW = 1;
+	output wire [51:0] tl_brqif_o;
+	input wire [85:0] tl_brqlsu_i;
+	output wire [51:0] tl_brqlsu_o;
+	output wire [85:0] tl_iccm_o;
+	input wire [51:0] tl_iccm_i;
+	output wire [85:0] tl_dccm_o;
+	input wire [51:0] tl_dccm_i;
+	output wire [85:0] tl_timer0_o;
+	input wire [51:0] tl_timer0_i;
+	output wire [85:0] tl_uart_o;
+	input wire [51:0] tl_uart_i;
+	output wire [85:0] tl_spi_o;
+	input wire [51:0] tl_spi_i;
+	output wire [85:0] tl_pwm_o;
+	input wire [51:0] tl_pwm_i;
+	output wire [85:0] tl_gpio_o;
+	input wire [51:0] tl_gpio_i;
+	output wire [85:0] tl_plic_o;
+	input wire [51:0] tl_plic_i;
+	wire [85:0] brqlsu_to_s1n;
+	wire [51:0] s1n_to_brqlsu;
+	reg [3:0] device_sel;
+	wire [601:0] h_dv_o;
+	wire [363:0] h_dv_i;
+	assign brqlsu_to_s1n = tl_brqlsu_i;
+	assign tl_brqlsu_o = s1n_to_brqlsu;
+	assign tl_iccm_o = tl_brqif_i;
+	assign tl_brqif_o = tl_iccm_i;
+	assign tl_dccm_o = h_dv_o[516+:86];
+	assign h_dv_i[312+:52] = tl_dccm_i;
+	assign tl_timer0_o = h_dv_o[430+:86];
+	assign h_dv_i[260+:52] = tl_timer0_i;
+	assign tl_uart_o = h_dv_o[344+:86];
+	assign h_dv_i[208+:52] = tl_uart_i;
+	assign tl_spi_o = h_dv_o[258+:86];
+	assign h_dv_i[156+:52] = tl_spi_i;
+	assign tl_pwm_o = h_dv_o[172+:86];
+	assign h_dv_i[104+:52] = tl_pwm_i;
+	assign tl_gpio_o = h_dv_o[86+:86];
+	assign h_dv_i[52+:52] = tl_gpio_i;
+	assign tl_plic_o = h_dv_o[0+:86];
+	assign h_dv_i[0+:52] = tl_plic_i;
+	localparam [31:0] tl_main_pkg_ADDR_MASK_DCCM = 32'h0000ffff;
+	localparam [31:0] tl_main_pkg_ADDR_MASK_GPIO = 32'h0000ffff;
+	localparam [31:0] tl_main_pkg_ADDR_MASK_PLIC = 32'h0000ffff;
+	localparam [31:0] tl_main_pkg_ADDR_MASK_PWM = 32'h0000ffff;
+	localparam [31:0] tl_main_pkg_ADDR_MASK_SPI0 = 32'h0000ffff;
+	localparam [31:0] tl_main_pkg_ADDR_MASK_TIMER0 = 32'h0000ffff;
+	localparam [31:0] tl_main_pkg_ADDR_MASK_UART0 = 32'h0000ffff;
+	localparam [31:0] tl_main_pkg_ADDR_SPACE_DCCM = 32'h10000000;
+	localparam [31:0] tl_main_pkg_ADDR_SPACE_GPIO = 32'h400c0000;
+	localparam [31:0] tl_main_pkg_ADDR_SPACE_PLIC = 32'h40050000;
+	localparam [31:0] tl_main_pkg_ADDR_SPACE_PWM = 32'h400b0000;
+	localparam [31:0] tl_main_pkg_ADDR_SPACE_SPI0 = 32'h40080000;
+	localparam [31:0] tl_main_pkg_ADDR_SPACE_TIMER0 = 32'h40000000;
+	localparam [31:0] tl_main_pkg_ADDR_SPACE_UART0 = 32'h40060000;
+	always @(*) begin
+		device_sel = 4'd9;
+		if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_DCCM) == tl_main_pkg_ADDR_SPACE_DCCM)
+			device_sel = 4'd0;
+		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_TIMER0) == tl_main_pkg_ADDR_SPACE_TIMER0)
+			device_sel = 4'd1;
+		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_UART0) == tl_main_pkg_ADDR_SPACE_UART0)
+			device_sel = 4'd2;
+		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_SPI0) == tl_main_pkg_ADDR_SPACE_SPI0)
+			device_sel = 4'd3;
+		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_PWM) == tl_main_pkg_ADDR_SPACE_PWM)
+			device_sel = 4'd4;
+		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_GPIO) == tl_main_pkg_ADDR_SPACE_GPIO)
+			device_sel = 4'd5;
+		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_PLIC) == tl_main_pkg_ADDR_SPACE_PLIC)
+			device_sel = 4'd6;
+	end
+	tlul_socket_1n #(
+		.HReqDepth(4'h0),
+		.HRspDepth(4'h0),
+		.DReqDepth(36'h000000000),
+		.DRspDepth(36'h000000000),
+		.N(7)
+	) host_lsu(
+		.clk_i(clk_i),
+		.rst_ni(rst_ni),
+		.tl_h_i(brqlsu_to_s1n),
+		.tl_h_o(s1n_to_brqlsu),
+		.tl_d_o(h_dv_o),
+		.tl_d_i(h_dv_i),
+		.dev_select_i(device_sel)
+	);
+endmodule
 module brq_counter (
 	clk_i,
 	rst_ni,
@@ -1491,7 +1636,6 @@
 	reg [63:0] counter_load;
 	reg we;
 	reg [CounterWidth - 1:0] counter_d;
-	reg [CounterWidth - 1:0] counter_q;
 	always @(*) begin
 		we = counter_we_i | counterh_we_i;
 		counter_load[63:32] = counter[63:32];
@@ -1508,9 +1652,10 @@
 		else
 			counter_d = counter[CounterWidth - 1:0];
 	end
+	reg [CounterWidth - 1:0] counter_q;
 	always @(posedge clk_i or negedge rst_ni)
 		if (!rst_ni)
-			counter_q <= 0;
+			counter_q <= {CounterWidth {1'sb0}};
 		else
 			counter_q <= counter_d;
 	generate
@@ -2354,7 +2499,7 @@
 	brq_csr #(
 		.Width(32),
 		.ShadowCopy(ShadowCSR),
-		.ResetValue(32'd1)
+		.ResetValue(32'd0)
 	) u_mtvec_csr(
 		.clk_i(clk_i),
 		.rst_ni(rst_ni),
@@ -2579,7 +2724,7 @@
 			mcountinhibit_d = mcountinhibit_q;
 	end
 	always @(*) begin : gen_mhpmcounter_incr
-		begin : sv2v_autoblock_81
+		begin : sv2v_autoblock_83
 			reg [31:0] i;
 			for (i = 0; i < 32; i = i + 1)
 				begin : gen_mhpmcounter_incr_inactive
@@ -2601,7 +2746,7 @@
 		mhpmcounter_incr[12] = div_wait_i;
 	end
 	always @(*) begin : gen_mhpmevent
-		begin : sv2v_autoblock_82
+		begin : sv2v_autoblock_84
 			reg signed [31:0] i;
 			for (i = 0; i < 32; i = i + 1)
 				begin : gen_mhpmevent_active
@@ -2610,7 +2755,7 @@
 				end
 		end
 		mhpmevent[1] = {32 {1'sb0}};
-		begin : sv2v_autoblock_83
+		begin : sv2v_autoblock_85
 			reg [31:0] i;
 			for (i = 3 + MHPMCounterNum; i < 32; i = i + 1)
 				begin : gen_mhpmevent_inactive
@@ -3032,7 +3177,7 @@
 		shift_result_ext = $unsigned($signed({shift_ones | (shift_arith & shift_operand[31]), shift_operand}) >>> shift_amt[4:0]);
 		shift_result = shift_result_ext[31:0];
 		unused_shift_result_ext = shift_result_ext[32];
-		begin : sv2v_autoblock_84
+		begin : sv2v_autoblock_86
 			reg [31:0] i;
 			for (i = 0; i < 32; i = i + 1)
 				shift_result_rev[i] = shift_result[31 - i];
@@ -3136,40 +3281,40 @@
 				endcase
 			always @(*) begin
 				bitcnt_partial = {32 {6'b000000}};
-				begin : sv2v_autoblock_85
+				begin : sv2v_autoblock_87
 					reg [31:0] i;
 					for (i = 1; i < 32; i = i + 2)
 						bitcnt_partial[(31 - i) * 6+:6] = {5'h00, bitcnt_bits[i]} + {5'h00, bitcnt_bits[i - 1]};
 				end
-				begin : sv2v_autoblock_86
+				begin : sv2v_autoblock_88
 					reg [31:0] i;
 					for (i = 3; i < 32; i = i + 4)
 						bitcnt_partial[(31 - i) * 6+:6] = bitcnt_partial[(33 - i) * 6+:6] + bitcnt_partial[(31 - i) * 6+:6];
 				end
-				begin : sv2v_autoblock_87
+				begin : sv2v_autoblock_89
 					reg [31:0] i;
 					for (i = 7; i < 32; i = i + 8)
 						bitcnt_partial[(31 - i) * 6+:6] = bitcnt_partial[(35 - i) * 6+:6] + bitcnt_partial[(31 - i) * 6+:6];
 				end
-				begin : sv2v_autoblock_88
+				begin : sv2v_autoblock_90
 					reg [31:0] i;
 					for (i = 15; i < 32; i = i + 16)
 						bitcnt_partial[(31 - i) * 6+:6] = bitcnt_partial[(39 - i) * 6+:6] + bitcnt_partial[(31 - i) * 6+:6];
 				end
 				bitcnt_partial[0+:6] = bitcnt_partial[96+:6] + bitcnt_partial[0+:6];
 				bitcnt_partial[48+:6] = bitcnt_partial[96+:6] + bitcnt_partial[48+:6];
-				begin : sv2v_autoblock_89
+				begin : sv2v_autoblock_91
 					reg [31:0] i;
 					for (i = 11; i < 32; i = i + 8)
 						bitcnt_partial[(31 - i) * 6+:6] = bitcnt_partial[(35 - i) * 6+:6] + bitcnt_partial[(31 - i) * 6+:6];
 				end
-				begin : sv2v_autoblock_90
+				begin : sv2v_autoblock_92
 					reg [31:0] i;
 					for (i = 5; i < 32; i = i + 4)
 						bitcnt_partial[(31 - i) * 6+:6] = bitcnt_partial[(33 - i) * 6+:6] + bitcnt_partial[(31 - i) * 6+:6];
 				end
 				bitcnt_partial[186+:6] = {5'h00, bitcnt_bits[0]};
-				begin : sv2v_autoblock_91
+				begin : sv2v_autoblock_93
 					reg [31:0] i;
 					for (i = 2; i < 32; i = i + 2)
 						bitcnt_partial[(31 - i) * 6+:6] = bitcnt_partial[(32 - i) * 6+:6] + {5'h00, bitcnt_bits[i]};
@@ -3270,35 +3415,35 @@
 				assign bitcnt_partial_msb_d[31] = 1'b0;
 				always @(*) begin
 					bitcnt_partial_q = {32 {6'b000000}};
-					begin : sv2v_autoblock_92
+					begin : sv2v_autoblock_94
 						reg [31:0] i;
 						for (i = 0; i < 32; i = i + 1)
 							begin : gen_bitcnt_reg_out_lsb
 								bitcnt_partial_q[(31 - i) * 6] = imd_val_q_i[32 + i];
 							end
 					end
-					begin : sv2v_autoblock_93
+					begin : sv2v_autoblock_95
 						reg [31:0] i;
 						for (i = 0; i < 16; i = i + 1)
 							begin : gen_bitcnt_reg_out_b1
 								bitcnt_partial_q[((31 - ((2 * i) + 1)) * 6) + 1] = imd_val_q_i[i];
 							end
 					end
-					begin : sv2v_autoblock_94
+					begin : sv2v_autoblock_96
 						reg [31:0] i;
 						for (i = 0; i < 8; i = i + 1)
 							begin : gen_bitcnt_reg_out_b2
 								bitcnt_partial_q[((31 - ((4 * i) + 3)) * 6) + 2] = imd_val_q_i[16 + i];
 							end
 					end
-					begin : sv2v_autoblock_95
+					begin : sv2v_autoblock_97
 						reg [31:0] i;
 						for (i = 0; i < 4; i = i + 1)
 							begin : gen_bitcnt_reg_out_b3
 								bitcnt_partial_q[((31 - ((8 * i) + 7)) * 6) + 3] = imd_val_q_i[24 + i];
 							end
 					end
-					begin : sv2v_autoblock_96
+					begin : sv2v_autoblock_98
 						reg [31:0] i;
 						for (i = 0; i < 2; i = i + 1)
 							begin : gen_bitcnt_reg_out_b4
@@ -4465,7 +4610,7 @@
 		sv2v_cast_5 = inp;
 	endfunction
 	always @(*) begin : we_a_decoder
-		begin : sv2v_autoblock_97
+		begin : sv2v_autoblock_99
 			reg [31:0] i;
 			for (i = 0; i < NUM_WORDS; i = i + 1)
 				we_a_dec[i] = (waddr_a_i == sv2v_cast_5(i) ? we_a_i : 1'b0);
@@ -4547,7 +4692,8 @@
 	flush_id_o,
 	ready_wb_i,
 	perf_jump_o,
-	perf_tbranch_o
+	perf_tbranch_o,
+	fpu_busy_i
 );
 	parameter [0:0] WritebackStage = 0;
 	parameter [0:0] BranchPredictor = 0;
@@ -4612,6 +4758,7 @@
 	input wire ready_wb_i;
 	output reg perf_jump_o;
 	output reg perf_tbranch_o;
+	input wire fpu_busy_i;
 	wire instr_bp_taken_i;
 	assign instr_bp_taken_i = 1'b0;
 	reg [3:0] ctrl_fsm_cs;
@@ -5032,7 +5179,7 @@
 	assign flush_id_o = flush_id;
 	assign debug_mode_o = debug_mode_q;
 	assign nmi_mode_o = nmi_mode_q;
-	assign stall = stall_id_i | stall_wb_i;
+	assign stall = (stall_id_i | stall_wb_i) | fpu_busy_i;
 	assign id_in_ready_o = (~stall & ~halt_if) & ~retain_id;
 	assign instr_valid_clear_o = ~(stall | retain_id) | flush_id;
 	always @(posedge clk_i or negedge rst_ni) begin : update_regs
@@ -5195,10 +5342,10 @@
 	output reg [3:0] fp_alu_operator_o;
 	output reg fp_alu_op_mod_o;
 	output wire fp_rm_dynamic_o;
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	output reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fp_src_fmt_o;
-	output reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fp_dst_fmt_o;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	output reg [1:0] fp_src_fmt_o;
+	output reg [1:0] fp_dst_fmt_o;
 	output reg is_fp_instr_o;
 	output reg use_fp_rs1_o;
 	output reg use_fp_rs2_o;
@@ -5223,7 +5370,7 @@
 	reg [1:0] csr_op;
 	reg [6:0] opcode;
 	reg [6:0] opcode_alu;
-	assign instr = instr_rdata_i;
+	assign instr = instr_rdata_alu_i;
 	assign instr_alu = instr_rdata_alu_i;
 	assign imm_i_type_o = {{20 {instr[31]}}, instr[31:20]};
 	assign imm_s_type_o = {{20 {instr[31]}}, instr[31:25], instr[11:7]};
@@ -5250,10 +5397,6 @@
 	assign fp_rounding_mode_o = instr[14:12];
 	assign fp_invalid_rm = (instr[14:12] == 3'b101 ? 1'b1 : (instr[14:12] == 3'b110 ? 1'b1 : 1'b0));
 	assign fp_rm_dynamic_o = (instr[14:12] == 3'b111 ? 1'b1 : 1'b0);
-	localparam [fpnew_pkg_FP_FORMAT_BITS - 1:0] fpnew_pkg_FP32 = 'd0;
-	wire [0:1] sv2v_tmp_24DB7;
-	assign sv2v_tmp_24DB7 = fpnew_pkg_FP32;
-	always @(*) fp_dst_fmt_o = sv2v_tmp_24DB7;
 	localparam [1:0] brq_pkg_OP_A_REG_A = 0;
 	localparam [0:0] brq_pkg_OP_B_REG_B = 0;
 	generate
@@ -5301,6 +5444,7 @@
 	localparam integer brq_pkg_RV32BFull = 2;
 	localparam integer brq_pkg_RV32FNone = 0;
 	localparam integer brq_pkg_RV32MNone = 0;
+	localparam [1:0] fpnew_pkg_FP32 = 'd0;
 	always @(*) begin
 		jump_in_dec_o = 1'b0;
 		jump_set_o = 1'b0;
@@ -5647,10 +5791,8 @@
 						use_fp_rs1_o = 1'b1;
 						use_fp_rs2_o = 1'b1;
 						use_fp_rd_o = 1'b1;
-						if (~(instr[14] | &instr[13:12])) begin
+						if (~(instr[14] | &instr[13:12]))
 							illegal_insn = ((RVF == brq_pkg_RV64FDouble) & fp_invalid_rm ? 1'b0 : 1'b1);
-							fp_src_fmt_o = FP64;
-						end
 					end
 					7'b0010000: begin
 						fp_rf_we_o = 1'b1;
@@ -6621,7 +6763,6 @@
 	parameter [0:0] SpecBranch = 0;
 	parameter [0:0] WritebackStage = 0;
 	parameter [0:0] BranchPredictor = 0;
-	parameter FloatingPoint = 1;
 	input wire clk_i;
 	input wire rst_ni;
 	output wire ctrl_busy_o;
@@ -6743,10 +6884,10 @@
 	localparam [31:0] fpnew_pkg_OP_BITS = 4;
 	output wire [3:0] fp_alu_operator_o;
 	output wire fp_alu_op_mod_o;
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	output wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] fp_src_fmt_o;
-	output wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] fp_dst_fmt_o;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	output wire [1:0] fp_src_fmt_o;
+	output wire [1:0] fp_dst_fmt_o;
 	output wire fp_rm_dynamic_o;
 	output wire fp_flush_o;
 	output wire is_fp_instr_o;
@@ -6787,7 +6928,6 @@
 	reg stall_jump;
 	wire stall_id;
 	wire stall_wb;
-	reg stall_fpu;
 	wire flush_id;
 	wire multicycle_done;
 	wire [31:0] imm_i_type;
@@ -7107,7 +7247,8 @@
 		.flush_id_o(flush_id),
 		.ready_wb_i(ready_wb_i),
 		.perf_jump_o(perf_jump_o),
-		.perf_tbranch_o(perf_tbranch_o)
+		.perf_tbranch_o(perf_tbranch_o),
+		.fpu_busy_i(fpu_busy_i)
 	);
 	assign fp_flush_o = flush_id;
 	assign multdiv_en_dec = mult_en_dec | div_en_dec;
@@ -7176,7 +7317,6 @@
 		stall_jump = 1'b0;
 		stall_branch = 1'b0;
 		stall_alu = 1'b0;
-		stall_fpu = 1'b0;
 		branch_set_d = 1'b0;
 		branch_spec = 1'b0;
 		branch_not_set = 1'b0;
@@ -7191,7 +7331,6 @@
 								id_fsm_d = MULTI_CYCLE;
 							else if (~lsu_req_done_i)
 								id_fsm_d = MULTI_CYCLE;
-						FloatingPoint: stall_fpu = fpu_busy_i;
 						multdiv_en_dec:
 							if (~ex_valid_i) begin
 								id_fsm_d = MULTI_CYCLE;
@@ -7228,14 +7367,12 @@
 						stall_multdiv = multdiv_en_dec;
 						stall_branch = branch_in_dec;
 						stall_jump = jump_in_dec;
-						stall_fpu = fpu_busy_i;
 					end
 				end
-				default: id_fsm_d = FIRST_CYCLE;
 			endcase
 	end
 	assign multdiv_ready_id_o = ready_wb_i;
-	assign stall_id = (((((stall_ld_hz | stall_mem) | stall_multdiv) | stall_jump) | stall_branch) | stall_alu) | stall_fpu;
+	assign stall_id = ((((stall_ld_hz | stall_mem) | stall_multdiv) | stall_jump) | stall_branch) | stall_alu;
 	assign instr_done = (~stall_id & ~flush_id) & instr_executing;
 	assign instr_first_cycle = instr_valid_i & (id_fsm_q == FIRST_CYCLE);
 	assign instr_first_cycle_id_o = instr_first_cycle;
@@ -7520,7 +7657,9 @@
 	assign instr_addr_next = instr_addr_q[31:1] + {29'd0, ~addr_incr_two, addr_incr_two};
 	assign instr_addr_d = (clear_i ? in_addr_i[31:1] : instr_addr_next);
 	always @(posedge clk_i)
-		if (instr_addr_en)
+		if (~rst_ni)
+			instr_addr_q <= {31 {1'sb0}};
+		else if (instr_addr_en)
 			instr_addr_q <= instr_addr_d;
 	assign out_addr_next_o = {instr_addr_next, 1'b0};
 	assign out_addr_o = {instr_addr_q, 1'b0};
@@ -7558,7 +7697,7 @@
 			valid_q <= valid_d;
 	generate
 		for (i = 0; i < DEPTH; i = i + 1) begin : g_fifo_regs
-			always @(posedge clk_i or negedge rst_ni)
+			always @(posedge clk_i)
 				if (~rst_ni) begin
 					rdata_q[i * 32+:32] <= {32 {1'sb0}};
 					err_q[i] <= 1'b0;
@@ -7693,7 +7832,9 @@
 	assign stored_addr_en = (valid_new_req & ~valid_req_q) & ~gnt_or_pmp_err;
 	assign stored_addr_d = instr_addr;
 	always @(posedge clk_i)
-		if (stored_addr_en)
+		if (~rst_ni)
+			stored_addr_q <= {32 {1'sb0}};
+		else if (stored_addr_en)
 			stored_addr_q <= stored_addr_d;
 	generate
 		if (BranchPredictor) begin : g_branch_predictor
@@ -7701,7 +7842,9 @@
 			wire branch_mispredict_addr_en;
 			assign branch_mispredict_addr_en = branch_i & predicted_branch_i;
 			always @(posedge clk_i)
-				if (branch_mispredict_addr_en)
+				if (~rst_ni)
+					branch_mispredict_addr_q <= {32 {1'sb0}};
+				else if (branch_mispredict_addr_en)
 					branch_mispredict_addr_q <= addr_next;
 			assign branch_mispredict_addr = branch_mispredict_addr_q;
 		end
@@ -7716,7 +7859,9 @@
 	assign fetch_addr_en = branch_or_mispredict | (valid_new_req & ~valid_req_q);
 	assign fetch_addr_d = (branch_i ? addr_i : (branch_mispredict_i ? {branch_mispredict_addr[31:2], 2'b00} : {fetch_addr_q[31:2], 2'b00})) + {{29 {1'b0}}, valid_new_req & ~valid_req_q, 2'b00};
 	always @(posedge clk_i)
-		if (fetch_addr_en)
+		if (~rst_ni)
+			fetch_addr_q <= {32 {1'sb0}};
+		else if (fetch_addr_en)
 			fetch_addr_q <= fetch_addr_d;
 	assign instr_addr = (valid_req_q ? stored_addr_q : (branch_spec_i ? addr_i : (branch_mispredict_i ? branch_mispredict_addr : fetch_addr_q)));
 	assign instr_addr_w_aligned = {instr_addr[31:2], 2'b00};
@@ -7743,9 +7888,9 @@
 		if (!rst_ni) begin
 			valid_req_q <= 1'b0;
 			discard_req_q <= 1'b0;
-			rdata_outstanding_q <= 'b0;
-			branch_discard_q <= 'b0;
-			rdata_pmp_err_q <= 'b0;
+			rdata_outstanding_q <= {2 {1'sb0}};
+			branch_discard_q <= {2 {1'sb0}};
+			rdata_pmp_err_q <= {2 {1'sb0}};
 		end
 		else begin
 			valid_req_q <= valid_req_d;
@@ -7951,7 +8096,17 @@
 	assign instr_new_id_o = instr_new_id_q;
 	assign if_id_pipe_reg_we = instr_new_id_d;
 	always @(posedge clk_i)
-		if (if_id_pipe_reg_we) begin
+		if (~rst_ni) begin
+			instr_rdata_id_o <= {32 {1'sb0}};
+			instr_rdata_alu_id_o <= {32 {1'sb0}};
+			instr_fetch_err_o <= 1'b0;
+			instr_fetch_err_plus2_o <= 1'b0;
+			instr_rdata_c_id_o <= {16 {1'sb0}};
+			instr_is_compressed_id_o <= 1'b0;
+			illegal_c_insn_id_o <= 1'b0;
+			pc_id_o <= {32 {1'sb0}};
+		end
+		else if (if_id_pipe_reg_we) begin
 			instr_rdata_id_o <= instr_out;
 			instr_rdata_alu_id_o <= instr_out;
 			instr_fetch_err_o <= instr_err_out;
@@ -8376,7 +8531,7 @@
 			end
 			always @(*) begin
 				access_fault[c] = priv_mode_i[(0 >= (PMPNumChan - 1) ? c : (PMPNumChan - 1) - c) * 2+:2] != brq_pkg_PRIV_LVL_M;
-				begin : sv2v_autoblock_98
+				begin : sv2v_autoblock_100
 					reg signed [31:0] r;
 					for (r = PMPNumRegions - 1; r >= 0; r = r - 1)
 						if (region_match_all[(c * PMPNumRegions) + r])
@@ -8422,7 +8577,7 @@
 		sv2v_cast_5 = inp;
 	endfunction
 	always @(*) begin : we_a_decoder
-		begin : sv2v_autoblock_99
+		begin : sv2v_autoblock_101
 			reg [31:0] i;
 			for (i = 1; i < NUM_WORDS; i = i + 1)
 				we_a_dec[i] = (waddr_a_i == sv2v_cast_5(i) ? we_a_i : 1'b0);
@@ -8557,7 +8712,7 @@
 					wb_valid_q <= 1'b0;
 				else
 					wb_valid_q <= wb_valid_d;
-			always @(posedge clk_i or negedge rst_ni)
+			always @(posedge clk_i)
 				if (~rst_ni) begin
 					rf_we_wb_q <= 1'b0;
 					rf_waddr_wb_q <= {5 {1'sb0}};
@@ -10731,60 +10886,6 @@
 		else
 			rvalid_o <= tl_req;
 endmodule
-module debug_rom_one_scratch (
-	clk_i,
-	req_i,
-	addr_i,
-	rdata_o
-);
-	input wire clk_i;
-	input wire req_i;
-	input wire [63:0] addr_i;
-	output reg [63:0] rdata_o;
-	localparam [31:0] RomSize = 13;
-	wire [831:0] mem;
-	assign mem = 832'h7b2000737b20247310802423f1402473ab1ff06f7b20247310002223001000737b20247310002623fddff06ffc0418e30024741340044403f140247302041263001474134004440310802023f14024737b2410730ff0000f0340006f0500006f00c0006f;
-	reg [3:0] addr_q;
-	always @(posedge clk_i)
-		if (req_i)
-			addr_q <= addr_i[6:3];
-	function automatic [3:0] sv2v_cast_EB05F;
-		input reg [3:0] inp;
-		sv2v_cast_EB05F = inp;
-	endfunction
-	always @(*) begin : p_outmux
-		rdata_o = {64 {1'sb0}};
-		if (addr_q < sv2v_cast_EB05F(RomSize))
-			rdata_o = mem[addr_q * 64+:64];
-	end
-endmodule
-module debug_rom (
-	clk_i,
-	req_i,
-	addr_i,
-	rdata_o
-);
-	input wire clk_i;
-	input wire req_i;
-	input wire [63:0] addr_i;
-	output reg [63:0] rdata_o;
-	localparam [31:0] RomSize = 19;
-	wire [1215:0] mem;
-	assign mem = 1216'h7b2000737b2024737b30257310852423f1402473a85ff06f7b2024737b30257310052223001000737b2024737b3025731005262300c5151300c5551300000517fd5ff06ffa041ce3002474134004440300a40433f140247302041c63001474134004440300a4043310852023f140247300c5151300c55513000005177b3510737b2410730ff0000f04c0006f07c0006f00c0006f;
-	reg [4:0] addr_q;
-	always @(posedge clk_i)
-		if (req_i)
-			addr_q <= addr_i[7:3];
-	function automatic [4:0] sv2v_cast_2C22F;
-		input reg [4:0] inp;
-		sv2v_cast_2C22F = inp;
-	endfunction
-	always @(*) begin : p_outmux
-		rdata_o = {64 {1'sb0}};
-		if (addr_q < sv2v_cast_2C22F(RomSize))
-			rdata_o = mem[addr_q * 64+:64];
-	end
-endmodule
 module div_sqrt_top_mvp (
 	Clk_CI,
 	Rst_RBI,
@@ -10923,1764 +11024,6 @@
 		.Fflags_SO(Fflags_SO)
 	);
 endmodule
-module dm_csrs (
-	clk_i,
-	rst_ni,
-	testmode_i,
-	dmi_rst_ni,
-	dmi_req_valid_i,
-	dmi_req_ready_o,
-	dmi_req_i,
-	dmi_resp_valid_o,
-	dmi_resp_ready_i,
-	dmi_resp_o,
-	ndmreset_o,
-	dmactive_o,
-	hartinfo_i,
-	halted_i,
-	unavailable_i,
-	resumeack_i,
-	hartsel_o,
-	haltreq_o,
-	resumereq_o,
-	clear_resumeack_o,
-	cmd_valid_o,
-	cmd_o,
-	cmderror_valid_i,
-	cmderror_i,
-	cmdbusy_i,
-	progbuf_o,
-	data_o,
-	data_i,
-	data_valid_i,
-	sbaddress_o,
-	sbaddress_i,
-	sbaddress_write_valid_o,
-	sbreadonaddr_o,
-	sbautoincrement_o,
-	sbaccess_o,
-	sbreadondata_o,
-	sbdata_o,
-	sbdata_read_valid_o,
-	sbdata_write_valid_o,
-	sbdata_i,
-	sbdata_valid_i,
-	sbbusy_i,
-	sberror_valid_i,
-	sberror_i
-);
-	parameter [31:0] NrHarts = 1;
-	parameter [31:0] BusWidth = 32;
-	parameter [NrHarts - 1:0] SelectableHarts = {NrHarts {1'b1}};
-	input wire clk_i;
-	input wire rst_ni;
-	input wire testmode_i;
-	input wire dmi_rst_ni;
-	input wire dmi_req_valid_i;
-	output wire dmi_req_ready_o;
-	input wire [40:0] dmi_req_i;
-	output wire dmi_resp_valid_o;
-	input wire dmi_resp_ready_i;
-	output wire [33:0] dmi_resp_o;
-	output wire ndmreset_o;
-	output wire dmactive_o;
-	input wire [(NrHarts * 32) - 1:0] hartinfo_i;
-	input wire [NrHarts - 1:0] halted_i;
-	input wire [NrHarts - 1:0] unavailable_i;
-	input wire [NrHarts - 1:0] resumeack_i;
-	output wire [19:0] hartsel_o;
-	output reg [NrHarts - 1:0] haltreq_o;
-	output reg [NrHarts - 1:0] resumereq_o;
-	output reg clear_resumeack_o;
-	output wire cmd_valid_o;
-	output wire [31:0] cmd_o;
-	input wire cmderror_valid_i;
-	input wire [2:0] cmderror_i;
-	input wire cmdbusy_i;
-	localparam [4:0] dm_ProgBufSize = 5'h08;
-	output wire [(dm_ProgBufSize * 32) - 1:0] progbuf_o;
-	localparam [3:0] dm_DataCount = 4'h2;
-	output wire [(dm_DataCount * 32) - 1:0] data_o;
-	input wire [(dm_DataCount * 32) - 1:0] data_i;
-	input wire data_valid_i;
-	output wire [BusWidth - 1:0] sbaddress_o;
-	input wire [BusWidth - 1:0] sbaddress_i;
-	output reg sbaddress_write_valid_o;
-	output wire sbreadonaddr_o;
-	output wire sbautoincrement_o;
-	output wire [2:0] sbaccess_o;
-	output wire sbreadondata_o;
-	output wire [BusWidth - 1:0] sbdata_o;
-	output reg sbdata_read_valid_o;
-	output reg sbdata_write_valid_o;
-	input wire [BusWidth - 1:0] sbdata_i;
-	input wire sbdata_valid_i;
-	input wire sbbusy_i;
-	input wire sberror_valid_i;
-	input wire [2:0] sberror_i;
-	localparam [31:0] HartSelLen = (NrHarts == 1 ? 1 : $clog2(NrHarts));
-	localparam [31:0] NrHartsAligned = 2 ** HartSelLen;
-	wire [1:0] dtm_op;
-	function automatic [1:0] sv2v_cast_2;
-		input reg [1:0] inp;
-		sv2v_cast_2 = inp;
-	endfunction
-	assign dtm_op = sv2v_cast_2(dmi_req_i[33-:2]);
-	reg [31:0] resp_queue_data;
-	localparam [7:0] dm_Data0 = 8'h04;
-	function automatic [7:0] sv2v_cast_8;
-		input reg [7:0] inp;
-		sv2v_cast_8 = inp;
-	endfunction
-	localparam [7:0] DataEnd = sv2v_cast_8((dm_Data0 + {4'h0, dm_DataCount}) - 8'h01);
-	localparam [7:0] dm_ProgBuf0 = 8'h20;
-	localparam [7:0] ProgBufEnd = sv2v_cast_8((dm_ProgBuf0 + {4'h0, dm_ProgBufSize}) - 8'h01);
-	reg [31:0] haltsum0;
-	reg [31:0] haltsum1;
-	reg [31:0] haltsum2;
-	reg [31:0] haltsum3;
-	reg [((((NrHarts - 1) / 32) + 1) * 32) - 1:0] halted;
-	reg [(((NrHarts - 1) / 32) >= 0 ? ((((NrHarts - 1) / 32) + 1) * 32) - 1 : ((1 - ((NrHarts - 1) / 32)) * 32) + ((((NrHarts - 1) / 32) * 32) - 1)):(((NrHarts - 1) / 32) >= 0 ? 0 : ((NrHarts - 1) / 32) * 32)] halted_reshaped0;
-	reg [(((NrHarts - 1) / 1024) >= 0 ? ((((NrHarts - 1) / 1024) + 1) * 32) - 1 : ((1 - ((NrHarts - 1) / 1024)) * 32) + ((((NrHarts - 1) / 1024) * 32) - 1)):(((NrHarts - 1) / 1024) >= 0 ? 0 : ((NrHarts - 1) / 1024) * 32)] halted_reshaped1;
-	reg [(((NrHarts - 1) / 32768) >= 0 ? ((((NrHarts - 1) / 32768) + 1) * 32) - 1 : ((1 - ((NrHarts - 1) / 32768)) * 32) + ((((NrHarts - 1) / 32768) * 32) - 1)):(((NrHarts - 1) / 32768) >= 0 ? 0 : ((NrHarts - 1) / 32768) * 32)] halted_reshaped2;
-	reg [((((NrHarts - 1) / 1024) + 1) * 32) - 1:0] halted_flat1;
-	reg [((((NrHarts - 1) / 32768) + 1) * 32) - 1:0] halted_flat2;
-	reg [31:0] halted_flat3;
-	reg [14:0] hartsel_idx0;
-	function automatic [14:0] sv2v_cast_15;
-		input reg [14:0] inp;
-		sv2v_cast_15 = inp;
-	endfunction
-	always @(*) begin : p_haltsum0
-		halted = {(((NrHarts - 1) / 32) + 1) * 32 {1'sb0}};
-		haltsum0 = {32 {1'sb0}};
-		hartsel_idx0 = hartsel_o[19:5];
-		halted[NrHarts - 1:0] = halted_i;
-		halted_reshaped0 = halted;
-		if (hartsel_idx0 < sv2v_cast_15(((NrHarts - 1) / 32) + 1))
-			haltsum0 = halted_reshaped0[(((NrHarts - 1) / 32) >= 0 ? hartsel_idx0 : ((NrHarts - 1) / 32) - hartsel_idx0) * 32+:32];
-	end
-	reg [9:0] hartsel_idx1;
-	function automatic [9:0] sv2v_cast_10;
-		input reg [9:0] inp;
-		sv2v_cast_10 = inp;
-	endfunction
-	always @(*) begin : p_reduction1
-		halted_flat1 = {(((NrHarts - 1) / 1024) + 1) * 32 {1'sb0}};
-		haltsum1 = {32 {1'sb0}};
-		hartsel_idx1 = hartsel_o[19:10];
-		begin : sv2v_autoblock_100
-			reg [31:0] k;
-			for (k = 0; k < (((NrHarts - 1) / 32) + 1); k = k + 1)
-				halted_flat1[k] = |halted_reshaped0[(((NrHarts - 1) / 32) >= 0 ? k : ((NrHarts - 1) / 32) - k) * 32+:32];
-		end
-		halted_reshaped1 = halted_flat1;
-		if (hartsel_idx1 < sv2v_cast_10(((NrHarts - 1) / 1024) + 1))
-			haltsum1 = halted_reshaped1[(((NrHarts - 1) / 1024) >= 0 ? hartsel_idx1 : ((NrHarts - 1) / 1024) - hartsel_idx1) * 32+:32];
-	end
-	reg [4:0] hartsel_idx2;
-	function automatic [4:0] sv2v_cast_5;
-		input reg [4:0] inp;
-		sv2v_cast_5 = inp;
-	endfunction
-	always @(*) begin : p_reduction2
-		halted_flat2 = {(((NrHarts - 1) / 32768) + 1) * 32 {1'sb0}};
-		haltsum2 = {32 {1'sb0}};
-		hartsel_idx2 = hartsel_o[19:15];
-		begin : sv2v_autoblock_101
-			reg [31:0] k;
-			for (k = 0; k < (((NrHarts - 1) / 1024) + 1); k = k + 1)
-				halted_flat2[k] = |halted_reshaped1[(((NrHarts - 1) / 1024) >= 0 ? k : ((NrHarts - 1) / 1024) - k) * 32+:32];
-		end
-		halted_reshaped2 = halted_flat2;
-		if (hartsel_idx2 < sv2v_cast_5(((NrHarts - 1) / 32768) + 1))
-			haltsum2 = halted_reshaped2[(((NrHarts - 1) / 32768) >= 0 ? hartsel_idx2 : ((NrHarts - 1) / 32768) - hartsel_idx2) * 32+:32];
-	end
-	always @(*) begin : p_reduction3
-		halted_flat3 = {32 {1'sb0}};
-		begin : sv2v_autoblock_102
-			reg [31:0] k;
-			for (k = 0; k < ((NrHarts / 32768) + 1); k = k + 1)
-				halted_flat3[k] = |halted_reshaped2[(((NrHarts - 1) / 32768) >= 0 ? k : ((NrHarts - 1) / 32768) - k) * 32+:32];
-		end
-		haltsum3 = halted_flat3;
-	end
-	reg [31:0] dmstatus;
-	reg [31:0] dmcontrol_d;
-	reg [31:0] dmcontrol_q;
-	reg [31:0] abstractcs;
-	reg [2:0] cmderr_d;
-	reg [2:0] cmderr_q;
-	reg [31:0] command_d;
-	reg [31:0] command_q;
-	reg cmd_valid_d;
-	reg cmd_valid_q;
-	reg [31:0] abstractauto_d;
-	reg [31:0] abstractauto_q;
-	reg [31:0] sbcs_d;
-	reg [31:0] sbcs_q;
-	reg [63:0] sbaddr_d;
-	reg [63:0] sbaddr_q;
-	reg [63:0] sbdata_d;
-	reg [63:0] sbdata_q;
-	wire [NrHarts - 1:0] havereset_d;
-	reg [NrHarts - 1:0] havereset_q;
-	reg [(dm_ProgBufSize * 32) - 1:0] progbuf_d;
-	reg [(dm_ProgBufSize * 32) - 1:0] progbuf_q;
-	reg [(dm_DataCount * 32) - 1:0] data_d;
-	reg [(dm_DataCount * 32) - 1:0] data_q;
-	reg [HartSelLen - 1:0] selected_hart;
-	localparam [1:0] dm_DTM_SUCCESS = 2'h0;
-	assign dmi_resp_o[1-:2] = dm_DTM_SUCCESS;
-	assign sbautoincrement_o = sbcs_q[16];
-	assign sbreadonaddr_o = sbcs_q[20];
-	assign sbreadondata_o = sbcs_q[15];
-	assign sbaccess_o = sbcs_q[19-:3];
-	assign sbdata_o = sbdata_q[BusWidth - 1:0];
-	assign sbaddress_o = sbaddr_q[BusWidth - 1:0];
-	assign hartsel_o = {dmcontrol_q[15-:10], dmcontrol_q[25-:10]};
-	reg [NrHartsAligned - 1:0] havereset_d_aligned;
-	wire [NrHartsAligned - 1:0] havereset_q_aligned;
-	wire [NrHartsAligned - 1:0] resumeack_aligned;
-	wire [NrHartsAligned - 1:0] unavailable_aligned;
-	wire [NrHartsAligned - 1:0] halted_aligned;
-	function automatic [NrHartsAligned - 1:0] sv2v_cast_C60B8;
-		input reg [NrHartsAligned - 1:0] inp;
-		sv2v_cast_C60B8 = inp;
-	endfunction
-	assign resumeack_aligned = sv2v_cast_C60B8(resumeack_i);
-	assign unavailable_aligned = sv2v_cast_C60B8(unavailable_i);
-	assign halted_aligned = sv2v_cast_C60B8(halted_i);
-	function automatic [NrHarts - 1:0] sv2v_cast_25FFB;
-		input reg [NrHarts - 1:0] inp;
-		sv2v_cast_25FFB = inp;
-	endfunction
-	assign havereset_d = sv2v_cast_25FFB(havereset_d_aligned);
-	assign havereset_q_aligned = sv2v_cast_C60B8(havereset_q);
-	reg [(NrHartsAligned * 32) - 1:0] hartinfo_aligned;
-	always @(*) begin : p_hartinfo_align
-		hartinfo_aligned = {NrHartsAligned * 32 {1'sb0}};
-		hartinfo_aligned[32 * ((NrHarts - 1) - (NrHarts - 1))+:32 * NrHarts] = hartinfo_i;
-	end
-	wire [7:0] dm_csr_addr;
-	reg [31:0] sbcs;
-	reg [31:0] a_abstractcs;
-	wire [3:0] autoexecdata_idx;
-	assign dm_csr_addr = sv2v_cast_8({1'b0, dmi_req_i[40-:7]});
-	function automatic [3:0] sv2v_cast_4;
-		input reg [3:0] inp;
-		sv2v_cast_4 = inp;
-	endfunction
-	assign autoexecdata_idx = sv2v_cast_4({dm_csr_addr} - {dm_Data0});
-	localparam [3:0] dm_DbgVersion013 = 4'h2;
-	localparam [7:0] dm_AbstractAuto = 8'h18;
-	localparam [7:0] dm_AbstractCS = 8'h16;
-	localparam [2:0] dm_CmdErrBusy = 1;
-	localparam [2:0] dm_CmdErrNone = 0;
-	localparam [7:0] dm_Command = 8'h17;
-	localparam [7:0] dm_DMControl = 8'h10;
-	localparam [7:0] dm_DMStatus = 8'h11;
-	localparam [1:0] dm_DTM_READ = 2'h1;
-	localparam [1:0] dm_DTM_WRITE = 2'h2;
-	localparam [7:0] dm_HaltSum0 = 8'h40;
-	localparam [7:0] dm_HaltSum1 = 8'h13;
-	localparam [7:0] dm_HaltSum2 = 8'h34;
-	localparam [7:0] dm_HaltSum3 = 8'h35;
-	localparam [7:0] dm_Hartinfo = 8'h12;
-	localparam [7:0] dm_SBAddress0 = 8'h39;
-	localparam [7:0] dm_SBAddress1 = 8'h3a;
-	localparam [7:0] dm_SBCS = 8'h38;
-	localparam [7:0] dm_SBData0 = 8'h3c;
-	localparam [7:0] dm_SBData1 = 8'h3d;
-	function automatic [31:0] sv2v_cast_32;
-		input reg [31:0] inp;
-		sv2v_cast_32 = inp;
-	endfunction
-	function automatic [63:0] sv2v_cast_64;
-		input reg [63:0] inp;
-		sv2v_cast_64 = inp;
-	endfunction
-	function automatic [$clog2(4'h2) - 1:0] sv2v_cast_BB9EC;
-		input reg [$clog2(4'h2) - 1:0] inp;
-		sv2v_cast_BB9EC = inp;
-	endfunction
-	function automatic [2:0] sv2v_cast_3;
-		input reg [2:0] inp;
-		sv2v_cast_3 = inp;
-	endfunction
-	function automatic [11:0] sv2v_cast_12;
-		input reg [11:0] inp;
-		sv2v_cast_12 = inp;
-	endfunction
-	function automatic [15:0] sv2v_cast_16;
-		input reg [15:0] inp;
-		sv2v_cast_16 = inp;
-	endfunction
-	function automatic [6:0] sv2v_cast_F50EE;
-		input reg [6:0] inp;
-		sv2v_cast_F50EE = inp;
-	endfunction
-	always @(*) begin : csr_read_write
-		dmstatus = {32 {1'sb0}};
-		dmstatus[3-:4] = dm_DbgVersion013;
-		dmstatus[7] = 1'b1;
-		dmstatus[5] = 1'b0;
-		dmstatus[19] = havereset_q_aligned[selected_hart];
-		dmstatus[18] = havereset_q_aligned[selected_hart];
-		dmstatus[17] = resumeack_aligned[selected_hart];
-		dmstatus[16] = resumeack_aligned[selected_hart];
-		dmstatus[13] = unavailable_aligned[selected_hart];
-		dmstatus[12] = unavailable_aligned[selected_hart];
-		dmstatus[15] = sv2v_cast_32(hartsel_o) > (NrHarts - 32'sd1);
-		dmstatus[14] = sv2v_cast_32(hartsel_o) > (NrHarts - 32'sd1);
-		dmstatus[9] = halted_aligned[selected_hart] & ~unavailable_aligned[selected_hart];
-		dmstatus[8] = halted_aligned[selected_hart] & ~unavailable_aligned[selected_hart];
-		dmstatus[11] = ~halted_aligned[selected_hart] & ~unavailable_aligned[selected_hart];
-		dmstatus[10] = ~halted_aligned[selected_hart] & ~unavailable_aligned[selected_hart];
-		abstractcs = {32 {1'sb0}};
-		abstractcs[3-:4] = dm_DataCount;
-		abstractcs[28-:5] = dm_ProgBufSize;
-		abstractcs[12] = cmdbusy_i;
-		abstractcs[10-:3] = cmderr_q;
-		abstractauto_d = abstractauto_q;
-		abstractauto_d[15-:4] = {4 {1'sb0}};
-		havereset_d_aligned = sv2v_cast_C60B8(havereset_q);
-		dmcontrol_d = dmcontrol_q;
-		cmderr_d = cmderr_q;
-		command_d = command_q;
-		progbuf_d = progbuf_q;
-		data_d = data_q;
-		sbcs_d = sbcs_q;
-		sbaddr_d = sv2v_cast_64(sbaddress_i);
-		sbdata_d = sbdata_q;
-		resp_queue_data = 32'h00000000;
-		cmd_valid_d = 1'b0;
-		sbaddress_write_valid_o = 1'b0;
-		sbdata_read_valid_o = 1'b0;
-		sbdata_write_valid_o = 1'b0;
-		clear_resumeack_o = 1'b0;
-		sbcs = {32 {1'sb0}};
-		a_abstractcs = {32 {1'sb0}};
-		if ((dmi_req_ready_o && dmi_req_valid_i) && (dtm_op == dm_DTM_READ))
-			if ((dm_Data0 <= dm_csr_addr) && (DataEnd >= dm_csr_addr)) begin
-				resp_queue_data = data_q[sv2v_cast_BB9EC(autoexecdata_idx) * 32+:32];
-				if (!cmdbusy_i)
-					cmd_valid_d = abstractauto_q[autoexecdata_idx];
-				else if (cmderr_q == dm_CmdErrNone)
-					cmderr_d = dm_CmdErrBusy;
-			end
-			else if (dm_csr_addr == dm_DMControl)
-				resp_queue_data = dmcontrol_q;
-			else if (dm_csr_addr == dm_DMStatus)
-				resp_queue_data = dmstatus;
-			else if (dm_csr_addr == dm_Hartinfo)
-				resp_queue_data = hartinfo_aligned[selected_hart * 32+:32];
-			else if (dm_csr_addr == dm_AbstractCS)
-				resp_queue_data = abstractcs;
-			else if (dm_csr_addr == dm_AbstractAuto)
-				resp_queue_data = abstractauto_q;
-			else if (dm_csr_addr == dm_Command)
-				resp_queue_data = {32 {1'sb0}};
-			else if ((dm_ProgBuf0 <= dm_csr_addr) && (ProgBufEnd >= dm_csr_addr)) begin
-				resp_queue_data = progbuf_q[dmi_req_i[$clog2(5'h08) + 33:34] * 32+:32];
-				if (!cmdbusy_i)
-					cmd_valid_d = abstractauto_q[{1'b1, dmi_req_i[37:34]}];
-				else if (cmderr_q == dm_CmdErrNone)
-					cmderr_d = dm_CmdErrBusy;
-			end
-			else if (dm_csr_addr == dm_HaltSum0)
-				resp_queue_data = haltsum0;
-			else if (dm_csr_addr == dm_HaltSum1)
-				resp_queue_data = haltsum1;
-			else if (dm_csr_addr == dm_HaltSum2)
-				resp_queue_data = haltsum2;
-			else if (dm_csr_addr == dm_HaltSum3)
-				resp_queue_data = haltsum3;
-			else if (dm_csr_addr == dm_SBCS)
-				resp_queue_data = sbcs_q;
-			else if (dm_csr_addr == dm_SBAddress0)
-				resp_queue_data = sbaddr_q[31:0];
-			else if (dm_csr_addr == dm_SBAddress1)
-				resp_queue_data = sbaddr_q[63:32];
-			else if (dm_csr_addr == dm_SBData0) begin
-				if (sbbusy_i || sbcs_q[22])
-					sbcs_d[22] = 1'b1;
-				else begin
-					sbdata_read_valid_o = sbcs_q[14-:3] == {3 {1'sb0}};
-					resp_queue_data = sbdata_q[31:0];
-				end
-			end
-			else if (dm_csr_addr == dm_SBData1)
-				if (sbbusy_i || sbcs_q[22])
-					sbcs_d[22] = 1'b1;
-				else
-					resp_queue_data = sbdata_q[63:32];
-		if ((dmi_req_ready_o && dmi_req_valid_i) && (dtm_op == dm_DTM_WRITE))
-			if ((dm_Data0 <= dm_csr_addr) && (DataEnd >= dm_csr_addr)) begin
-				if (dm_DataCount > 0)
-					if (!cmdbusy_i) begin
-						data_d[dmi_req_i[$clog2(4'h2) + 33:34] * 32+:32] = dmi_req_i[31-:32];
-						cmd_valid_d = abstractauto_q[autoexecdata_idx];
-					end
-					else if (cmderr_q == dm_CmdErrNone)
-						cmderr_d = dm_CmdErrBusy;
-			end
-			else if (dm_csr_addr == dm_DMControl) begin
-				dmcontrol_d = dmi_req_i[31-:32];
-				if (dmcontrol_d[28])
-					havereset_d_aligned[selected_hart] = 1'b0;
-			end
-			else if (dm_csr_addr == dm_DMStatus)
-				;
-			else if (dm_csr_addr == dm_Hartinfo)
-				;
-			else if (dm_csr_addr == dm_AbstractCS) begin
-				a_abstractcs = sv2v_cast_32(dmi_req_i[31-:32]);
-				if (!cmdbusy_i)
-					cmderr_d = sv2v_cast_3(~a_abstractcs[10-:3] & cmderr_q);
-				else if (cmderr_q == dm_CmdErrNone)
-					cmderr_d = dm_CmdErrBusy;
-			end
-			else if (dm_csr_addr == dm_Command) begin
-				if (!cmdbusy_i) begin
-					cmd_valid_d = 1'b1;
-					command_d = sv2v_cast_32(dmi_req_i[31-:32]);
-				end
-				else if (cmderr_q == dm_CmdErrNone)
-					cmderr_d = dm_CmdErrBusy;
-			end
-			else if (dm_csr_addr == dm_AbstractAuto) begin
-				if (!cmdbusy_i) begin
-					abstractauto_d = 32'h00000000;
-					abstractauto_d[11-:12] = sv2v_cast_12(dmi_req_i[dm_DataCount - 1:0]);
-					abstractauto_d[31-:16] = sv2v_cast_16(dmi_req_i[dm_ProgBufSize + 15:16]);
-				end
-				else if (cmderr_q == dm_CmdErrNone)
-					cmderr_d = dm_CmdErrBusy;
-			end
-			else if ((dm_ProgBuf0 <= dm_csr_addr) && (ProgBufEnd >= dm_csr_addr)) begin
-				if (!cmdbusy_i) begin
-					progbuf_d[dmi_req_i[$clog2(5'h08) + 33:34] * 32+:32] = dmi_req_i[31-:32];
-					cmd_valid_d = abstractauto_q[{1'b1, dmi_req_i[37:34]}];
-				end
-				else if (cmderr_q == dm_CmdErrNone)
-					cmderr_d = dm_CmdErrBusy;
-			end
-			else if (dm_csr_addr == dm_SBCS) begin
-				if (sbbusy_i)
-					sbcs_d[22] = 1'b1;
-				else begin
-					sbcs = sv2v_cast_32(dmi_req_i[31-:32]);
-					sbcs_d = sbcs;
-					sbcs_d[22] = sbcs_q[22] & ~sbcs[22];
-					sbcs_d[14-:3] = sbcs_q[14-:3] & ~sbcs[14-:3];
-				end
-			end
-			else if (dm_csr_addr == dm_SBAddress0) begin
-				if (sbbusy_i || sbcs_q[22])
-					sbcs_d[22] = 1'b1;
-				else begin
-					sbaddr_d[31:0] = dmi_req_i[31-:32];
-					sbaddress_write_valid_o = sbcs_q[14-:3] == {3 {1'sb0}};
-				end
-			end
-			else if (dm_csr_addr == dm_SBAddress1) begin
-				if (sbbusy_i || sbcs_q[22])
-					sbcs_d[22] = 1'b1;
-				else
-					sbaddr_d[63:32] = dmi_req_i[31-:32];
-			end
-			else if (dm_csr_addr == dm_SBData0) begin
-				if (sbbusy_i || sbcs_q[22])
-					sbcs_d[22] = 1'b1;
-				else begin
-					sbdata_d[31:0] = dmi_req_i[31-:32];
-					sbdata_write_valid_o = sbcs_q[14-:3] == {3 {1'sb0}};
-				end
-			end
-			else if (dm_csr_addr == dm_SBData1)
-				if (sbbusy_i || sbcs_q[22])
-					sbcs_d[22] = 1'b1;
-				else
-					sbdata_d[63:32] = dmi_req_i[31-:32];
-		if (cmderror_valid_i)
-			cmderr_d = cmderror_i;
-		if (data_valid_i)
-			data_d = data_i;
-		if (ndmreset_o)
-			havereset_d_aligned[NrHarts - 1:0] = {NrHarts {1'sb1}};
-		if (sberror_valid_i)
-			sbcs_d[14-:3] = sberror_i;
-		if (sbdata_valid_i)
-			sbdata_d = sv2v_cast_64(sbdata_i);
-		dmcontrol_d[26] = 1'b0;
-		dmcontrol_d[29] = 1'b0;
-		dmcontrol_d[3] = 1'b0;
-		dmcontrol_d[2] = 1'b0;
-		dmcontrol_d[27] = 1'b0;
-		dmcontrol_d[5-:2] = {2 {1'sb0}};
-		dmcontrol_d[28] = 1'b0;
-		if (!dmcontrol_q[30] && dmcontrol_d[30])
-			clear_resumeack_o = 1'b1;
-		if (dmcontrol_q[30] && resumeack_i)
-			dmcontrol_d[30] = 1'b0;
-		sbcs_d[31-:3] = 3'd1;
-		sbcs_d[21] = sbbusy_i;
-		sbcs_d[11-:7] = sv2v_cast_F50EE(BusWidth);
-		sbcs_d[4] = 1'b0;
-		sbcs_d[3] = BusWidth == 32'd64;
-		sbcs_d[2] = BusWidth == 32'd32;
-		sbcs_d[1] = 1'b0;
-		sbcs_d[0] = 1'b0;
-		sbcs_d[19-:3] = (BusWidth == 32'd64 ? 3'd3 : 3'd2);
-	end
-	function automatic [HartSelLen - 1:0] sv2v_cast_41A1E;
-		input reg [HartSelLen - 1:0] inp;
-		sv2v_cast_41A1E = inp;
-	endfunction
-	always @(*) begin : p_outmux
-		selected_hart = hartsel_o[HartSelLen - 1:0];
-		haltreq_o = {NrHarts {1'sb0}};
-		resumereq_o = {NrHarts {1'sb0}};
-		if (selected_hart <= sv2v_cast_41A1E(NrHarts - 1)) begin
-			haltreq_o[selected_hart] = dmcontrol_q[31];
-			resumereq_o[selected_hart] = dmcontrol_q[30];
-		end
-	end
-	assign dmactive_o = dmcontrol_q[0];
-	assign cmd_o = command_q;
-	assign cmd_valid_o = cmd_valid_q;
-	assign progbuf_o = progbuf_q;
-	assign data_o = data_q;
-	assign ndmreset_o = dmcontrol_q[1];
-	wire unused_testmode;
-	assign unused_testmode = testmode_i;
-	fifo_sync #(
-		.Width(32),
-		.Pass(1'b0),
-		.Depth(2)
-	) i_fifo(
-		.clk_i(clk_i),
-		.rst_ni(dmi_rst_ni),
-		.clr_i(1'b0),
-		.wdata_i(resp_queue_data),
-		.wvalid_i(dmi_req_valid_i),
-		.wready_o(dmi_req_ready_o),
-		.rdata_o(dmi_resp_o[33-:32]),
-		.rvalid_o(dmi_resp_valid_o),
-		.rready_i(dmi_resp_ready_i),
-		.full_o(),
-		.depth_o()
-	);
-	always @(posedge clk_i or negedge rst_ni) begin : p_regs
-		if (!rst_ni) begin
-			dmcontrol_q <= {32 {1'sb0}};
-			cmderr_q <= dm_CmdErrNone;
-			command_q <= {32 {1'sb0}};
-			cmd_valid_q <= 1'b0;
-			abstractauto_q <= {32 {1'sb0}};
-			progbuf_q <= {dm_ProgBufSize * 32 {1'sb0}};
-			data_q <= {dm_DataCount * 32 {1'sb0}};
-			sbcs_q <= {32 {1'sb0}};
-			sbaddr_q <= {64 {1'sb0}};
-			sbdata_q <= {64 {1'sb0}};
-			havereset_q <= {NrHarts {1'sb1}};
-		end
-		else begin
-			havereset_q <= SelectableHarts & havereset_d;
-			if (!dmcontrol_q[0]) begin
-				dmcontrol_q[31] <= 1'b0;
-				dmcontrol_q[30] <= 1'b0;
-				dmcontrol_q[29] <= 1'b0;
-				dmcontrol_q[28] <= 1'b0;
-				dmcontrol_q[27] <= 1'b0;
-				dmcontrol_q[26] <= 1'b0;
-				dmcontrol_q[25-:10] <= {10 {1'sb0}};
-				dmcontrol_q[15-:10] <= {10 {1'sb0}};
-				dmcontrol_q[5-:2] <= {2 {1'sb0}};
-				dmcontrol_q[3] <= 1'b0;
-				dmcontrol_q[2] <= 1'b0;
-				dmcontrol_q[1] <= 1'b0;
-				dmcontrol_q[0] <= dmcontrol_d[0];
-				cmderr_q <= dm_CmdErrNone;
-				command_q <= {32 {1'sb0}};
-				cmd_valid_q <= 1'b0;
-				abstractauto_q <= {32 {1'sb0}};
-				progbuf_q <= {dm_ProgBufSize * 32 {1'sb0}};
-				data_q <= {dm_DataCount * 32 {1'sb0}};
-				sbcs_q <= {32 {1'sb0}};
-				sbaddr_q <= {64 {1'sb0}};
-				sbdata_q <= {64 {1'sb0}};
-			end
-			else begin
-				dmcontrol_q <= dmcontrol_d;
-				cmderr_q <= cmderr_d;
-				command_q <= command_d;
-				cmd_valid_q <= cmd_valid_d;
-				abstractauto_q <= abstractauto_d;
-				progbuf_q <= progbuf_d;
-				data_q <= data_d;
-				sbcs_q <= sbcs_d;
-				sbaddr_q <= sbaddr_d;
-				sbdata_q <= sbdata_d;
-			end
-		end
-	end
-endmodule
-module dmi_cdc (
-	tck_i,
-	trst_ni,
-	jtag_dmi_req_i,
-	jtag_dmi_ready_o,
-	jtag_dmi_valid_i,
-	jtag_dmi_resp_o,
-	jtag_dmi_valid_o,
-	jtag_dmi_ready_i,
-	clk_i,
-	rst_ni,
-	core_dmi_req_o,
-	core_dmi_valid_o,
-	core_dmi_ready_i,
-	core_dmi_resp_i,
-	core_dmi_ready_o,
-	core_dmi_valid_i
-);
-	input wire tck_i;
-	input wire trst_ni;
-	input wire [40:0] jtag_dmi_req_i;
-	output wire jtag_dmi_ready_o;
-	input wire jtag_dmi_valid_i;
-	output wire [33:0] jtag_dmi_resp_o;
-	output wire jtag_dmi_valid_o;
-	input wire jtag_dmi_ready_i;
-	input wire clk_i;
-	input wire rst_ni;
-	output wire [40:0] core_dmi_req_o;
-	output wire core_dmi_valid_o;
-	input wire core_dmi_ready_i;
-	input wire [33:0] core_dmi_resp_i;
-	output wire core_dmi_ready_o;
-	input wire core_dmi_valid_i;
-	fifo_async #(
-		.Width(41),
-		.Depth(4)
-	) i_cdc_req(
-		.clk_wr_i(tck_i),
-		.rst_wr_ni(trst_ni),
-		.wvalid_i(jtag_dmi_valid_i),
-		.wready_o(jtag_dmi_ready_o),
-		.wdata_i(jtag_dmi_req_i),
-		.wdepth_o(),
-		.clk_rd_i(clk_i),
-		.rst_rd_ni(rst_ni),
-		.rvalid_o(core_dmi_valid_o),
-		.rready_i(core_dmi_ready_i),
-		.rdata_o(core_dmi_req_o),
-		.rdepth_o()
-	);
-	fifo_async #(
-		.Width(34),
-		.Depth(4)
-	) i_cdc_resp(
-		.clk_wr_i(clk_i),
-		.rst_wr_ni(rst_ni),
-		.wvalid_i(core_dmi_valid_i),
-		.wready_o(core_dmi_ready_o),
-		.wdata_i(core_dmi_resp_i),
-		.wdepth_o(),
-		.clk_rd_i(tck_i),
-		.rst_rd_ni(trst_ni),
-		.rvalid_o(jtag_dmi_valid_o),
-		.rready_i(jtag_dmi_ready_i),
-		.rdata_o(jtag_dmi_resp_o),
-		.rdepth_o()
-	);
-endmodule
-module dmi_jtag (
-	clk_i,
-	rst_ni,
-	testmode_i,
-	dmi_rst_no,
-	dmi_req_o,
-	dmi_req_valid_o,
-	dmi_req_ready_i,
-	dmi_resp_i,
-	dmi_resp_ready_o,
-	dmi_resp_valid_i,
-	tck_i,
-	tms_i,
-	trst_ni,
-	td_i,
-	td_o,
-	tdo_oe_o
-);
-	parameter [31:0] IdcodeValue = 32'h00000001;
-	input wire clk_i;
-	input wire rst_ni;
-	input wire testmode_i;
-	output wire dmi_rst_no;
-	output wire [40:0] dmi_req_o;
-	output wire dmi_req_valid_o;
-	input wire dmi_req_ready_i;
-	input wire [33:0] dmi_resp_i;
-	output wire dmi_resp_ready_o;
-	input wire dmi_resp_valid_i;
-	input wire tck_i;
-	input wire tms_i;
-	input wire trst_ni;
-	input wire td_i;
-	output wire td_o;
-	output wire tdo_oe_o;
-	assign dmi_rst_no = rst_ni;
-	wire test_logic_reset;
-	wire shift_dr;
-	wire update_dr;
-	wire capture_dr;
-	wire dmi_access;
-	wire dtmcs_select;
-	wire dmi_reset;
-	wire dmi_tdi;
-	wire dmi_tdo;
-	wire [40:0] dmi_req;
-	wire dmi_req_ready;
-	reg dmi_req_valid;
-	wire [33:0] dmi_resp;
-	wire dmi_resp_valid;
-	wire dmi_resp_ready;
-	reg [2:0] state_d;
-	reg [2:0] state_q;
-	reg [40:0] dr_d;
-	reg [40:0] dr_q;
-	reg [6:0] address_d;
-	reg [6:0] address_q;
-	reg [31:0] data_d;
-	reg [31:0] data_q;
-	wire [40:0] dmi;
-	assign dmi = dr_q;
-	assign dmi_req[40-:7] = address_q;
-	assign dmi_req[31-:32] = data_q;
-	localparam [2:0] Write = 3;
-	localparam [1:0] dm_DTM_READ = 2'h1;
-	localparam [1:0] dm_DTM_WRITE = 2'h2;
-	assign dmi_req[33-:2] = (state_q == Write ? dm_DTM_WRITE : dm_DTM_READ);
-	assign dmi_resp_ready = 1'b1;
-	reg error_dmi_busy;
-	reg [1:0] error_d;
-	reg [1:0] error_q;
-	localparam [1:0] DMIBusy = 2'h3;
-	localparam [1:0] DMINoError = 2'h0;
-	localparam [2:0] Idle = 0;
-	localparam [2:0] Read = 1;
-	localparam [2:0] WaitReadValid = 2;
-	localparam [2:0] WaitWriteValid = 4;
-	function automatic [1:0] sv2v_cast_2;
-		input reg [1:0] inp;
-		sv2v_cast_2 = inp;
-	endfunction
-	always @(*) begin : p_fsm
-		error_dmi_busy = 1'b0;
-		state_d = state_q;
-		address_d = address_q;
-		data_d = data_q;
-		error_d = error_q;
-		dmi_req_valid = 1'b0;
-		case (state_q)
-			Idle:
-				if ((dmi_access && update_dr) && (error_q == DMINoError)) begin
-					address_d = dmi[40-:7];
-					data_d = dmi[33-:32];
-					if (sv2v_cast_2(dmi[1-:2]) == dm_DTM_READ)
-						state_d = Read;
-					else if (sv2v_cast_2(dmi[1-:2]) == dm_DTM_WRITE)
-						state_d = Write;
-				end
-			Read: begin
-				dmi_req_valid = 1'b1;
-				if (dmi_req_ready)
-					state_d = WaitReadValid;
-			end
-			WaitReadValid:
-				if (dmi_resp_valid) begin
-					data_d = dmi_resp[33-:32];
-					state_d = Idle;
-				end
-			Write: begin
-				dmi_req_valid = 1'b1;
-				if (dmi_req_ready)
-					state_d = WaitWriteValid;
-			end
-			WaitWriteValid:
-				if (dmi_resp_valid)
-					state_d = Idle;
-			default:
-				if (dmi_resp_valid)
-					state_d = Idle;
-		endcase
-		if (update_dr && (state_q != Idle))
-			error_dmi_busy = 1'b1;
-		if (capture_dr && |{state_q == Read, state_q == WaitReadValid})
-			error_dmi_busy = 1'b1;
-		if (error_dmi_busy)
-			error_d = DMIBusy;
-		if ((update_dr && dmi_reset) && dtmcs_select)
-			error_d = DMINoError;
-	end
-	assign dmi_tdo = dr_q[0];
-	always @(*) begin : p_shift
-		dr_d = dr_q;
-		if (capture_dr)
-			if (dmi_access)
-				if ((error_q == DMINoError) && !error_dmi_busy)
-					dr_d = {address_q, data_q, DMINoError};
-				else if ((error_q == DMIBusy) || error_dmi_busy)
-					dr_d = {address_q, data_q, DMIBusy};
-		if (shift_dr)
-			if (dmi_access)
-				dr_d = {dmi_tdi, dr_q[40:1]};
-		if (test_logic_reset)
-			dr_d = {41 {1'sb0}};
-	end
-	always @(posedge tck_i or negedge trst_ni) begin : p_regs
-		if (!trst_ni) begin
-			dr_q <= {41 {1'sb0}};
-			state_q <= Idle;
-			address_q <= {7 {1'sb0}};
-			data_q <= {32 {1'sb0}};
-			error_q <= DMINoError;
-		end
-		else begin
-			dr_q <= dr_d;
-			state_q <= state_d;
-			address_q <= address_d;
-			data_q <= data_d;
-			error_q <= error_d;
-		end
-	end
-	dmi_jtag_tap #(
-		.IrLength(5),
-		.IdcodeValue(IdcodeValue)
-	) i_dmi_jtag_tap(
-		.tck_i(tck_i),
-		.tms_i(tms_i),
-		.trst_ni(trst_ni),
-		.td_i(td_i),
-		.td_o(td_o),
-		.tdo_oe_o(tdo_oe_o),
-		.testmode_i(testmode_i),
-		.test_logic_reset_o(test_logic_reset),
-		.shift_dr_o(shift_dr),
-		.update_dr_o(update_dr),
-		.capture_dr_o(capture_dr),
-		.dmi_access_o(dmi_access),
-		.dtmcs_select_o(dtmcs_select),
-		.dmi_reset_o(dmi_reset),
-		.dmi_error_i(error_q),
-		.dmi_tdi_o(dmi_tdi),
-		.dmi_tdo_i(dmi_tdo)
-	);
-	dmi_cdc i_dmi_cdc(
-		.tck_i(tck_i),
-		.trst_ni(trst_ni),
-		.jtag_dmi_req_i(dmi_req),
-		.jtag_dmi_ready_o(dmi_req_ready),
-		.jtag_dmi_valid_i(dmi_req_valid),
-		.jtag_dmi_resp_o(dmi_resp),
-		.jtag_dmi_valid_o(dmi_resp_valid),
-		.jtag_dmi_ready_i(dmi_resp_ready),
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.core_dmi_req_o(dmi_req_o),
-		.core_dmi_valid_o(dmi_req_valid_o),
-		.core_dmi_ready_i(dmi_req_ready_i),
-		.core_dmi_resp_i(dmi_resp_i),
-		.core_dmi_ready_o(dmi_resp_ready_o),
-		.core_dmi_valid_i(dmi_resp_valid_i)
-	);
-endmodule
-module dmi_jtag_tap (
-	tck_i,
-	tms_i,
-	trst_ni,
-	td_i,
-	td_o,
-	tdo_oe_o,
-	testmode_i,
-	test_logic_reset_o,
-	shift_dr_o,
-	update_dr_o,
-	capture_dr_o,
-	dmi_access_o,
-	dtmcs_select_o,
-	dmi_reset_o,
-	dmi_error_i,
-	dmi_tdi_o,
-	dmi_tdo_i
-);
-	parameter [31:0] IrLength = 5;
-	parameter [31:0] IdcodeValue = 32'h00000001;
-	input wire tck_i;
-	input wire tms_i;
-	input wire trst_ni;
-	input wire td_i;
-	output reg td_o;
-	output reg tdo_oe_o;
-	input wire testmode_i;
-	output reg test_logic_reset_o;
-	output reg shift_dr_o;
-	output reg update_dr_o;
-	output reg capture_dr_o;
-	output reg dmi_access_o;
-	output reg dtmcs_select_o;
-	output wire dmi_reset_o;
-	input wire [1:0] dmi_error_i;
-	output wire dmi_tdi_o;
-	input wire dmi_tdo_i;
-	assign dmi_tdi_o = td_i;
-	reg [3:0] tap_state_q;
-	reg [3:0] tap_state_d;
-	reg [IrLength - 1:0] jtag_ir_shift_d;
-	reg [IrLength - 1:0] jtag_ir_shift_q;
-	reg [IrLength - 1:0] jtag_ir_d;
-	reg [IrLength - 1:0] jtag_ir_q;
-	reg capture_ir;
-	reg shift_ir;
-	reg update_ir;
-	localparam [IrLength - 1:0] IDCODE = 'h1;
-	function automatic [IrLength - 1:0] sv2v_cast_42A93;
-		input reg [IrLength - 1:0] inp;
-		sv2v_cast_42A93 = inp;
-	endfunction
-	always @(*) begin : p_jtag
-		jtag_ir_shift_d = jtag_ir_shift_q;
-		jtag_ir_d = jtag_ir_q;
-		if (shift_ir)
-			jtag_ir_shift_d = {td_i, jtag_ir_shift_q[IrLength - 1:1]};
-		if (capture_ir)
-			jtag_ir_shift_d = sv2v_cast_42A93(4'b0101);
-		if (update_ir)
-			jtag_ir_d = jtag_ir_shift_q;
-		if (test_logic_reset_o) begin
-			jtag_ir_shift_d = {IrLength {1'sb0}};
-			jtag_ir_d = IDCODE;
-		end
-	end
-	always @(posedge tck_i or negedge trst_ni) begin : p_jtag_ir_reg
-		if (!trst_ni) begin
-			jtag_ir_shift_q <= {IrLength {1'sb0}};
-			jtag_ir_q <= IDCODE;
-		end
-		else begin
-			jtag_ir_shift_q <= jtag_ir_shift_d;
-			jtag_ir_q <= jtag_ir_d;
-		end
-	end
-	reg [31:0] idcode_d;
-	reg [31:0] idcode_q;
-	reg idcode_select;
-	reg bypass_select;
-	reg [31:0] dtmcs_d;
-	reg [31:0] dtmcs_q;
-	reg bypass_d;
-	reg bypass_q;
-	assign dmi_reset_o = dtmcs_q[16];
-	function automatic [30:0] sv2v_cast_31;
-		input reg [30:0] inp;
-		sv2v_cast_31 = inp;
-	endfunction
-	always @(*) begin
-		idcode_d = idcode_q;
-		bypass_d = bypass_q;
-		dtmcs_d = dtmcs_q;
-		if (capture_dr_o) begin
-			if (idcode_select)
-				idcode_d = IdcodeValue;
-			if (bypass_select)
-				bypass_d = 1'b0;
-			if (dtmcs_select_o)
-				dtmcs_d = {20'b00000000000000000001, dmi_error_i, 6'd7, 4'd1};
-		end
-		if (shift_dr_o) begin
-			if (idcode_select)
-				idcode_d = {td_i, sv2v_cast_31(idcode_q >> 1)};
-			if (bypass_select)
-				bypass_d = td_i;
-			if (dtmcs_select_o)
-				dtmcs_d = {td_i, sv2v_cast_31(dtmcs_q >> 1)};
-		end
-		if (test_logic_reset_o) begin
-			idcode_d = IdcodeValue;
-			bypass_d = 1'b0;
-		end
-	end
-	localparam [IrLength - 1:0] BYPASS0 = 'h0;
-	localparam [IrLength - 1:0] BYPASS1 = 'h1f;
-	localparam [IrLength - 1:0] DMIACCESS = 'h11;
-	localparam [IrLength - 1:0] DTMCSR = 'h10;
-	always @(*) begin : p_data_reg_sel
-		dmi_access_o = 1'b0;
-		dtmcs_select_o = 1'b0;
-		idcode_select = 1'b0;
-		bypass_select = 1'b0;
-		case (jtag_ir_q)
-			BYPASS0: bypass_select = 1'b1;
-			IDCODE: idcode_select = 1'b1;
-			DTMCSR: dtmcs_select_o = 1'b1;
-			DMIACCESS: dmi_access_o = 1'b1;
-			BYPASS1: bypass_select = 1'b1;
-			default: bypass_select = 1'b1;
-		endcase
-	end
-	reg tdo_mux;
-	always @(*) begin : p_out_sel
-		if (shift_ir)
-			tdo_mux = jtag_ir_shift_q[0];
-		else
-			case (jtag_ir_q)
-				IDCODE: tdo_mux = idcode_q[0];
-				DTMCSR: tdo_mux = dtmcs_q[0];
-				DMIACCESS: tdo_mux = dmi_tdo_i;
-				default: tdo_mux = bypass_q;
-			endcase
-	end
-	wire tck_n;
-	prim_generic_clock_inv #(.HasScanMode(1'b1)) i_tck_inv(
-		.clk_i(tck_i),
-		.clk_no(tck_n),
-		.scanmode_i(testmode_i)
-	);
-	always @(posedge tck_n or negedge trst_ni) begin : p_tdo_regs
-		if (!trst_ni) begin
-			td_o <= 1'b0;
-			tdo_oe_o <= 1'b0;
-		end
-		else begin
-			td_o <= tdo_mux;
-			tdo_oe_o <= shift_ir | shift_dr_o;
-		end
-	end
-	localparam [3:0] CaptureDr = 3;
-	localparam [3:0] CaptureIr = 10;
-	localparam [3:0] Exit1Dr = 5;
-	localparam [3:0] Exit1Ir = 12;
-	localparam [3:0] Exit2Dr = 7;
-	localparam [3:0] Exit2Ir = 14;
-	localparam [3:0] PauseDr = 6;
-	localparam [3:0] PauseIr = 13;
-	localparam [3:0] RunTestIdle = 1;
-	localparam [3:0] SelectDrScan = 2;
-	localparam [3:0] SelectIrScan = 9;
-	localparam [3:0] ShiftDr = 4;
-	localparam [3:0] ShiftIr = 11;
-	localparam [3:0] TestLogicReset = 0;
-	localparam [3:0] UpdateDr = 8;
-	localparam [3:0] UpdateIr = 15;
-	always @(*) begin : p_tap_fsm
-		test_logic_reset_o = 1'b0;
-		capture_dr_o = 1'b0;
-		shift_dr_o = 1'b0;
-		update_dr_o = 1'b0;
-		capture_ir = 1'b0;
-		shift_ir = 1'b0;
-		update_ir = 1'b0;
-		case (tap_state_q)
-			TestLogicReset: begin
-				tap_state_d = (tms_i ? TestLogicReset : RunTestIdle);
-				test_logic_reset_o = 1'b1;
-			end
-			RunTestIdle: tap_state_d = (tms_i ? SelectDrScan : RunTestIdle);
-			SelectDrScan: tap_state_d = (tms_i ? SelectIrScan : CaptureDr);
-			CaptureDr: begin
-				capture_dr_o = 1'b1;
-				tap_state_d = (tms_i ? Exit1Dr : ShiftDr);
-			end
-			ShiftDr: begin
-				shift_dr_o = 1'b1;
-				tap_state_d = (tms_i ? Exit1Dr : ShiftDr);
-			end
-			Exit1Dr: tap_state_d = (tms_i ? UpdateDr : PauseDr);
-			PauseDr: tap_state_d = (tms_i ? Exit2Dr : PauseDr);
-			Exit2Dr: tap_state_d = (tms_i ? UpdateDr : ShiftDr);
-			UpdateDr: begin
-				update_dr_o = 1'b1;
-				tap_state_d = (tms_i ? SelectDrScan : RunTestIdle);
-			end
-			SelectIrScan: tap_state_d = (tms_i ? TestLogicReset : CaptureIr);
-			CaptureIr: begin
-				capture_ir = 1'b1;
-				tap_state_d = (tms_i ? Exit1Ir : ShiftIr);
-			end
-			ShiftIr: begin
-				shift_ir = 1'b1;
-				tap_state_d = (tms_i ? Exit1Ir : ShiftIr);
-			end
-			Exit1Ir: tap_state_d = (tms_i ? UpdateIr : PauseIr);
-			PauseIr: tap_state_d = (tms_i ? Exit2Ir : PauseIr);
-			Exit2Ir: tap_state_d = (tms_i ? UpdateIr : ShiftIr);
-			UpdateIr: begin
-				update_ir = 1'b1;
-				tap_state_d = (tms_i ? SelectDrScan : RunTestIdle);
-			end
-			default:
-				;
-		endcase
-	end
-	always @(posedge tck_i or negedge trst_ni) begin : p_regs
-		if (!trst_ni) begin
-			tap_state_q <= RunTestIdle;
-			idcode_q <= IdcodeValue;
-			bypass_q <= 1'b0;
-			dtmcs_q <= {32 {1'sb0}};
-		end
-		else begin
-			tap_state_q <= tap_state_d;
-			idcode_q <= idcode_d;
-			bypass_q <= bypass_d;
-			dtmcs_q <= dtmcs_d;
-		end
-	end
-endmodule
-module dm_mem (
-	clk_i,
-	rst_ni,
-	debug_req_o,
-	hartsel_i,
-	haltreq_i,
-	resumereq_i,
-	clear_resumeack_i,
-	halted_o,
-	resuming_o,
-	progbuf_i,
-	data_i,
-	data_o,
-	data_valid_o,
-	cmd_valid_i,
-	cmd_i,
-	cmderror_valid_o,
-	cmderror_o,
-	cmdbusy_o,
-	req_i,
-	we_i,
-	addr_i,
-	wdata_i,
-	be_i,
-	rdata_o
-);
-	parameter [31:0] NrHarts = 1;
-	parameter [31:0] BusWidth = 32;
-	parameter [NrHarts - 1:0] SelectableHarts = {NrHarts {1'b1}};
-	parameter [31:0] DmBaseAddress = 1'sb0;
-	input wire clk_i;
-	input wire rst_ni;
-	output wire [NrHarts - 1:0] debug_req_o;
-	input wire [19:0] hartsel_i;
-	input wire [NrHarts - 1:0] haltreq_i;
-	input wire [NrHarts - 1:0] resumereq_i;
-	input wire clear_resumeack_i;
-	output wire [NrHarts - 1:0] halted_o;
-	output wire [NrHarts - 1:0] resuming_o;
-	localparam [4:0] dm_ProgBufSize = 5'h08;
-	input wire [(dm_ProgBufSize * 32) - 1:0] progbuf_i;
-	localparam [3:0] dm_DataCount = 4'h2;
-	input wire [(dm_DataCount * 32) - 1:0] data_i;
-	output reg [(dm_DataCount * 32) - 1:0] data_o;
-	output reg data_valid_o;
-	input wire cmd_valid_i;
-	input wire [31:0] cmd_i;
-	output reg cmderror_valid_o;
-	output reg [2:0] cmderror_o;
-	output reg cmdbusy_o;
-	input wire req_i;
-	input wire we_i;
-	input wire [BusWidth - 1:0] addr_i;
-	input wire [BusWidth - 1:0] wdata_i;
-	input wire [(BusWidth / 8) - 1:0] be_i;
-	output wire [BusWidth - 1:0] rdata_o;
-	localparam [31:0] DbgAddressBits = 12;
-	localparam [31:0] HartSelLen = (NrHarts == 1 ? 1 : $clog2(NrHarts));
-	localparam [31:0] NrHartsAligned = 2 ** HartSelLen;
-	localparam [31:0] MaxAar = (BusWidth == 64 ? 4 : 3);
-	localparam [0:0] HasSndScratch = DmBaseAddress != 0;
-	localparam [4:0] LoadBaseAddr = (DmBaseAddress == 0 ? 5'd0 : 5'd10);
-	localparam [11:0] dm_DataAddr = 12'h380;
-	localparam [11:0] DataBaseAddr = dm_DataAddr;
-	localparam [11:0] DataEndAddr = (dm_DataAddr + (4 * dm_DataCount)) - 1;
-	localparam [11:0] ProgBufBaseAddr = dm_DataAddr - (4 * dm_ProgBufSize);
-	localparam [11:0] ProgBufEndAddr = dm_DataAddr - 1;
-	localparam [11:0] AbstractCmdBaseAddr = ProgBufBaseAddr - 40;
-	localparam [11:0] AbstractCmdEndAddr = ProgBufBaseAddr - 1;
-	localparam [11:0] WhereToAddr = 'h300;
-	localparam [11:0] FlagsBaseAddr = 'h400;
-	localparam [11:0] FlagsEndAddr = 'h7ff;
-	localparam [11:0] HaltedAddr = 'h100;
-	localparam [11:0] GoingAddr = 'h104;
-	localparam [11:0] ResumingAddr = 'h108;
-	localparam [11:0] ExceptionAddr = 'h10c;
-	wire [((dm_ProgBufSize / 2) * 64) - 1:0] progbuf;
-	reg [511:0] abstract_cmd;
-	wire [NrHarts - 1:0] halted_d;
-	reg [NrHarts - 1:0] halted_q;
-	wire [NrHarts - 1:0] resuming_d;
-	reg [NrHarts - 1:0] resuming_q;
-	reg resume;
-	reg go;
-	reg going;
-	reg exception;
-	reg unsupported_command;
-	wire [63:0] rom_rdata;
-	reg [63:0] rdata_d;
-	reg [63:0] rdata_q;
-	reg word_enable32_q;
-	wire [HartSelLen - 1:0] hartsel;
-	wire [HartSelLen - 1:0] wdata_hartsel;
-	assign hartsel = hartsel_i[HartSelLen - 1:0];
-	assign wdata_hartsel = wdata_i[HartSelLen - 1:0];
-	wire [NrHartsAligned - 1:0] resumereq_aligned;
-	wire [NrHartsAligned - 1:0] haltreq_aligned;
-	reg [NrHartsAligned - 1:0] halted_d_aligned;
-	wire [NrHartsAligned - 1:0] halted_q_aligned;
-	reg [NrHartsAligned - 1:0] halted_aligned;
-	wire [NrHartsAligned - 1:0] resumereq_wdata_aligned;
-	reg [NrHartsAligned - 1:0] resuming_d_aligned;
-	wire [NrHartsAligned - 1:0] resuming_q_aligned;
-	function automatic [NrHartsAligned - 1:0] sv2v_cast_C60B8;
-		input reg [NrHartsAligned - 1:0] inp;
-		sv2v_cast_C60B8 = inp;
-	endfunction
-	assign resumereq_aligned = sv2v_cast_C60B8(resumereq_i);
-	assign haltreq_aligned = sv2v_cast_C60B8(haltreq_i);
-	assign resumereq_wdata_aligned = sv2v_cast_C60B8(resumereq_i);
-	assign halted_q_aligned = sv2v_cast_C60B8(halted_q);
-	function automatic [NrHarts - 1:0] sv2v_cast_25FFB;
-		input reg [NrHarts - 1:0] inp;
-		sv2v_cast_25FFB = inp;
-	endfunction
-	assign halted_d = sv2v_cast_25FFB(halted_d_aligned);
-	assign resuming_q_aligned = sv2v_cast_C60B8(resuming_q);
-	assign resuming_d = sv2v_cast_25FFB(resuming_d_aligned);
-	wire fwd_rom_d;
-	reg fwd_rom_q;
-	wire [23:0] ac_ar;
-	function automatic [23:0] sv2v_cast_24;
-		input reg [23:0] inp;
-		sv2v_cast_24 = inp;
-	endfunction
-	assign ac_ar = sv2v_cast_24(cmd_i[23-:24]);
-	assign debug_req_o = haltreq_i;
-	assign halted_o = halted_q;
-	assign resuming_o = resuming_q;
-	assign progbuf = progbuf_i;
-	reg [1:0] state_d;
-	reg [1:0] state_q;
-	localparam [1:0] CmdExecuting = 3;
-	localparam [1:0] Go = 1;
-	localparam [1:0] Idle = 0;
-	localparam [1:0] Resume = 2;
-	localparam [2:0] dm_CmdErrNone = 0;
-	localparam [2:0] dm_CmdErrNotSupported = 2;
-	localparam [2:0] dm_CmdErrorException = 3;
-	localparam [2:0] dm_CmdErrorHaltResume = 4;
-	always @(*) begin : p_hart_ctrl_queue
-		cmderror_valid_o = 1'b0;
-		cmderror_o = dm_CmdErrNone;
-		state_d = state_q;
-		go = 1'b0;
-		resume = 1'b0;
-		cmdbusy_o = 1'b1;
-		case (state_q)
-			Idle: begin
-				cmdbusy_o = 1'b0;
-				if ((cmd_valid_i && halted_q_aligned[hartsel]) && !unsupported_command)
-					state_d = Go;
-				else if (cmd_valid_i) begin
-					cmderror_valid_o = 1'b1;
-					cmderror_o = dm_CmdErrorHaltResume;
-				end
-				if (((resumereq_aligned[hartsel] && !resuming_q_aligned[hartsel]) && !haltreq_aligned[hartsel]) && halted_q_aligned[hartsel])
-					state_d = Resume;
-			end
-			Go: begin
-				cmdbusy_o = 1'b1;
-				go = 1'b1;
-				if (going)
-					state_d = CmdExecuting;
-			end
-			Resume: begin
-				cmdbusy_o = 1'b1;
-				resume = 1'b1;
-				if (resuming_q_aligned[hartsel])
-					state_d = Idle;
-			end
-			CmdExecuting: begin
-				cmdbusy_o = 1'b1;
-				go = 1'b0;
-				if (halted_aligned[hartsel])
-					state_d = Idle;
-			end
-			default:
-				;
-		endcase
-		if (unsupported_command && cmd_valid_i) begin
-			cmderror_valid_o = 1'b1;
-			cmderror_o = dm_CmdErrNotSupported;
-		end
-		if (exception) begin
-			cmderror_valid_o = 1'b1;
-			cmderror_o = dm_CmdErrorException;
-		end
-	end
-	wire [63:0] word_mux;
-	assign word_mux = (fwd_rom_q ? rom_rdata : rdata_q);
-	generate
-		if (BusWidth == 64) begin : gen_word_mux64
-			assign rdata_o = word_mux;
-		end
-		else begin : gen_word_mux32
-			assign rdata_o = (word_enable32_q ? word_mux[32+:32] : word_mux[0+:32]);
-		end
-	endgenerate
-	reg [63:0] data_bits;
-	reg [63:0] rdata;
-	localparam [63:0] dm_HaltAddress = 64'h0000000000000800;
-	localparam [63:0] dm_ResumeAddress = dm_HaltAddress + 4;
-	function automatic [31:0] dm_jal;
-		input reg [4:0] rd;
-		input reg [20:0] imm;
-		dm_jal = {imm[20], imm[10:1], imm[11], imm[19:12], rd, 7'h6f};
-	endfunction
-	localparam [7:0] dm_AccessRegister = 8'h00;
-	function automatic [20:0] sv2v_cast_21;
-		input reg [20:0] inp;
-		sv2v_cast_21 = inp;
-	endfunction
-	function automatic [$clog2(5'h08) - 1:0] sv2v_cast_2F779;
-		input reg [$clog2(5'h08) - 1:0] inp;
-		sv2v_cast_2F779 = inp;
-	endfunction
-	function automatic [2:0] sv2v_cast_3;
-		input reg [2:0] inp;
-		sv2v_cast_3 = inp;
-	endfunction
-	function automatic [11:0] sv2v_cast_9D1F2;
-		input reg [11:0] inp;
-		sv2v_cast_9D1F2 = inp;
-	endfunction
-	always @(*) begin : p_rw_logic
-		halted_d_aligned = sv2v_cast_C60B8(halted_q);
-		resuming_d_aligned = sv2v_cast_C60B8(resuming_q);
-		rdata_d = rdata_q;
-		data_bits = data_i;
-		rdata = {64 {1'sb0}};
-		data_valid_o = 1'b0;
-		exception = 1'b0;
-		halted_aligned = {NrHartsAligned {1'sb0}};
-		going = 1'b0;
-		if (clear_resumeack_i)
-			resuming_d_aligned[hartsel] = 1'b0;
-		if (req_i)
-			if (we_i) begin
-				if (addr_i[11:0] == HaltedAddr) begin
-					halted_aligned[wdata_hartsel] = 1'b1;
-					halted_d_aligned[wdata_hartsel] = 1'b1;
-				end
-				else if (addr_i[11:0] == GoingAddr)
-					going = 1'b1;
-				else if (addr_i[11:0] == ResumingAddr) begin
-					halted_d_aligned[wdata_hartsel] = 1'b0;
-					resuming_d_aligned[wdata_hartsel] = 1'b1;
-				end
-				else if (addr_i[11:0] == ExceptionAddr)
-					exception = 1'b1;
-				else if ((DataBaseAddr <= addr_i[11:0]) && (DataEndAddr >= addr_i[11:0])) begin
-					data_valid_o = 1'b1;
-					begin : sv2v_autoblock_103
-						reg signed [31:0] i;
-						for (i = 0; i < (BusWidth / 8); i = i + 1)
-							if (be_i[i])
-								data_bits[i * 8+:8] = wdata_i[i * 8+:8];
-					end
-				end
-			end
-			else if (addr_i[11:0] == WhereToAddr) begin
-				if (resumereq_wdata_aligned[wdata_hartsel])
-					rdata_d = {32'b00000000000000000000000000000000, dm_jal(1'sb0, sv2v_cast_21(dm_ResumeAddress[11:0]) - sv2v_cast_21(WhereToAddr))};
-				if (cmdbusy_o)
-					if (((cmd_i[31-:8] == dm_AccessRegister) && !ac_ar[17]) && ac_ar[18])
-						rdata_d = {32'b00000000000000000000000000000000, dm_jal(1'sb0, sv2v_cast_21(ProgBufBaseAddr) - sv2v_cast_21(WhereToAddr))};
-					else
-						rdata_d = {32'b00000000000000000000000000000000, dm_jal(1'sb0, sv2v_cast_21(AbstractCmdBaseAddr) - sv2v_cast_21(WhereToAddr))};
-			end
-			else if ((DataBaseAddr <= addr_i[11:0]) && (DataEndAddr >= addr_i[11:0]))
-				rdata_d = {data_i[sv2v_cast_2F779((addr_i[11:3] - DataBaseAddr[11:3]) + 1'b1) * 32+:32], data_i[sv2v_cast_2F779(addr_i[11:3] - DataBaseAddr[11:3]) * 32+:32]};
-			else if ((ProgBufBaseAddr <= addr_i[11:0]) && (ProgBufEndAddr >= addr_i[11:0]))
-				rdata_d = progbuf[sv2v_cast_2F779(addr_i[11:3] - ProgBufBaseAddr[11:3]) * 64+:64];
-			else if ((AbstractCmdBaseAddr <= addr_i[11:0]) && (AbstractCmdEndAddr >= addr_i[11:0]))
-				rdata_d = abstract_cmd[sv2v_cast_3(addr_i[11:3] - AbstractCmdBaseAddr[11:3]) * 64+:64];
-			else if ((FlagsBaseAddr <= addr_i[11:0]) && (FlagsEndAddr >= addr_i[11:0])) begin
-				if (({addr_i[11:3], 3'b000} - FlagsBaseAddr[11:0]) == (sv2v_cast_9D1F2(hartsel) & {{9 {1'b1}}, 3'b000}))
-					rdata[(sv2v_cast_9D1F2(hartsel) & sv2v_cast_9D1F2(3'b111)) * 8+:8] = {6'b000000, resume, go};
-				rdata_d = rdata;
-			end
-		data_o = data_bits;
-	end
-	function automatic [31:0] dm_auipc;
-		input reg [4:0] rd;
-		input reg [20:0] imm;
-		dm_auipc = {imm[20], imm[10:1], imm[11], imm[19:12], rd, 7'h17};
-	endfunction
-	function automatic [31:0] dm_csrr;
-		input reg [11:0] csr;
-		input reg [4:0] dest;
-		dm_csrr = {csr, 5'h00, 3'h2, dest, 7'h73};
-	endfunction
-	function automatic [31:0] dm_csrw;
-		input reg [11:0] csr;
-		input reg [4:0] rs1;
-		dm_csrw = {csr, rs1, 3'h1, 5'h00, 7'h73};
-	endfunction
-	function automatic [31:0] dm_ebreak;
-		input reg _sv2v_unused;
-		dm_ebreak = 32'h00100073;
-	endfunction
-	function automatic [31:0] dm_float_load;
-		input reg [2:0] size;
-		input reg [4:0] dest;
-		input reg [4:0] base;
-		input reg [11:0] offset;
-		dm_float_load = {offset[11:0], base, size, dest, 7'b0000111};
-	endfunction
-	function automatic [31:0] dm_float_store;
-		input reg [2:0] size;
-		input reg [4:0] src;
-		input reg [4:0] base;
-		input reg [11:0] offset;
-		dm_float_store = {offset[11:5], src, base, size, offset[4:0], 7'b0100111};
-	endfunction
-	function automatic [31:0] dm_illegal;
-		input reg _sv2v_unused;
-		dm_illegal = 32'h00000000;
-	endfunction
-	function automatic [31:0] dm_load;
-		input reg [2:0] size;
-		input reg [4:0] dest;
-		input reg [4:0] base;
-		input reg [11:0] offset;
-		dm_load = {offset[11:0], base, size, dest, 7'h03};
-	endfunction
-	function automatic [31:0] dm_nop;
-		input reg _sv2v_unused;
-		dm_nop = 32'h00000013;
-	endfunction
-	function automatic [31:0] dm_slli;
-		input reg [4:0] rd;
-		input reg [4:0] rs1;
-		input reg [5:0] shamt;
-		dm_slli = {6'b000000, shamt[5:0], rs1, 3'h1, rd, 7'h13};
-	endfunction
-	function automatic [31:0] dm_srli;
-		input reg [4:0] rd;
-		input reg [4:0] rs1;
-		input reg [5:0] shamt;
-		dm_srli = {6'b000000, shamt[5:0], rs1, 3'h5, rd, 7'h13};
-	endfunction
-	function automatic [31:0] dm_store;
-		input reg [2:0] size;
-		input reg [4:0] src;
-		input reg [4:0] base;
-		input reg [11:0] offset;
-		dm_store = {offset[11:5], src, base, size, offset[4:0], 7'h23};
-	endfunction
-	localparam [11:0] dm_CSR_DSCRATCH0 = 12'h7b2;
-	localparam [11:0] dm_CSR_DSCRATCH1 = 12'h7b3;
-	function automatic [31:0] sv2v_cast_32;
-		input reg [31:0] inp;
-		sv2v_cast_32 = inp;
-	endfunction
-	always @(*) begin : p_abstract_cmd_rom
-		unsupported_command = 1'b0;
-		abstract_cmd[31-:32] = dm_illegal(0);
-		abstract_cmd[63-:32] = (HasSndScratch ? dm_auipc(5'd10, 1'sb0) : dm_nop(0));
-		abstract_cmd[95-:32] = (HasSndScratch ? dm_srli(5'd10, 5'd10, 6'd12) : dm_nop(0));
-		abstract_cmd[127-:32] = (HasSndScratch ? dm_slli(5'd10, 5'd10, 6'd12) : dm_nop(0));
-		abstract_cmd[159-:32] = dm_nop(0);
-		abstract_cmd[191-:32] = dm_nop(0);
-		abstract_cmd[223-:32] = dm_nop(0);
-		abstract_cmd[255-:32] = dm_nop(0);
-		abstract_cmd[287-:32] = (HasSndScratch ? dm_csrr(dm_CSR_DSCRATCH1, 5'd10) : dm_nop(0));
-		abstract_cmd[319-:32] = dm_ebreak(0);
-		abstract_cmd[320+:192] = {192 {1'sb0}};
-		case (cmd_i[31-:8])
-			dm_AccessRegister: begin
-				if (((sv2v_cast_32(ac_ar[22-:3]) < MaxAar) && ac_ar[17]) && ac_ar[16]) begin
-					abstract_cmd[31-:32] = (HasSndScratch ? dm_csrw(dm_CSR_DSCRATCH1, 5'd10) : dm_nop(0));
-					if (ac_ar[15:14] != {2 {1'sb0}}) begin
-						abstract_cmd[31-:32] = dm_ebreak(0);
-						unsupported_command = 1'b1;
-					end
-					else if (((HasSndScratch && ac_ar[12]) && !ac_ar[5]) && (ac_ar[4:0] == 5'd10)) begin
-						abstract_cmd[159-:32] = dm_csrw(dm_CSR_DSCRATCH0, 5'd8);
-						abstract_cmd[191-:32] = dm_load(ac_ar[22-:3], 5'd8, LoadBaseAddr, dm_DataAddr);
-						abstract_cmd[223-:32] = dm_csrw(dm_CSR_DSCRATCH1, 5'd8);
-						abstract_cmd[255-:32] = dm_csrr(dm_CSR_DSCRATCH0, 5'd8);
-					end
-					else if (ac_ar[12]) begin
-						if (ac_ar[5])
-							abstract_cmd[159-:32] = dm_float_load(ac_ar[22-:3], ac_ar[4:0], LoadBaseAddr, dm_DataAddr);
-						else
-							abstract_cmd[159-:32] = dm_load(ac_ar[22-:3], ac_ar[4:0], LoadBaseAddr, dm_DataAddr);
-					end
-					else begin
-						abstract_cmd[159-:32] = dm_csrw(dm_CSR_DSCRATCH0, 5'd8);
-						abstract_cmd[191-:32] = dm_load(ac_ar[22-:3], 5'd8, LoadBaseAddr, dm_DataAddr);
-						abstract_cmd[223-:32] = dm_csrw(ac_ar[11:0], 5'd8);
-						abstract_cmd[255-:32] = dm_csrr(dm_CSR_DSCRATCH0, 5'd8);
-					end
-				end
-				else if (((sv2v_cast_32(ac_ar[22-:3]) < MaxAar) && ac_ar[17]) && !ac_ar[16]) begin
-					abstract_cmd[31-:32] = (HasSndScratch ? dm_csrw(dm_CSR_DSCRATCH1, LoadBaseAddr) : dm_nop(0));
-					if (ac_ar[15:14] != {2 {1'sb0}}) begin
-						abstract_cmd[31-:32] = dm_ebreak(0);
-						unsupported_command = 1'b1;
-					end
-					else if (((HasSndScratch && ac_ar[12]) && !ac_ar[5]) && (ac_ar[4:0] == 5'd10)) begin
-						abstract_cmd[159-:32] = dm_csrw(dm_CSR_DSCRATCH0, 5'd8);
-						abstract_cmd[191-:32] = dm_csrr(dm_CSR_DSCRATCH1, 5'd8);
-						abstract_cmd[223-:32] = dm_store(ac_ar[22-:3], 5'd8, LoadBaseAddr, dm_DataAddr);
-						abstract_cmd[255-:32] = dm_csrr(dm_CSR_DSCRATCH0, 5'd8);
-					end
-					else if (ac_ar[12]) begin
-						if (ac_ar[5])
-							abstract_cmd[159-:32] = dm_float_store(ac_ar[22-:3], ac_ar[4:0], LoadBaseAddr, dm_DataAddr);
-						else
-							abstract_cmd[159-:32] = dm_store(ac_ar[22-:3], ac_ar[4:0], LoadBaseAddr, dm_DataAddr);
-					end
-					else begin
-						abstract_cmd[159-:32] = dm_csrw(dm_CSR_DSCRATCH0, 5'd8);
-						abstract_cmd[191-:32] = dm_csrr(ac_ar[11:0], 5'd8);
-						abstract_cmd[223-:32] = dm_store(ac_ar[22-:3], 5'd8, LoadBaseAddr, dm_DataAddr);
-						abstract_cmd[255-:32] = dm_csrr(dm_CSR_DSCRATCH0, 5'd8);
-					end
-				end
-				else if ((sv2v_cast_32(ac_ar[22-:3]) >= MaxAar) || (ac_ar[19] == 1'b1)) begin
-					abstract_cmd[31-:32] = dm_ebreak(0);
-					unsupported_command = 1'b1;
-				end
-				if (ac_ar[18] && !unsupported_command)
-					abstract_cmd[319-:32] = dm_nop(0);
-			end
-			default: begin
-				abstract_cmd[31-:32] = dm_ebreak(0);
-				unsupported_command = 1'b1;
-			end
-		endcase
-	end
-	wire [63:0] rom_addr;
-	function automatic [63:0] sv2v_cast_64;
-		input reg [63:0] inp;
-		sv2v_cast_64 = inp;
-	endfunction
-	assign rom_addr = sv2v_cast_64(addr_i);
-	generate
-		if (HasSndScratch) begin : gen_rom_snd_scratch
-			debug_rom i_debug_rom(
-				.clk_i(clk_i),
-				.req_i(req_i),
-				.addr_i(rom_addr),
-				.rdata_o(rom_rdata)
-			);
-		end
-		else begin : gen_rom_one_scratch
-			debug_rom_one_scratch i_debug_rom(
-				.clk_i(clk_i),
-				.req_i(req_i),
-				.addr_i(rom_addr),
-				.rdata_o(rom_rdata)
-			);
-		end
-	endgenerate
-	assign fwd_rom_d = addr_i[11:0] >= dm_HaltAddress[11:0];
-	always @(posedge clk_i or negedge rst_ni) begin : p_regs
-		if (!rst_ni) begin
-			fwd_rom_q <= 1'b0;
-			rdata_q <= {64 {1'sb0}};
-			state_q <= Idle;
-			word_enable32_q <= 1'b0;
-		end
-		else begin
-			fwd_rom_q <= fwd_rom_d;
-			rdata_q <= rdata_d;
-			state_q <= state_d;
-			word_enable32_q <= addr_i[2];
-		end
-	end
-	always @(posedge clk_i or negedge rst_ni)
-		if (!rst_ni) begin
-			halted_q <= 1'b0;
-			resuming_q <= 1'b0;
-		end
-		else begin
-			halted_q <= SelectableHarts & halted_d;
-			resuming_q <= SelectableHarts & resuming_d;
-		end
-endmodule
-module dm_sba (
-	clk_i,
-	rst_ni,
-	dmactive_i,
-	master_req_o,
-	master_add_o,
-	master_we_o,
-	master_wdata_o,
-	master_be_o,
-	master_gnt_i,
-	master_r_valid_i,
-	master_r_rdata_i,
-	sbaddress_i,
-	sbaddress_write_valid_i,
-	sbreadonaddr_i,
-	sbaddress_o,
-	sbautoincrement_i,
-	sbaccess_i,
-	sbreadondata_i,
-	sbdata_i,
-	sbdata_read_valid_i,
-	sbdata_write_valid_i,
-	sbdata_o,
-	sbdata_valid_o,
-	sbbusy_o,
-	sberror_valid_o,
-	sberror_o
-);
-	parameter [31:0] BusWidth = 32;
-	parameter [0:0] ReadByteEnable = 1;
-	input wire clk_i;
-	input wire rst_ni;
-	input wire dmactive_i;
-	output wire master_req_o;
-	output wire [BusWidth - 1:0] master_add_o;
-	output wire master_we_o;
-	output wire [BusWidth - 1:0] master_wdata_o;
-	output wire [(BusWidth / 8) - 1:0] master_be_o;
-	input wire master_gnt_i;
-	input wire master_r_valid_i;
-	input wire [BusWidth - 1:0] master_r_rdata_i;
-	input wire [BusWidth - 1:0] sbaddress_i;
-	input wire sbaddress_write_valid_i;
-	input wire sbreadonaddr_i;
-	output reg [BusWidth - 1:0] sbaddress_o;
-	input wire sbautoincrement_i;
-	input wire [2:0] sbaccess_i;
-	input wire sbreadondata_i;
-	input wire [BusWidth - 1:0] sbdata_i;
-	input wire sbdata_read_valid_i;
-	input wire sbdata_write_valid_i;
-	output wire [BusWidth - 1:0] sbdata_o;
-	output wire sbdata_valid_o;
-	output wire sbbusy_o;
-	output reg sberror_valid_o;
-	output reg [2:0] sberror_o;
-	reg [2:0] state_d;
-	reg [2:0] state_q;
-	reg [BusWidth - 1:0] address;
-	reg req;
-	wire gnt;
-	reg we;
-	reg [(BusWidth / 8) - 1:0] be;
-	reg [(BusWidth / 8) - 1:0] be_mask;
-	reg [$clog2(BusWidth / 8) - 1:0] be_idx;
-	localparam [2:0] dm_Idle = 0;
-	assign sbbusy_o = state_q != dm_Idle;
-	function automatic signed [31:0] sv2v_cast_32_signed;
-		input reg signed [31:0] inp;
-		sv2v_cast_32_signed = inp;
-	endfunction
-	always @(*) begin : p_be_mask
-		be_mask = {BusWidth / 8 {1'sb0}};
-		case (sbaccess_i)
-			3'b000: be_mask[be_idx] = 1'b1;
-			3'b001: be_mask[sv2v_cast_32_signed({be_idx[$clog2(BusWidth / 8) - 1:1], 1'b0})+:2] = {2 {1'sb1}};
-			3'b010:
-				if (BusWidth == 32'd64)
-					be_mask[sv2v_cast_32_signed({be_idx[$clog2(BusWidth / 8) - 1], 2'h0})+:4] = {4 {1'sb1}};
-				else
-					be_mask = {BusWidth / 8 {1'sb1}};
-			3'b011: be_mask = {BusWidth / 8 {1'sb1}};
-			default:
-				;
-		endcase
-	end
-	localparam [2:0] dm_Read = 1;
-	localparam [2:0] dm_WaitRead = 3;
-	localparam [2:0] dm_WaitWrite = 4;
-	localparam [2:0] dm_Write = 2;
-	always @(*) begin : p_fsm
-		req = 1'b0;
-		address = sbaddress_i;
-		we = 1'b0;
-		be = {BusWidth / 8 {1'sb0}};
-		be_idx = sbaddress_i[$clog2(BusWidth / 8) - 1:0];
-		sberror_o = {3 {1'sb0}};
-		sberror_valid_o = 1'b0;
-		sbaddress_o = sbaddress_i;
-		state_d = state_q;
-		case (state_q)
-			dm_Idle: begin
-				if (sbaddress_write_valid_i && sbreadonaddr_i)
-					state_d = dm_Read;
-				if (sbdata_write_valid_i)
-					state_d = dm_Write;
-				if (sbdata_read_valid_i && sbreadondata_i)
-					state_d = dm_Read;
-			end
-			dm_Read: begin
-				req = 1'b1;
-				if (ReadByteEnable)
-					be = be_mask;
-				if (gnt)
-					state_d = dm_WaitRead;
-			end
-			dm_Write: begin
-				req = 1'b1;
-				we = 1'b1;
-				be = be_mask;
-				if (gnt)
-					state_d = dm_WaitWrite;
-			end
-			dm_WaitRead:
-				if (sbdata_valid_o) begin
-					state_d = dm_Idle;
-					if (sbautoincrement_i)
-						sbaddress_o = sbaddress_i + (32'h00000001 << sbaccess_i);
-				end
-			dm_WaitWrite:
-				if (sbdata_valid_o) begin
-					state_d = dm_Idle;
-					if (sbautoincrement_i)
-						sbaddress_o = sbaddress_i + (32'h00000001 << sbaccess_i);
-				end
-			default: state_d = dm_Idle;
-		endcase
-		if ((sbaccess_i > 3) && (state_q != dm_Idle)) begin
-			req = 1'b0;
-			state_d = dm_Idle;
-			sberror_valid_o = 1'b1;
-			sberror_o = 3'd3;
-		end
-	end
-	always @(posedge clk_i or negedge rst_ni) begin : p_regs
-		if (!rst_ni)
-			state_q <= dm_Idle;
-		else
-			state_q <= state_d;
-	end
-	assign master_req_o = req;
-	assign master_add_o = address[BusWidth - 1:0];
-	assign master_we_o = we;
-	assign master_wdata_o = sbdata_i[BusWidth - 1:0];
-	assign master_be_o = be[(BusWidth / 8) - 1:0];
-	assign gnt = master_gnt_i;
-	assign sbdata_valid_o = master_r_valid_i;
-	assign sbdata_o = master_r_rdata_i[BusWidth - 1:0];
-endmodule
 module fifo_async (
 	clk_wr_i,
 	rst_wr_ni,
@@ -12736,7 +11079,7 @@
 	assign fifo_incr_rptr = rvalid_o & rready_i;
 	always @(posedge clk_wr_i or negedge rst_wr_ni)
 		if (!rst_wr_ni)
-			fifo_wptr <= {PTR_WIDTH {1'b0}};
+			fifo_wptr <= {PTR_WIDTH {1'sb0}};
 		else if (fifo_incr_wptr)
 			if (fifo_wptr[PTR_WIDTH - 2:0] == DepthMinus1)
 				fifo_wptr <= {~fifo_wptr[PTR_WIDTH - 1], {PTR_WIDTH - 1 {1'b0}}};
@@ -12759,7 +11102,7 @@
 	endfunction
 	always @(posedge clk_wr_i or negedge rst_wr_ni)
 		if (!rst_wr_ni)
-			fifo_wptr_gray <= {PTR_WIDTH {1'b0}};
+			fifo_wptr_gray <= {PTR_WIDTH {1'sb0}};
 		else if (fifo_incr_wptr)
 			if (fifo_wptr[PTR_WIDTH - 2:0] == DepthMinus1)
 				fifo_wptr_gray <= dec2gray({~fifo_wptr[PTR_WIDTH - 1], {PTR_WIDTH - 1 {1'b0}}});
@@ -12782,7 +11125,7 @@
 		reg unused_decsub_msb;
 		begin
 			dec_tmp[PTR_WIDTH - 2] = grayval[PTR_WIDTH - 2];
-			begin : sv2v_autoblock_104
+			begin : sv2v_autoblock_106
 				reg signed [31:0] i;
 				for (i = PTR_WIDTH - 3; i >= 0; i = i - 1)
 					dec_tmp[i] = dec_tmp[i + 1] ^ grayval[i];
@@ -12797,7 +11140,7 @@
 	assign fifo_wptr_sync_combi = gray2dec(fifo_wptr_gray_sync);
 	always @(posedge clk_rd_i or negedge rst_rd_ni)
 		if (!rst_rd_ni)
-			fifo_rptr <= {PTR_WIDTH {1'b0}};
+			fifo_rptr <= {PTR_WIDTH {1'sb0}};
 		else if (fifo_incr_rptr)
 			if (fifo_rptr[PTR_WIDTH - 2:0] == DepthMinus1)
 				fifo_rptr <= {~fifo_rptr[PTR_WIDTH - 1], {PTR_WIDTH - 1 {1'b0}}};
@@ -12805,7 +11148,7 @@
 				fifo_rptr <= fifo_rptr + {{PTR_WIDTH - 1 {1'b0}}, 1'b1};
 	always @(posedge clk_rd_i or negedge rst_rd_ni)
 		if (!rst_rd_ni)
-			fifo_rptr_gray <= {PTR_WIDTH {1'b0}};
+			fifo_rptr_gray <= {PTR_WIDTH {1'sb0}};
 		else if (fifo_incr_rptr)
 			if (fifo_rptr[PTR_WIDTH - 2:0] == DepthMinus1)
 				fifo_rptr_gray <= dec2gray({~fifo_rptr[PTR_WIDTH - 1], {PTR_WIDTH - 1 {1'b0}}});
@@ -12819,7 +11162,7 @@
 	);
 	always @(posedge clk_wr_i or negedge rst_wr_ni)
 		if (!rst_wr_ni)
-			fifo_rptr_sync <= {PTR_WIDTH {1'b0}};
+			fifo_rptr_sync <= {PTR_WIDTH {1'sb0}};
 		else
 			fifo_rptr_sync <= gray2dec(fifo_rptr_gray_sync);
 	assign full_wclk = fifo_wptr == (fifo_rptr_sync ^ {1'b1, {PTR_WIDTH - 1 {1'b0}}});
@@ -12849,7 +11192,9 @@
 	assign rdepth_o = (full_rclk ? sv2v_cast_703F8(Depth) : (wptr_sync_msb == rptr_msb ? sv2v_cast_703F8(wptr_sync_value) - sv2v_cast_703F8(rptr_value) : (sv2v_cast_703F8(Depth) - sv2v_cast_703F8(rptr_value)) + sv2v_cast_703F8(wptr_sync_value)));
 	reg [Width - 1:0] storage [0:Depth - 1];
 	always @(posedge clk_wr_i)
-		if (fifo_incr_wptr)
+		if (~rst_wr_ni)
+			storage[fifo_wptr[PTR_WIDTH - 2:0]] <= {Width {1'sb0}};
+		else if (fifo_incr_wptr)
 			storage[fifo_wptr[PTR_WIDTH - 2:0]] <= wdata_i;
 	assign rdata_o = storage[fifo_rptr[PTR_WIDTH - 2:0]];
 endmodule
@@ -12932,10 +11277,10 @@
 			assign rvalid_o = ~empty & ~under_rst;
 			always @(posedge clk_i or negedge rst_ni)
 				if (!rst_ni)
-					fifo_wptr <= {PTR_WIDTH {1'b0}};
+					fifo_wptr <= {PTR_WIDTH {1'sb0}};
 				else if (clr_i)
 					fifo_wptr <= {PTR_WIDTH {1'b0}};
-				else if (fifo_incr_wptr) begin : sv2v_autoblock_105
+				else if (fifo_incr_wptr) begin : sv2v_autoblock_107
 					reg [((PTR_WIDTH - 2) >= 0 ? PTR_WIDTH - 1 : 3 - PTR_WIDTH) - 1:0] sv2v_tmp_cast;
 					sv2v_tmp_cast = Depth - 1;
 					if (fifo_wptr[PTR_WIDTH - 2:0] == sv2v_tmp_cast)
@@ -12945,10 +11290,10 @@
 				end
 			always @(posedge clk_i or negedge rst_ni)
 				if (!rst_ni)
-					fifo_rptr <= {PTR_WIDTH {1'b0}};
+					fifo_rptr <= {PTR_WIDTH {1'sb0}};
 				else if (clr_i)
 					fifo_rptr <= {PTR_WIDTH {1'b0}};
-				else if (fifo_incr_rptr) begin : sv2v_autoblock_106
+				else if (fifo_incr_rptr) begin : sv2v_autoblock_108
 					reg [((PTR_WIDTH - 2) >= 0 ? PTR_WIDTH - 1 : 3 - PTR_WIDTH) - 1:0] sv2v_tmp_cast_1;
 					sv2v_tmp_cast_1 = Depth - 1;
 					if (fifo_rptr[PTR_WIDTH - 2:0] == sv2v_tmp_cast_1)
@@ -12963,13 +11308,17 @@
 			if (Depth == 1) begin : gen_depth_eq1
 				assign storage_rdata = storage[0+:Width];
 				always @(posedge clk_i)
-					if (fifo_incr_wptr)
+					if (~rst_ni)
+						storage[0+:Width] <= {Width {1'sb0}};
+					else if (fifo_incr_wptr)
 						storage[0+:Width] <= wdata_i;
 			end
 			else begin : gen_depth_gt1
 				assign storage_rdata = storage[fifo_rptr[PTR_WIDTH - 2:0] * Width+:Width];
 				always @(posedge clk_i)
-					if (fifo_incr_wptr)
+					if (~rst_ni)
+						storage[fifo_wptr[PTR_WIDTH - 2:0] * Width+:Width] <= {Width {1'sb0}};
+					else if (fifo_incr_wptr)
 						storage[fifo_wptr[PTR_WIDTH - 2:0] * Width+:Width] <= wdata_i;
 			end
 			wire [Width - 1:0] rdata_int;
@@ -13016,34 +11365,34 @@
 	busy_o
 );
 	parameter [31:0] AuxType_AUX_BITS = 0;
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	parameter [0:0] FpFmtConfig = 1'sb1;
-	localparam [31:0] fpnew_pkg_NUM_INT_FORMATS = 1;
-	parameter [0:0] IntFmtConfig = 1'sb1;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	parameter [0:3] FpFmtConfig = 1'sb1;
+	localparam [31:0] fpnew_pkg_NUM_INT_FORMATS = 4;
+	parameter [0:3] IntFmtConfig = 1'sb1;
 	parameter [31:0] NumPipeRegs = 0;
 	localparam [1:0] fpnew_pkg_BEFORE = 0;
 	parameter [1:0] PipeConfig = fpnew_pkg_BEFORE;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	localparam [63:0] fpnew_pkg_FP_ENCODINGS = 64'h0000000800000017;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	localparam [255:0] fpnew_pkg_FP_ENCODINGS = 256'h00000008000000170000000b00000034000000050000000a0000000500000002;
 	function automatic [31:0] fpnew_pkg_fp_width;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32]) + 1;
+		input reg [1:0] fmt;
+		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32]) + 1;
 	endfunction
 	function automatic signed [31:0] fpnew_pkg_maximum;
 		input reg signed [31:0] a;
 		input reg signed [31:0] b;
 		fpnew_pkg_maximum = (a > b ? a : b);
 	endfunction
-	function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_9359B;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+	function automatic [1:0] sv2v_cast_9359B;
+		input reg [1:0] inp;
 		sv2v_cast_9359B = inp;
 	endfunction
 	function automatic [31:0] fpnew_pkg_max_fp_width;
-		input reg [0:0] cfg;
+		input reg [0:3] cfg;
 		reg [31:0] res;
 		begin
 			res = 0;
-			begin : sv2v_autoblock_107
+			begin : sv2v_autoblock_109
 				reg [31:0] i;
 				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1)
 					if (cfg[i])
@@ -13052,24 +11401,30 @@
 			fpnew_pkg_max_fp_width = res;
 		end
 	endfunction
-	localparam [31:0] fpnew_pkg_INT_FORMAT_BITS = 0;
-	localparam [fpnew_pkg_INT_FORMAT_BITS - 1:0] fpnew_pkg_INT32 = 0;
+	localparam [31:0] fpnew_pkg_INT_FORMAT_BITS = 2;
+	localparam [1:0] fpnew_pkg_INT16 = 1;
+	localparam [1:0] fpnew_pkg_INT32 = 2;
+	localparam [1:0] fpnew_pkg_INT64 = 3;
+	localparam [1:0] fpnew_pkg_INT8 = 0;
 	function automatic [31:0] fpnew_pkg_int_width;
-		input reg [fpnew_pkg_INT_FORMAT_BITS - 1:0] ifmt;
+		input reg [1:0] ifmt;
 		case (ifmt)
+			fpnew_pkg_INT8: fpnew_pkg_int_width = 8;
+			fpnew_pkg_INT16: fpnew_pkg_int_width = 16;
 			fpnew_pkg_INT32: fpnew_pkg_int_width = 32;
+			fpnew_pkg_INT64: fpnew_pkg_int_width = 64;
 		endcase
 	endfunction
-	function automatic [fpnew_pkg_INT_FORMAT_BITS - 1:0] sv2v_cast_D812A;
-		input reg [fpnew_pkg_INT_FORMAT_BITS - 1:0] inp;
+	function automatic [1:0] sv2v_cast_D812A;
+		input reg [1:0] inp;
 		sv2v_cast_D812A = inp;
 	endfunction
 	function automatic [31:0] fpnew_pkg_max_int_width;
-		input reg [0:0] cfg;
+		input reg [0:3] cfg;
 		reg [31:0] res;
 		begin
 			res = 0;
-			begin : sv2v_autoblock_108
+			begin : sv2v_autoblock_110
 				reg signed [31:0] ifmt;
 				for (ifmt = 0; ifmt < fpnew_pkg_NUM_INT_FORMATS; ifmt = ifmt + 1)
 					if (cfg[ifmt])
@@ -13083,14 +11438,14 @@
 	input wire clk_i;
 	input wire rst_ni;
 	input wire [WIDTH - 1:0] operands_i;
-	input wire [0:0] is_boxed_i;
+	input wire [3:0] is_boxed_i;
 	input wire [2:0] rnd_mode_i;
 	localparam [31:0] fpnew_pkg_OP_BITS = 4;
 	input wire [3:0] op_i;
 	input wire op_mod_i;
-	input wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] src_fmt_i;
-	input wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] dst_fmt_i;
-	input wire [fpnew_pkg_INT_FORMAT_BITS - 1:0] int_fmt_i;
+	input wire [1:0] src_fmt_i;
+	input wire [1:0] dst_fmt_i;
+	input wire [1:0] int_fmt_i;
 	input wire tag_i;
 	input wire [AuxType_AUX_BITS - 1:0] aux_i;
 	input wire in_valid_i;
@@ -13117,19 +11472,19 @@
 	localparam [31:0] NUM_INT_FORMATS = fpnew_pkg_NUM_INT_FORMATS;
 	localparam [31:0] MAX_INT_WIDTH = fpnew_pkg_max_int_width(IntFmtConfig);
 	function automatic [31:0] fpnew_pkg_exp_bits;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_exp_bits = fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32];
+		input reg [1:0] fmt;
+		fpnew_pkg_exp_bits = fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32];
 	endfunction
 	function automatic [31:0] fpnew_pkg_man_bits;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_man_bits = fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32];
+		input reg [1:0] fmt;
+		fpnew_pkg_man_bits = fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32];
 	endfunction
 	function automatic [63:0] fpnew_pkg_super_format;
-		input reg [0:0] cfg;
+		input reg [0:3] cfg;
 		reg [63:0] res;
 		begin
 			res = {64 {1'sb0}};
-			begin : sv2v_autoblock_109
+			begin : sv2v_autoblock_111
 				reg [31:0] fmt;
 				for (fmt = 0; fmt < fpnew_pkg_NUM_FP_FORMATS; fmt = fmt + 1)
 					if (cfg[fmt]) begin
@@ -13154,19 +11509,19 @@
 	localparam [1:0] fpnew_pkg_AFTER = 1;
 	localparam NUM_OUT_REGS = (PipeConfig == fpnew_pkg_AFTER ? NumPipeRegs : (PipeConfig == fpnew_pkg_DISTRIBUTED ? NumPipeRegs / 3 : 0));
 	wire [WIDTH - 1:0] operands_q;
-	wire [0:0] is_boxed_q;
+	wire [3:0] is_boxed_q;
 	wire op_mod_q;
-	wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] src_fmt_q;
-	wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] dst_fmt_q;
-	wire [fpnew_pkg_INT_FORMAT_BITS - 1:0] int_fmt_q;
+	wire [1:0] src_fmt_q;
+	wire [1:0] dst_fmt_q;
+	wire [1:0] int_fmt_q;
 	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * WIDTH) + ((NUM_INP_REGS * WIDTH) - 1) : ((NUM_INP_REGS + 1) * WIDTH) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * WIDTH : 0)] inp_pipe_operands_q;
 	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0)] inp_pipe_is_boxed_q;
 	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0)] inp_pipe_rnd_mode_q;
 	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * fpnew_pkg_OP_BITS) + ((NUM_INP_REGS * fpnew_pkg_OP_BITS) - 1) : ((NUM_INP_REGS + 1) * fpnew_pkg_OP_BITS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * fpnew_pkg_OP_BITS : 0)] inp_pipe_op_q;
 	wire [0:NUM_INP_REGS] inp_pipe_op_mod_q;
-	wire [(0 >= NUM_INP_REGS ? -1 : -1):(0 >= NUM_INP_REGS ? 0 : 0)] inp_pipe_src_fmt_q;
-	wire [(0 >= NUM_INP_REGS ? -1 : -1):(0 >= NUM_INP_REGS ? 0 : 0)] inp_pipe_dst_fmt_q;
-	wire [(0 >= NUM_INP_REGS ? -1 : -1):(0 >= NUM_INP_REGS ? 0 : 0)] inp_pipe_int_fmt_q;
+	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS) + ((NUM_INP_REGS * fpnew_pkg_FP_FORMAT_BITS) - 1) : ((NUM_INP_REGS + 1) * fpnew_pkg_FP_FORMAT_BITS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * fpnew_pkg_FP_FORMAT_BITS : 0)] inp_pipe_src_fmt_q;
+	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS) + ((NUM_INP_REGS * fpnew_pkg_FP_FORMAT_BITS) - 1) : ((NUM_INP_REGS + 1) * fpnew_pkg_FP_FORMAT_BITS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * fpnew_pkg_FP_FORMAT_BITS : 0)] inp_pipe_dst_fmt_q;
+	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * fpnew_pkg_INT_FORMAT_BITS) + ((NUM_INP_REGS * fpnew_pkg_INT_FORMAT_BITS) - 1) : ((NUM_INP_REGS + 1) * fpnew_pkg_INT_FORMAT_BITS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * fpnew_pkg_INT_FORMAT_BITS : 0)] inp_pipe_int_fmt_q;
 	wire [0:NUM_INP_REGS] inp_pipe_tag_q;
 	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * AuxType_AUX_BITS) + ((NUM_INP_REGS * AuxType_AUX_BITS) - 1) : ((NUM_INP_REGS + 1) * AuxType_AUX_BITS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * AuxType_AUX_BITS : 0)] inp_pipe_aux_q;
 	wire [0:NUM_INP_REGS] inp_pipe_valid_q;
@@ -13176,9 +11531,9 @@
 	assign inp_pipe_rnd_mode_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * 3+:3] = rnd_mode_i;
 	assign inp_pipe_op_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * fpnew_pkg_OP_BITS+:fpnew_pkg_OP_BITS] = op_i;
 	assign inp_pipe_op_mod_q[0] = op_mod_i;
-	assign inp_pipe_src_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS] = src_fmt_i;
-	assign inp_pipe_dst_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS] = dst_fmt_i;
-	assign inp_pipe_int_fmt_q[0+:fpnew_pkg_INT_FORMAT_BITS] = int_fmt_i;
+	assign inp_pipe_src_fmt_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS] = src_fmt_i;
+	assign inp_pipe_dst_fmt_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS] = dst_fmt_i;
+	assign inp_pipe_int_fmt_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * fpnew_pkg_INT_FORMAT_BITS+:fpnew_pkg_INT_FORMAT_BITS] = int_fmt_i;
 	assign inp_pipe_tag_q[0] = tag_i;
 	assign inp_pipe_aux_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * AuxType_AUX_BITS+:AuxType_AUX_BITS] = aux_i;
 	assign inp_pipe_valid_q[0] = in_valid_i;
@@ -13194,9 +11549,9 @@
 	assign operands_q = inp_pipe_operands_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * WIDTH+:WIDTH];
 	assign is_boxed_q = inp_pipe_is_boxed_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * NUM_FORMATS+:NUM_FORMATS];
 	assign op_mod_q = inp_pipe_op_mod_q[NUM_INP_REGS];
-	assign src_fmt_q = inp_pipe_src_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS];
-	assign dst_fmt_q = inp_pipe_dst_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS];
-	assign int_fmt_q = inp_pipe_int_fmt_q[0+:fpnew_pkg_INT_FORMAT_BITS];
+	assign src_fmt_q = inp_pipe_src_fmt_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS];
+	assign dst_fmt_q = inp_pipe_dst_fmt_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS];
+	assign int_fmt_q = inp_pipe_int_fmt_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * fpnew_pkg_INT_FORMAT_BITS+:fpnew_pkg_INT_FORMAT_BITS];
 	wire src_is_int;
 	wire dst_is_int;
 	localparam [3:0] fpnew_pkg_I2F = 12;
@@ -13204,11 +11559,11 @@
 	localparam [3:0] fpnew_pkg_F2I = 11;
 	assign dst_is_int = inp_pipe_op_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * fpnew_pkg_OP_BITS+:fpnew_pkg_OP_BITS] == fpnew_pkg_F2I;
 	wire [INT_MAN_WIDTH - 1:0] encoded_mant;
-	wire [0:0] fmt_sign;
+	wire [3:0] fmt_sign;
 	wire signed [(NUM_FORMATS * INT_EXP_WIDTH) - 1:0] fmt_exponent;
 	wire [(NUM_FORMATS * INT_MAN_WIDTH) - 1:0] fmt_mantissa;
 	wire signed [(NUM_FORMATS * INT_EXP_WIDTH) - 1:0] fmt_shift_compensation;
-	wire [7:0] info;
+	wire [31:0] info;
 	reg [(NUM_INT_FORMATS * INT_MAN_WIDTH) - 1:0] ifmt_input_val;
 	wire int_sign;
 	wire [INT_MAN_WIDTH - 1:0] int_value;
@@ -13221,16 +11576,16 @@
 			sv2v_cast_32_signed = inp;
 		endfunction
 		for (fmt = 0; fmt < sv2v_cast_32_signed(NUM_FORMATS); fmt = fmt + 1) begin : fmt_init_inputs
-			function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_9359B;
-				input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_9359B;
+				input reg [1:0] inp;
 				sv2v_cast_9359B = inp;
 			endfunction
 			localparam [31:0] FP_WIDTH = fpnew_pkg_fp_width(sv2v_cast_9359B(fmt));
 			localparam [31:0] EXP_BITS = fpnew_pkg_exp_bits(sv2v_cast_9359B(fmt));
 			localparam [31:0] MAN_BITS = fpnew_pkg_man_bits(sv2v_cast_9359B(fmt));
 			if (FpFmtConfig[fmt]) begin : active_format
-				function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_9359B;
-					input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+				function automatic [1:0] sv2v_cast_9359B;
+					input reg [1:0] inp;
 					sv2v_cast_9359B = inp;
 				endfunction
 				fpnew_classifier #(
@@ -13262,8 +11617,8 @@
 	generate
 		genvar ifmt;
 		for (ifmt = 0; ifmt < sv2v_cast_32_signed(NUM_INT_FORMATS); ifmt = ifmt + 1) begin : gen_sign_extend_int
-			function automatic [fpnew_pkg_INT_FORMAT_BITS - 1:0] sv2v_cast_D812A;
-				input reg [fpnew_pkg_INT_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_D812A;
+				input reg [1:0] inp;
 				sv2v_cast_D812A = inp;
 			endfunction
 			localparam [31:0] INT_WIDTH = fpnew_pkg_int_width(sv2v_cast_D812A(ifmt));
@@ -13293,8 +11648,8 @@
 	wire signed [INT_EXP_WIDTH - 1:0] src_subnormal;
 	wire signed [INT_EXP_WIDTH - 1:0] src_offset;
 	function automatic [31:0] fpnew_pkg_bias;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_bias = $unsigned((2 ** (fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32] - 1)) - 1);
+		input reg [1:0] fmt;
+		fpnew_pkg_bias = $unsigned((2 ** (fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32] - 1)) - 1);
 	endfunction
 	assign src_bias = $signed(fpnew_pkg_bias(src_fmt_q));
 	assign src_exp = fmt_exponent[src_fmt_q * INT_EXP_WIDTH+:INT_EXP_WIDTH];
@@ -13334,9 +11689,9 @@
 	wire mant_is_zero_q;
 	wire op_mod_q2;
 	wire [2:0] rnd_mode_q;
-	wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] src_fmt_q2;
-	wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] dst_fmt_q2;
-	wire [fpnew_pkg_INT_FORMAT_BITS - 1:0] int_fmt_q2;
+	wire [1:0] src_fmt_q2;
+	wire [1:0] dst_fmt_q2;
+	wire [1:0] int_fmt_q2;
 	wire [0:NUM_MID_REGS] mid_pipe_input_sign_q;
 	wire signed [(0 >= NUM_MID_REGS ? ((1 - NUM_MID_REGS) * INT_EXP_WIDTH) + ((NUM_MID_REGS * INT_EXP_WIDTH) - 1) : ((NUM_MID_REGS + 1) * INT_EXP_WIDTH) - 1):(0 >= NUM_MID_REGS ? NUM_MID_REGS * INT_EXP_WIDTH : 0)] mid_pipe_input_exp_q;
 	wire [(0 >= NUM_MID_REGS ? ((1 - NUM_MID_REGS) * INT_MAN_WIDTH) + ((NUM_MID_REGS * INT_MAN_WIDTH) - 1) : ((NUM_MID_REGS + 1) * INT_MAN_WIDTH) - 1):(0 >= NUM_MID_REGS ? NUM_MID_REGS * INT_MAN_WIDTH : 0)] mid_pipe_input_mant_q;
@@ -13347,9 +11702,9 @@
 	wire [0:NUM_MID_REGS] mid_pipe_mant_zero_q;
 	wire [0:NUM_MID_REGS] mid_pipe_op_mod_q;
 	wire [(0 >= NUM_MID_REGS ? ((1 - NUM_MID_REGS) * 3) + ((NUM_MID_REGS * 3) - 1) : ((NUM_MID_REGS + 1) * 3) - 1):(0 >= NUM_MID_REGS ? NUM_MID_REGS * 3 : 0)] mid_pipe_rnd_mode_q;
-	wire [(0 >= NUM_MID_REGS ? -1 : -1):(0 >= NUM_MID_REGS ? 0 : 0)] mid_pipe_src_fmt_q;
-	wire [(0 >= NUM_MID_REGS ? -1 : -1):(0 >= NUM_MID_REGS ? 0 : 0)] mid_pipe_dst_fmt_q;
-	wire [(0 >= NUM_MID_REGS ? -1 : -1):(0 >= NUM_MID_REGS ? 0 : 0)] mid_pipe_int_fmt_q;
+	wire [(0 >= NUM_MID_REGS ? ((1 - NUM_MID_REGS) * fpnew_pkg_FP_FORMAT_BITS) + ((NUM_MID_REGS * fpnew_pkg_FP_FORMAT_BITS) - 1) : ((NUM_MID_REGS + 1) * fpnew_pkg_FP_FORMAT_BITS) - 1):(0 >= NUM_MID_REGS ? NUM_MID_REGS * fpnew_pkg_FP_FORMAT_BITS : 0)] mid_pipe_src_fmt_q;
+	wire [(0 >= NUM_MID_REGS ? ((1 - NUM_MID_REGS) * fpnew_pkg_FP_FORMAT_BITS) + ((NUM_MID_REGS * fpnew_pkg_FP_FORMAT_BITS) - 1) : ((NUM_MID_REGS + 1) * fpnew_pkg_FP_FORMAT_BITS) - 1):(0 >= NUM_MID_REGS ? NUM_MID_REGS * fpnew_pkg_FP_FORMAT_BITS : 0)] mid_pipe_dst_fmt_q;
+	wire [(0 >= NUM_MID_REGS ? ((1 - NUM_MID_REGS) * fpnew_pkg_INT_FORMAT_BITS) + ((NUM_MID_REGS * fpnew_pkg_INT_FORMAT_BITS) - 1) : ((NUM_MID_REGS + 1) * fpnew_pkg_INT_FORMAT_BITS) - 1):(0 >= NUM_MID_REGS ? NUM_MID_REGS * fpnew_pkg_INT_FORMAT_BITS : 0)] mid_pipe_int_fmt_q;
 	wire [0:NUM_MID_REGS] mid_pipe_tag_q;
 	wire [(0 >= NUM_MID_REGS ? ((1 - NUM_MID_REGS) * AuxType_AUX_BITS) + ((NUM_MID_REGS * AuxType_AUX_BITS) - 1) : ((NUM_MID_REGS + 1) * AuxType_AUX_BITS) - 1):(0 >= NUM_MID_REGS ? NUM_MID_REGS * AuxType_AUX_BITS : 0)] mid_pipe_aux_q;
 	wire [0:NUM_MID_REGS] mid_pipe_valid_q;
@@ -13364,9 +11719,9 @@
 	assign mid_pipe_mant_zero_q[0] = mant_is_zero;
 	assign mid_pipe_op_mod_q[0] = op_mod_q;
 	assign mid_pipe_rnd_mode_q[(0 >= NUM_MID_REGS ? 0 : NUM_MID_REGS) * 3+:3] = inp_pipe_rnd_mode_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * 3+:3];
-	assign mid_pipe_src_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS] = src_fmt_q;
-	assign mid_pipe_dst_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS] = dst_fmt_q;
-	assign mid_pipe_int_fmt_q[0+:fpnew_pkg_INT_FORMAT_BITS] = int_fmt_q;
+	assign mid_pipe_src_fmt_q[(0 >= NUM_MID_REGS ? 0 : NUM_MID_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS] = src_fmt_q;
+	assign mid_pipe_dst_fmt_q[(0 >= NUM_MID_REGS ? 0 : NUM_MID_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS] = dst_fmt_q;
+	assign mid_pipe_int_fmt_q[(0 >= NUM_MID_REGS ? 0 : NUM_MID_REGS) * fpnew_pkg_INT_FORMAT_BITS+:fpnew_pkg_INT_FORMAT_BITS] = int_fmt_q;
 	assign mid_pipe_tag_q[0] = inp_pipe_tag_q[NUM_INP_REGS];
 	assign mid_pipe_aux_q[(0 >= NUM_MID_REGS ? 0 : NUM_MID_REGS) * AuxType_AUX_BITS+:AuxType_AUX_BITS] = inp_pipe_aux_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * AuxType_AUX_BITS+:AuxType_AUX_BITS];
 	assign mid_pipe_valid_q[0] = inp_pipe_valid_q[NUM_INP_REGS];
@@ -13388,9 +11743,9 @@
 	assign mant_is_zero_q = mid_pipe_mant_zero_q[NUM_MID_REGS];
 	assign op_mod_q2 = mid_pipe_op_mod_q[NUM_MID_REGS];
 	assign rnd_mode_q = mid_pipe_rnd_mode_q[(0 >= NUM_MID_REGS ? NUM_MID_REGS : NUM_MID_REGS - NUM_MID_REGS) * 3+:3];
-	assign src_fmt_q2 = mid_pipe_src_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS];
-	assign dst_fmt_q2 = mid_pipe_dst_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS];
-	assign int_fmt_q2 = mid_pipe_int_fmt_q[0+:fpnew_pkg_INT_FORMAT_BITS];
+	assign src_fmt_q2 = mid_pipe_src_fmt_q[(0 >= NUM_MID_REGS ? NUM_MID_REGS : NUM_MID_REGS - NUM_MID_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS];
+	assign dst_fmt_q2 = mid_pipe_dst_fmt_q[(0 >= NUM_MID_REGS ? NUM_MID_REGS : NUM_MID_REGS - NUM_MID_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS];
+	assign int_fmt_q2 = mid_pipe_int_fmt_q[(0 >= NUM_MID_REGS ? NUM_MID_REGS : NUM_MID_REGS - NUM_MID_REGS) * fpnew_pkg_INT_FORMAT_BITS+:fpnew_pkg_INT_FORMAT_BITS];
 	reg [INT_EXP_WIDTH - 1:0] final_exp;
 	reg [2 * INT_MAN_WIDTH:0] preshift_mant;
 	wire [2 * INT_MAN_WIDTH:0] destination_mant;
@@ -13448,8 +11803,8 @@
 	wire of_after_round;
 	wire uf_after_round;
 	reg [(NUM_FORMATS * WIDTH) - 1:0] fmt_pre_round_abs;
-	reg [0:0] fmt_of_after_round;
-	reg [0:0] fmt_uf_after_round;
+	reg [3:0] fmt_of_after_round;
+	reg [3:0] fmt_uf_after_round;
 	reg [(NUM_INT_FORMATS * WIDTH) - 1:0] ifmt_pre_round_abs;
 	wire rounded_sign;
 	wire [WIDTH - 1:0] rounded_abs;
@@ -13458,8 +11813,8 @@
 	wire rounded_int_res_zero;
 	generate
 		for (fmt = 0; fmt < sv2v_cast_32_signed(NUM_FORMATS); fmt = fmt + 1) begin : gen_res_assemble
-			function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_9359B;
-				input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_9359B;
+				input reg [1:0] inp;
 				sv2v_cast_9359B = inp;
 			endfunction
 			localparam [31:0] EXP_BITS = fpnew_pkg_exp_bits(sv2v_cast_9359B(fmt));
@@ -13478,8 +11833,8 @@
 	endgenerate
 	generate
 		for (ifmt = 0; ifmt < sv2v_cast_32_signed(NUM_INT_FORMATS); ifmt = ifmt + 1) begin : gen_int_res_sign_ext
-			function automatic [fpnew_pkg_INT_FORMAT_BITS - 1:0] sv2v_cast_D812A;
-				input reg [fpnew_pkg_INT_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_D812A;
+				input reg [1:0] inp;
 				sv2v_cast_D812A = inp;
 			endfunction
 			localparam [31:0] INT_WIDTH = fpnew_pkg_int_width(sv2v_cast_D812A(ifmt));
@@ -13510,8 +11865,8 @@
 	reg [(NUM_FORMATS * WIDTH) - 1:0] fmt_result;
 	generate
 		for (fmt = 0; fmt < sv2v_cast_32_signed(NUM_FORMATS); fmt = fmt + 1) begin : gen_sign_inject
-			function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_9359B;
-				input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_9359B;
+				input reg [1:0] inp;
 				sv2v_cast_9359B = inp;
 			endfunction
 			localparam [31:0] FP_WIDTH = fpnew_pkg_fp_width(sv2v_cast_9359B(fmt));
@@ -13548,8 +11903,8 @@
 	reg [(NUM_FORMATS * WIDTH) - 1:0] fmt_special_result;
 	generate
 		for (fmt = 0; fmt < sv2v_cast_32_signed(NUM_FORMATS); fmt = fmt + 1) begin : gen_special_results
-			function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_9359B;
-				input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_9359B;
+				input reg [1:0] inp;
 				sv2v_cast_9359B = inp;
 			endfunction
 			localparam [31:0] FP_WIDTH = fpnew_pkg_fp_width(sv2v_cast_9359B(fmt));
@@ -13581,8 +11936,8 @@
 	reg [(NUM_INT_FORMATS * WIDTH) - 1:0] ifmt_special_result;
 	generate
 		for (ifmt = 0; ifmt < sv2v_cast_32_signed(NUM_INT_FORMATS); ifmt = ifmt + 1) begin : gen_special_results_int
-			function automatic [fpnew_pkg_INT_FORMAT_BITS - 1:0] sv2v_cast_D812A;
-				input reg [fpnew_pkg_INT_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_D812A;
+				input reg [1:0] inp;
 				sv2v_cast_D812A = inp;
 			endfunction
 			localparam [31:0] INT_WIDTH = fpnew_pkg_int_width(sv2v_cast_D812A(ifmt));
@@ -13664,31 +12019,31 @@
 	is_boxed_i,
 	info_o
 );
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_9E068;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	function automatic [1:0] sv2v_cast_9E068;
+		input reg [1:0] inp;
 		sv2v_cast_9E068 = inp;
 	endfunction
-	parameter [fpnew_pkg_FP_FORMAT_BITS - 1:0] FpFormat = sv2v_cast_9E068(0);
+	parameter [1:0] FpFormat = sv2v_cast_9E068(0);
 	parameter [31:0] NumOperands = 1;
-	localparam [63:0] fpnew_pkg_FP_ENCODINGS = 64'h0000000800000017;
+	localparam [255:0] fpnew_pkg_FP_ENCODINGS = 256'h00000008000000170000000b00000034000000050000000a0000000500000002;
 	function automatic [31:0] fpnew_pkg_fp_width;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32]) + 1;
+		input reg [1:0] fmt;
+		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32]) + 1;
 	endfunction
 	localparam [31:0] WIDTH = fpnew_pkg_fp_width(FpFormat);
 	input wire [(NumOperands * WIDTH) - 1:0] operands_i;
 	input wire [NumOperands - 1:0] is_boxed_i;
 	output reg [(NumOperands * 8) - 1:0] info_o;
 	function automatic [31:0] fpnew_pkg_exp_bits;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_exp_bits = fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32];
+		input reg [1:0] fmt;
+		fpnew_pkg_exp_bits = fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32];
 	endfunction
 	localparam [31:0] EXP_BITS = fpnew_pkg_exp_bits(FpFormat);
 	function automatic [31:0] fpnew_pkg_man_bits;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_man_bits = fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32];
+		input reg [1:0] fmt;
+		fpnew_pkg_man_bits = fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32];
 	endfunction
 	localparam [31:0] MAN_BITS = fpnew_pkg_man_bits(FpFormat);
 	generate
@@ -13752,32 +12107,32 @@
 	busy_o
 );
 	parameter [31:0] AuxType_AUX_BITS = 0;
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	parameter [0:0] FpFmtConfig = 1'sb1;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	parameter [0:3] FpFmtConfig = 1'sb1;
 	parameter [31:0] NumPipeRegs = 0;
 	localparam [1:0] fpnew_pkg_AFTER = 1;
 	parameter [1:0] PipeConfig = fpnew_pkg_AFTER;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	localparam [63:0] fpnew_pkg_FP_ENCODINGS = 64'h0000000800000017;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	localparam [255:0] fpnew_pkg_FP_ENCODINGS = 256'h00000008000000170000000b00000034000000050000000a0000000500000002;
 	function automatic [31:0] fpnew_pkg_fp_width;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32]) + 1;
+		input reg [1:0] fmt;
+		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32]) + 1;
 	endfunction
 	function automatic signed [31:0] fpnew_pkg_maximum;
 		input reg signed [31:0] a;
 		input reg signed [31:0] b;
 		fpnew_pkg_maximum = (a > b ? a : b);
 	endfunction
-	function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_8C7A2;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+	function automatic [1:0] sv2v_cast_8C7A2;
+		input reg [1:0] inp;
 		sv2v_cast_8C7A2 = inp;
 	endfunction
 	function automatic [31:0] fpnew_pkg_max_fp_width;
-		input reg [0:0] cfg;
+		input reg [0:3] cfg;
 		reg [31:0] res;
 		begin
 			res = 0;
-			begin : sv2v_autoblock_110
+			begin : sv2v_autoblock_112
 				reg [31:0] i;
 				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1)
 					if (cfg[i])
@@ -13791,11 +12146,11 @@
 	input wire clk_i;
 	input wire rst_ni;
 	input wire [(2 * WIDTH) - 1:0] operands_i;
-	input wire [1:0] is_boxed_i;
+	input wire [7:0] is_boxed_i;
 	input wire [2:0] rnd_mode_i;
 	localparam [31:0] fpnew_pkg_OP_BITS = 4;
 	input wire [3:0] op_i;
-	input wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] dst_fmt_i;
+	input wire [1:0] dst_fmt_i;
 	input wire tag_i;
 	input wire [AuxType_AUX_BITS - 1:0] aux_i;
 	input wire in_valid_i;
@@ -13817,12 +12172,12 @@
 	wire [(2 * WIDTH) - 1:0] operands_q;
 	wire [2:0] rnd_mode_q;
 	wire [3:0] op_q;
-	wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] dst_fmt_q;
+	wire [1:0] dst_fmt_q;
 	wire in_valid_q;
 	wire [((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) ? ((((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1) - (0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0)) + 1) * WIDTH) + (((0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) * WIDTH) - 1) : ((((0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) - (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1)) + 1) * WIDTH) + (((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1) * WIDTH) - 1)):((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) ? (0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) * WIDTH : (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1) * WIDTH)] inp_pipe_operands_q;
 	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0)] inp_pipe_rnd_mode_q;
 	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * fpnew_pkg_OP_BITS) + ((NUM_INP_REGS * fpnew_pkg_OP_BITS) - 1) : ((NUM_INP_REGS + 1) * fpnew_pkg_OP_BITS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * fpnew_pkg_OP_BITS : 0)] inp_pipe_op_q;
-	wire [(0 >= NUM_INP_REGS ? -1 : -1):(0 >= NUM_INP_REGS ? 0 : 0)] inp_pipe_dst_fmt_q;
+	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS) + ((NUM_INP_REGS * fpnew_pkg_FP_FORMAT_BITS) - 1) : ((NUM_INP_REGS + 1) * fpnew_pkg_FP_FORMAT_BITS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * fpnew_pkg_FP_FORMAT_BITS : 0)] inp_pipe_dst_fmt_q;
 	wire [0:NUM_INP_REGS] inp_pipe_tag_q;
 	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * AuxType_AUX_BITS) + ((NUM_INP_REGS * AuxType_AUX_BITS) - 1) : ((NUM_INP_REGS + 1) * AuxType_AUX_BITS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * AuxType_AUX_BITS : 0)] inp_pipe_aux_q;
 	wire [0:NUM_INP_REGS] inp_pipe_valid_q;
@@ -13830,7 +12185,7 @@
 	assign inp_pipe_operands_q[WIDTH * ((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) ? ((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) ? (0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * 2 : ((0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * 2) + 1) : (0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) - (((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) ? (0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * 2 : ((0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * 2) + 1) - (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1)))+:WIDTH * 2] = operands_i;
 	assign inp_pipe_rnd_mode_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * 3+:3] = rnd_mode_i;
 	assign inp_pipe_op_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * fpnew_pkg_OP_BITS+:fpnew_pkg_OP_BITS] = op_i;
-	assign inp_pipe_dst_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS] = dst_fmt_i;
+	assign inp_pipe_dst_fmt_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS] = dst_fmt_i;
 	assign inp_pipe_tag_q[0] = tag_i;
 	assign inp_pipe_aux_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * AuxType_AUX_BITS+:AuxType_AUX_BITS] = aux_i;
 	assign inp_pipe_valid_q[0] = in_valid_i;
@@ -13846,20 +12201,25 @@
 	assign operands_q = inp_pipe_operands_q[WIDTH * ((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) ? ((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) ? (0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * 2 : ((0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * 2) + 1) : (0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) - (((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 2 : 0) ? (0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * 2 : ((0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * 2) + 1) - (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 2) + ((NUM_INP_REGS * 2) - 1) : ((NUM_INP_REGS + 1) * 2) - 1)))+:WIDTH * 2];
 	assign rnd_mode_q = inp_pipe_rnd_mode_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * 3+:3];
 	assign op_q = inp_pipe_op_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * fpnew_pkg_OP_BITS+:fpnew_pkg_OP_BITS];
-	assign dst_fmt_q = inp_pipe_dst_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS];
+	assign dst_fmt_q = inp_pipe_dst_fmt_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS];
 	assign in_valid_q = inp_pipe_valid_q[NUM_INP_REGS];
 	reg [1:0] divsqrt_fmt;
 	reg [127:0] divsqrt_operands;
 	reg input_is_fp8;
-	localparam [fpnew_pkg_FP_FORMAT_BITS - 1:0] fpnew_pkg_FP32 = 'd0;
+	localparam [1:0] fpnew_pkg_FP16 = 'd2;
+	localparam [1:0] fpnew_pkg_FP32 = 'd0;
+	localparam [1:0] fpnew_pkg_FP64 = 'd1;
+	localparam [1:0] fpnew_pkg_FP8 = 'd3;
 	always @(*) begin : translate_fmt
 		case (dst_fmt_q)
 			fpnew_pkg_FP32: divsqrt_fmt = 2'b00;
+			fpnew_pkg_FP64: divsqrt_fmt = 2'b01;
+			fpnew_pkg_FP16: divsqrt_fmt = 2'b10;
 			default: divsqrt_fmt = 2'b10;
 		endcase
-		input_is_fp8 = 1'b0;
-		divsqrt_operands[0+:64] = operands_q[0+:WIDTH];
-		divsqrt_operands[64+:64] = operands_q[WIDTH+:WIDTH];
+		input_is_fp8 = FpFmtConfig[fpnew_pkg_FP8] & (dst_fmt_q == fpnew_pkg_FP8);
+		divsqrt_operands[0+:64] = (input_is_fp8 ? operands_q[0+:WIDTH] << 8 : operands_q[0+:WIDTH]);
+		divsqrt_operands[64+:64] = (input_is_fp8 ? operands_q[WIDTH+:WIDTH] << 8 : operands_q[WIDTH+:WIDTH]);
 	end
 	reg in_ready;
 	wire div_valid;
@@ -13961,8 +12321,8 @@
 		.Ready_SO(unit_ready),
 		.Done_SO(unit_done)
 	);
-	assign adjusted_result = (result_is_fp8_q ? unit_result >> 8 : unit_result);
 	always @(posedge __clk) __q <= (__load ? __d : __q);
+	assign adjusted_result = (result_is_fp8_q ? unit_result >> 8 : unit_result);
 	wire [WIDTH - 1:0] result_d;
 	wire [4:0] status_d;
 	assign result_d = (data_is_held ? held_result_q : adjusted_result);
@@ -14020,32 +12380,32 @@
 	busy_o
 );
 	parameter [31:0] AuxType_AUX_BITS = 0;
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	parameter [0:0] FpFmtConfig = 1'sb1;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	parameter [0:3] FpFmtConfig = 1'sb1;
 	parameter [31:0] NumPipeRegs = 0;
 	localparam [1:0] fpnew_pkg_BEFORE = 0;
 	parameter [1:0] PipeConfig = fpnew_pkg_BEFORE;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	localparam [63:0] fpnew_pkg_FP_ENCODINGS = 64'h0000000800000017;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	localparam [255:0] fpnew_pkg_FP_ENCODINGS = 256'h00000008000000170000000b00000034000000050000000a0000000500000002;
 	function automatic [31:0] fpnew_pkg_fp_width;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32]) + 1;
+		input reg [1:0] fmt;
+		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32]) + 1;
 	endfunction
 	function automatic signed [31:0] fpnew_pkg_maximum;
 		input reg signed [31:0] a;
 		input reg signed [31:0] b;
 		fpnew_pkg_maximum = (a > b ? a : b);
 	endfunction
-	function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_3AA4D;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+	function automatic [1:0] sv2v_cast_3AA4D;
+		input reg [1:0] inp;
 		sv2v_cast_3AA4D = inp;
 	endfunction
 	function automatic [31:0] fpnew_pkg_max_fp_width;
-		input reg [0:0] cfg;
+		input reg [0:3] cfg;
 		reg [31:0] res;
 		begin
 			res = 0;
-			begin : sv2v_autoblock_111
+			begin : sv2v_autoblock_113
 				reg [31:0] i;
 				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1)
 					if (cfg[i])
@@ -14059,13 +12419,13 @@
 	input wire clk_i;
 	input wire rst_ni;
 	input wire [(3 * WIDTH) - 1:0] operands_i;
-	input wire [2:0] is_boxed_i;
+	input wire [11:0] is_boxed_i;
 	input wire [2:0] rnd_mode_i;
 	localparam [31:0] fpnew_pkg_OP_BITS = 4;
 	input wire [3:0] op_i;
 	input wire op_mod_i;
-	input wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] src_fmt_i;
-	input wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] dst_fmt_i;
+	input wire [1:0] src_fmt_i;
+	input wire [1:0] dst_fmt_i;
 	input wire tag_i;
 	input wire [AuxType_AUX_BITS - 1:0] aux_i;
 	input wire in_valid_i;
@@ -14080,19 +12440,19 @@
 	input wire out_ready_i;
 	output wire busy_o;
 	function automatic [31:0] fpnew_pkg_exp_bits;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_exp_bits = fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32];
+		input reg [1:0] fmt;
+		fpnew_pkg_exp_bits = fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32];
 	endfunction
 	function automatic [31:0] fpnew_pkg_man_bits;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_man_bits = fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32];
+		input reg [1:0] fmt;
+		fpnew_pkg_man_bits = fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32];
 	endfunction
 	function automatic [63:0] fpnew_pkg_super_format;
-		input reg [0:0] cfg;
+		input reg [0:3] cfg;
 		reg [63:0] res;
 		begin
 			res = {64 {1'sb0}};
-			begin : sv2v_autoblock_112
+			begin : sv2v_autoblock_114
 				reg [31:0] fmt;
 				for (fmt = 0; fmt < fpnew_pkg_NUM_FP_FORMATS; fmt = fmt + 1)
 					if (cfg[fmt]) begin
@@ -14118,26 +12478,26 @@
 	localparam [1:0] fpnew_pkg_AFTER = 1;
 	localparam NUM_OUT_REGS = (PipeConfig == fpnew_pkg_AFTER ? NumPipeRegs : (PipeConfig == fpnew_pkg_DISTRIBUTED ? NumPipeRegs / 3 : 0));
 	wire [(3 * WIDTH) - 1:0] operands_q;
-	wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] src_fmt_q;
-	wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] dst_fmt_q;
+	wire [1:0] src_fmt_q;
+	wire [1:0] dst_fmt_q;
 	wire [((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) ? ((((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1) - (0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0)) + 1) * WIDTH) + (((0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) * WIDTH) - 1) : ((((0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) - (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1)) + 1) * WIDTH) + (((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1) * WIDTH) - 1)):((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) ? (0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) * WIDTH : (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1) * WIDTH)] inp_pipe_operands_q;
-	wire [((0 >= NUM_INP_REGS ? (1 - NUM_INP_REGS) + (NUM_INP_REGS - 1) : NUM_INP_REGS) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS : 0) ? ((((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1) - (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0)) + 1) * 3) + (((0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) * 3) - 1) : ((((0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) - (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1)) + 1) * 3) + (((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1) * 3) - 1)):((0 >= NUM_INP_REGS ? (1 - NUM_INP_REGS) + (NUM_INP_REGS - 1) : NUM_INP_REGS) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS : 0) ? (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) * 3 : (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1) * 3)] inp_pipe_is_boxed_q;
+	wire [((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) ? ((((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1) - (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0)) + 1) * 3) + (((0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) * 3) - 1) : ((((0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) - (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1)) + 1) * 3) + (((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1) * 3) - 1)):((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) ? (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) * 3 : (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1) * 3)] inp_pipe_is_boxed_q;
 	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0)] inp_pipe_rnd_mode_q;
 	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * fpnew_pkg_OP_BITS) + ((NUM_INP_REGS * fpnew_pkg_OP_BITS) - 1) : ((NUM_INP_REGS + 1) * fpnew_pkg_OP_BITS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * fpnew_pkg_OP_BITS : 0)] inp_pipe_op_q;
 	wire [0:NUM_INP_REGS] inp_pipe_op_mod_q;
-	wire [(0 >= NUM_INP_REGS ? -1 : -1):(0 >= NUM_INP_REGS ? 0 : 0)] inp_pipe_src_fmt_q;
-	wire [(0 >= NUM_INP_REGS ? -1 : -1):(0 >= NUM_INP_REGS ? 0 : 0)] inp_pipe_dst_fmt_q;
+	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS) + ((NUM_INP_REGS * fpnew_pkg_FP_FORMAT_BITS) - 1) : ((NUM_INP_REGS + 1) * fpnew_pkg_FP_FORMAT_BITS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * fpnew_pkg_FP_FORMAT_BITS : 0)] inp_pipe_src_fmt_q;
+	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS) + ((NUM_INP_REGS * fpnew_pkg_FP_FORMAT_BITS) - 1) : ((NUM_INP_REGS + 1) * fpnew_pkg_FP_FORMAT_BITS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * fpnew_pkg_FP_FORMAT_BITS : 0)] inp_pipe_dst_fmt_q;
 	wire [0:NUM_INP_REGS] inp_pipe_tag_q;
 	wire [(0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * AuxType_AUX_BITS) + ((NUM_INP_REGS * AuxType_AUX_BITS) - 1) : ((NUM_INP_REGS + 1) * AuxType_AUX_BITS) - 1):(0 >= NUM_INP_REGS ? NUM_INP_REGS * AuxType_AUX_BITS : 0)] inp_pipe_aux_q;
 	wire [0:NUM_INP_REGS] inp_pipe_valid_q;
 	wire [0:NUM_INP_REGS] inp_pipe_ready;
 	assign inp_pipe_operands_q[WIDTH * ((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) ? ((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) ? (0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * 3 : ((0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * 3) + 2) : (0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) - (((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) ? (0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * 3 : ((0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * 3) + 2) - (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1)))+:WIDTH * 3] = operands_i;
-	assign inp_pipe_is_boxed_q[3 * ((0 >= NUM_INP_REGS ? (1 - NUM_INP_REGS) + (NUM_INP_REGS - 1) : NUM_INP_REGS) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS : 0) ? ((0 >= NUM_INP_REGS ? (1 - NUM_INP_REGS) + (NUM_INP_REGS - 1) : NUM_INP_REGS) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS : 0) ? (0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * NUM_FORMATS : (0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * NUM_FORMATS) : (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) - (((0 >= NUM_INP_REGS ? (1 - NUM_INP_REGS) + (NUM_INP_REGS - 1) : NUM_INP_REGS) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS : 0) ? (0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * NUM_FORMATS : (0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * NUM_FORMATS) - (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1)))+:3] = is_boxed_i;
+	assign inp_pipe_is_boxed_q[3 * ((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) ? ((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) ? (0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * NUM_FORMATS : ((0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * NUM_FORMATS) + 3) : (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) - (((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) ? (0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * NUM_FORMATS : ((0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * NUM_FORMATS) + 3) - (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1)))+:12] = is_boxed_i;
 	assign inp_pipe_rnd_mode_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * 3+:3] = rnd_mode_i;
 	assign inp_pipe_op_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * fpnew_pkg_OP_BITS+:fpnew_pkg_OP_BITS] = op_i;
 	assign inp_pipe_op_mod_q[0] = op_mod_i;
-	assign inp_pipe_src_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS] = src_fmt_i;
-	assign inp_pipe_dst_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS] = dst_fmt_i;
+	assign inp_pipe_src_fmt_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS] = src_fmt_i;
+	assign inp_pipe_dst_fmt_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS] = dst_fmt_i;
 	assign inp_pipe_tag_q[0] = tag_i;
 	assign inp_pipe_aux_q[(0 >= NUM_INP_REGS ? 0 : NUM_INP_REGS) * AuxType_AUX_BITS+:AuxType_AUX_BITS] = aux_i;
 	assign inp_pipe_valid_q[0] = in_valid_i;
@@ -14151,12 +12511,12 @@
 		end
 	endgenerate
 	assign operands_q = inp_pipe_operands_q[WIDTH * ((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) ? ((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) ? (0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * 3 : ((0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * 3) + 2) : (0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) - (((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * 3 : 0) ? (0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * 3 : ((0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * 3) + 2) - (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * 3) + ((NUM_INP_REGS * 3) - 1) : ((NUM_INP_REGS + 1) * 3) - 1)))+:WIDTH * 3];
-	assign src_fmt_q = inp_pipe_src_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS];
-	assign dst_fmt_q = inp_pipe_dst_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS];
-	wire [2:0] fmt_sign;
-	wire signed [(3 * SUPER_EXP_BITS) - 1:0] fmt_exponent;
-	wire [(3 * SUPER_MAN_BITS) - 1:0] fmt_mantissa;
-	wire [23:0] info_q;
+	assign src_fmt_q = inp_pipe_src_fmt_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS];
+	assign dst_fmt_q = inp_pipe_dst_fmt_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS];
+	wire [11:0] fmt_sign;
+	wire signed [(12 * SUPER_EXP_BITS) - 1:0] fmt_exponent;
+	wire [(12 * SUPER_MAN_BITS) - 1:0] fmt_mantissa;
+	wire [95:0] info_q;
 	localparam [0:0] fpnew_pkg_DONT_CARE = 1'b1;
 	generate
 		genvar fmt;
@@ -14165,8 +12525,8 @@
 			sv2v_cast_32_signed = inp;
 		endfunction
 		for (fmt = 0; fmt < sv2v_cast_32_signed(NUM_FORMATS); fmt = fmt + 1) begin : fmt_init_inputs
-			function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_3AA4D;
-				input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_3AA4D;
+				input reg [1:0] inp;
 				sv2v_cast_3AA4D = inp;
 			endfunction
 			localparam [31:0] FP_WIDTH = fpnew_pkg_fp_width(sv2v_cast_3AA4D(fmt));
@@ -14174,8 +12534,8 @@
 			localparam [31:0] MAN_BITS = fpnew_pkg_man_bits(sv2v_cast_3AA4D(fmt));
 			if (FpFmtConfig[fmt]) begin : active_format
 				wire [(3 * FP_WIDTH) - 1:0] trimmed_ops;
-				function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_3AA4D;
-					input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+				function automatic [1:0] sv2v_cast_3AA4D;
+					input reg [1:0] inp;
 					sv2v_cast_3AA4D = inp;
 				endfunction
 				fpnew_classifier #(
@@ -14183,7 +12543,7 @@
 					.NumOperands(3)
 				) i_fpnew_classifier(
 					.operands_i(trimmed_ops),
-					.is_boxed_i(inp_pipe_is_boxed_q[((0 >= NUM_INP_REGS ? (1 - NUM_INP_REGS) + (NUM_INP_REGS - 1) : NUM_INP_REGS) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS : 0) ? ((0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * NUM_FORMATS) + fmt : (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) - ((((0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * NUM_FORMATS) + fmt) - (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1))) * 3+:3]),
+					.is_boxed_i(inp_pipe_is_boxed_q[((0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1) >= (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) ? ((0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * NUM_FORMATS) + fmt : (0 >= NUM_INP_REGS ? NUM_INP_REGS * NUM_FORMATS : 0) - ((((0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * NUM_FORMATS) + fmt) - (0 >= NUM_INP_REGS ? ((1 - NUM_INP_REGS) * NUM_FORMATS) + ((NUM_INP_REGS * NUM_FORMATS) - 1) : ((NUM_INP_REGS + 1) * NUM_FORMATS) - 1))) * 3+:3]),
 					.info_o(info_q[8 * (fmt * 3)+:24])
 				);
 				genvar op;
@@ -14225,8 +12585,8 @@
 	reg [7:0] info_b;
 	reg [7:0] info_c;
 	function automatic [31:0] fpnew_pkg_bias;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_bias = $unsigned((2 ** (fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32] - 1)) - 1);
+		input reg [1:0] fmt;
+		fpnew_pkg_bias = $unsigned((2 ** (fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32] - 1)) - 1);
 	endfunction
 	localparam [3:0] fpnew_pkg_ADD = 2;
 	localparam [3:0] fpnew_pkg_FMADD = 0;
@@ -14284,12 +12644,12 @@
 	wire [4:0] special_status;
 	wire result_is_special;
 	reg [(NUM_FORMATS * WIDTH) - 1:0] fmt_special_result;
-	reg [4:0] fmt_special_status;
-	reg [0:0] fmt_result_is_special;
+	reg [19:0] fmt_special_status;
+	reg [3:0] fmt_result_is_special;
 	generate
 		for (fmt = 0; fmt < sv2v_cast_32_signed(NUM_FORMATS); fmt = fmt + 1) begin : gen_special_results
-			function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_3AA4D;
-				input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_3AA4D;
+				input reg [1:0] inp;
 				sv2v_cast_3AA4D = inp;
 			endfunction
 			localparam [31:0] FP_WIDTH = fpnew_pkg_fp_width(sv2v_cast_3AA4D(fmt));
@@ -14399,7 +12759,7 @@
 	wire sticky_before_add_q;
 	wire [(3 * PRECISION_BITS) + 3:0] sum_q;
 	wire final_sign_q;
-	wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] dst_fmt_q2;
+	wire [1:0] dst_fmt_q2;
 	wire [2:0] rnd_mode_q;
 	wire result_is_special_q;
 	wire [((1 + SUPER_EXP_BITS) + SUPER_MAN_BITS) - 1:0] special_result_q;
@@ -14413,7 +12773,7 @@
 	wire [(0 >= NUM_MID_REGS ? (((3 * PRECISION_BITS) + 3) >= 0 ? ((1 - NUM_MID_REGS) * ((3 * PRECISION_BITS) + 4)) + ((NUM_MID_REGS * ((3 * PRECISION_BITS) + 4)) - 1) : ((1 - NUM_MID_REGS) * (1 - ((3 * PRECISION_BITS) + 3))) + ((((3 * PRECISION_BITS) + 3) + (NUM_MID_REGS * (1 - ((3 * PRECISION_BITS) + 3)))) - 1)) : (((3 * PRECISION_BITS) + 3) >= 0 ? ((NUM_MID_REGS + 1) * ((3 * PRECISION_BITS) + 4)) - 1 : ((NUM_MID_REGS + 1) * (1 - ((3 * PRECISION_BITS) + 3))) + ((3 * PRECISION_BITS) + 2))):(0 >= NUM_MID_REGS ? (((3 * PRECISION_BITS) + 3) >= 0 ? NUM_MID_REGS * ((3 * PRECISION_BITS) + 4) : ((3 * PRECISION_BITS) + 3) + (NUM_MID_REGS * (1 - ((3 * PRECISION_BITS) + 3)))) : (((3 * PRECISION_BITS) + 3) >= 0 ? 0 : (3 * PRECISION_BITS) + 3))] mid_pipe_sum_q;
 	wire [0:NUM_MID_REGS] mid_pipe_final_sign_q;
 	wire [(0 >= NUM_MID_REGS ? ((1 - NUM_MID_REGS) * 3) + ((NUM_MID_REGS * 3) - 1) : ((NUM_MID_REGS + 1) * 3) - 1):(0 >= NUM_MID_REGS ? NUM_MID_REGS * 3 : 0)] mid_pipe_rnd_mode_q;
-	wire [(0 >= NUM_MID_REGS ? -1 : -1):(0 >= NUM_MID_REGS ? 0 : 0)] mid_pipe_dst_fmt_q;
+	wire [(0 >= NUM_MID_REGS ? ((1 - NUM_MID_REGS) * fpnew_pkg_FP_FORMAT_BITS) + ((NUM_MID_REGS * fpnew_pkg_FP_FORMAT_BITS) - 1) : ((NUM_MID_REGS + 1) * fpnew_pkg_FP_FORMAT_BITS) - 1):(0 >= NUM_MID_REGS ? NUM_MID_REGS * fpnew_pkg_FP_FORMAT_BITS : 0)] mid_pipe_dst_fmt_q;
 	wire [0:NUM_MID_REGS] mid_pipe_res_is_spec_q;
 	wire [(0 >= NUM_MID_REGS ? ((1 - NUM_MID_REGS) * ((1 + SUPER_EXP_BITS) + SUPER_MAN_BITS)) + ((NUM_MID_REGS * ((1 + SUPER_EXP_BITS) + SUPER_MAN_BITS)) - 1) : ((NUM_MID_REGS + 1) * ((1 + SUPER_EXP_BITS) + SUPER_MAN_BITS)) - 1):(0 >= NUM_MID_REGS ? NUM_MID_REGS * ((1 + SUPER_EXP_BITS) + SUPER_MAN_BITS) : 0)] mid_pipe_spec_res_q;
 	wire [(0 >= NUM_MID_REGS ? ((1 - NUM_MID_REGS) * 5) + ((NUM_MID_REGS * 5) - 1) : ((NUM_MID_REGS + 1) * 5) - 1):(0 >= NUM_MID_REGS ? NUM_MID_REGS * 5 : 0)] mid_pipe_spec_stat_q;
@@ -14430,7 +12790,7 @@
 	assign mid_pipe_sum_q[(((3 * PRECISION_BITS) + 3) >= 0 ? 0 : (3 * PRECISION_BITS) + 3) + ((0 >= NUM_MID_REGS ? 0 : NUM_MID_REGS) * (((3 * PRECISION_BITS) + 3) >= 0 ? (3 * PRECISION_BITS) + 4 : 1 - ((3 * PRECISION_BITS) + 3)))+:(((3 * PRECISION_BITS) + 3) >= 0 ? (3 * PRECISION_BITS) + 4 : 1 - ((3 * PRECISION_BITS) + 3))] = sum;
 	assign mid_pipe_final_sign_q[0] = final_sign;
 	assign mid_pipe_rnd_mode_q[(0 >= NUM_MID_REGS ? 0 : NUM_MID_REGS) * 3+:3] = inp_pipe_rnd_mode_q[(0 >= NUM_INP_REGS ? NUM_INP_REGS : NUM_INP_REGS - NUM_INP_REGS) * 3+:3];
-	assign mid_pipe_dst_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS] = dst_fmt_q;
+	assign mid_pipe_dst_fmt_q[(0 >= NUM_MID_REGS ? 0 : NUM_MID_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS] = dst_fmt_q;
 	assign mid_pipe_res_is_spec_q[0] = result_is_special;
 	assign mid_pipe_spec_res_q[(0 >= NUM_MID_REGS ? 0 : NUM_MID_REGS) * ((1 + SUPER_EXP_BITS) + SUPER_MAN_BITS)+:(1 + SUPER_EXP_BITS) + SUPER_MAN_BITS] = special_result;
 	assign mid_pipe_spec_stat_q[(0 >= NUM_MID_REGS ? 0 : NUM_MID_REGS) * 5+:5] = special_status;
@@ -14454,7 +12814,7 @@
 	assign sum_q = mid_pipe_sum_q[(((3 * PRECISION_BITS) + 3) >= 0 ? 0 : (3 * PRECISION_BITS) + 3) + ((0 >= NUM_MID_REGS ? NUM_MID_REGS : NUM_MID_REGS - NUM_MID_REGS) * (((3 * PRECISION_BITS) + 3) >= 0 ? (3 * PRECISION_BITS) + 4 : 1 - ((3 * PRECISION_BITS) + 3)))+:(((3 * PRECISION_BITS) + 3) >= 0 ? (3 * PRECISION_BITS) + 4 : 1 - ((3 * PRECISION_BITS) + 3))];
 	assign final_sign_q = mid_pipe_final_sign_q[NUM_MID_REGS];
 	assign rnd_mode_q = mid_pipe_rnd_mode_q[(0 >= NUM_MID_REGS ? NUM_MID_REGS : NUM_MID_REGS - NUM_MID_REGS) * 3+:3];
-	assign dst_fmt_q2 = mid_pipe_dst_fmt_q[0+:fpnew_pkg_FP_FORMAT_BITS];
+	assign dst_fmt_q2 = mid_pipe_dst_fmt_q[(0 >= NUM_MID_REGS ? NUM_MID_REGS : NUM_MID_REGS - NUM_MID_REGS) * fpnew_pkg_FP_FORMAT_BITS+:fpnew_pkg_FP_FORMAT_BITS];
 	assign result_is_special_q = mid_pipe_res_is_spec_q[NUM_MID_REGS];
 	assign special_result_q = mid_pipe_spec_res_q[(0 >= NUM_MID_REGS ? NUM_MID_REGS : NUM_MID_REGS - NUM_MID_REGS) * ((1 + SUPER_EXP_BITS) + SUPER_MAN_BITS)+:(1 + SUPER_EXP_BITS) + SUPER_MAN_BITS];
 	assign special_status_q = mid_pipe_spec_stat_q[(0 >= NUM_MID_REGS ? NUM_MID_REGS : NUM_MID_REGS - NUM_MID_REGS) * 5+:5];
@@ -14521,9 +12881,9 @@
 	wire uf_before_round;
 	wire uf_after_round;
 	wire [(NUM_FORMATS * (SUPER_EXP_BITS + SUPER_MAN_BITS)) - 1:0] fmt_pre_round_abs;
-	wire [1:0] fmt_round_sticky_bits;
-	reg [0:0] fmt_of_after_round;
-	reg [0:0] fmt_uf_after_round;
+	wire [7:0] fmt_round_sticky_bits;
+	reg [3:0] fmt_of_after_round;
+	reg [3:0] fmt_uf_after_round;
 	wire rounded_sign;
 	wire [(SUPER_EXP_BITS + SUPER_MAN_BITS) - 1:0] rounded_abs;
 	wire result_zero;
@@ -14531,8 +12891,8 @@
 	assign uf_before_round = final_exponent == 0;
 	generate
 		for (fmt = 0; fmt < sv2v_cast_32_signed(NUM_FORMATS); fmt = fmt + 1) begin : gen_res_assemble
-			function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_3AA4D;
-				input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_3AA4D;
+				input reg [1:0] inp;
 				sv2v_cast_3AA4D = inp;
 			endfunction
 			localparam [31:0] EXP_BITS = fpnew_pkg_exp_bits(sv2v_cast_3AA4D(fmt));
@@ -14577,8 +12937,8 @@
 	reg [(NUM_FORMATS * WIDTH) - 1:0] fmt_result;
 	generate
 		for (fmt = 0; fmt < sv2v_cast_32_signed(NUM_FORMATS); fmt = fmt + 1) begin : gen_sign_inject
-			function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_3AA4D;
-				input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_3AA4D;
+				input reg [1:0] inp;
 				sv2v_cast_3AA4D = inp;
 			endfunction
 			localparam [31:0] FP_WIDTH = fpnew_pkg_fp_width(sv2v_cast_3AA4D(fmt));
@@ -14669,20 +13029,20 @@
 	out_ready_i,
 	busy_o
 );
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_1ED13;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	function automatic [1:0] sv2v_cast_1ED13;
+		input reg [1:0] inp;
 		sv2v_cast_1ED13 = inp;
 	endfunction
-	parameter [fpnew_pkg_FP_FORMAT_BITS - 1:0] FpFormat = sv2v_cast_1ED13(0);
+	parameter [1:0] FpFormat = sv2v_cast_1ED13(0);
 	parameter [31:0] NumPipeRegs = 0;
 	localparam [1:0] fpnew_pkg_BEFORE = 0;
 	parameter [1:0] PipeConfig = fpnew_pkg_BEFORE;
-	localparam [63:0] fpnew_pkg_FP_ENCODINGS = 64'h0000000800000017;
+	localparam [255:0] fpnew_pkg_FP_ENCODINGS = 256'h00000008000000170000000b00000034000000050000000a0000000500000002;
 	function automatic [31:0] fpnew_pkg_fp_width;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32]) + 1;
+		input reg [1:0] fmt;
+		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32]) + 1;
 	endfunction
 	localparam [31:0] WIDTH = fpnew_pkg_fp_width(FpFormat);
 	input wire clk_i;
@@ -14707,18 +13067,18 @@
 	input wire out_ready_i;
 	output wire busy_o;
 	function automatic [31:0] fpnew_pkg_exp_bits;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_exp_bits = fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32];
+		input reg [1:0] fmt;
+		fpnew_pkg_exp_bits = fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32];
 	endfunction
 	localparam [31:0] EXP_BITS = fpnew_pkg_exp_bits(FpFormat);
 	function automatic [31:0] fpnew_pkg_man_bits;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_man_bits = fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32];
+		input reg [1:0] fmt;
+		fpnew_pkg_man_bits = fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32];
 	endfunction
 	localparam [31:0] MAN_BITS = fpnew_pkg_man_bits(FpFormat);
 	function automatic [31:0] fpnew_pkg_bias;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_bias = $unsigned((2 ** (fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32] - 1)) - 1);
+		input reg [1:0] fmt;
+		fpnew_pkg_bias = $unsigned((2 ** (fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32] - 1)) - 1);
 	endfunction
 	localparam [31:0] BIAS = fpnew_pkg_bias(FpFormat);
 	localparam [31:0] PRECISION_BITS = MAN_BITS + 1;
@@ -15119,20 +13479,20 @@
 	out_ready_i,
 	busy_o
 );
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_F7742;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	function automatic [1:0] sv2v_cast_F7742;
+		input reg [1:0] inp;
 		sv2v_cast_F7742 = inp;
 	endfunction
-	parameter [fpnew_pkg_FP_FORMAT_BITS - 1:0] FpFormat = sv2v_cast_F7742(0);
+	parameter [1:0] FpFormat = sv2v_cast_F7742(0);
 	parameter [31:0] NumPipeRegs = 0;
 	localparam [1:0] fpnew_pkg_BEFORE = 0;
 	parameter [1:0] PipeConfig = fpnew_pkg_BEFORE;
-	localparam [63:0] fpnew_pkg_FP_ENCODINGS = 64'h0000000800000017;
+	localparam [255:0] fpnew_pkg_FP_ENCODINGS = 256'h00000008000000170000000b00000034000000050000000a0000000500000002;
 	function automatic [31:0] fpnew_pkg_fp_width;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32]) + 1;
+		input reg [1:0] fmt;
+		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32]) + 1;
 	endfunction
 	localparam [31:0] WIDTH = fpnew_pkg_fp_width(FpFormat);
 	input wire clk_i;
@@ -15159,13 +13519,13 @@
 	input wire out_ready_i;
 	output wire busy_o;
 	function automatic [31:0] fpnew_pkg_exp_bits;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_exp_bits = fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32];
+		input reg [1:0] fmt;
+		fpnew_pkg_exp_bits = fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32];
 	endfunction
 	localparam [31:0] EXP_BITS = fpnew_pkg_exp_bits(FpFormat);
 	function automatic [31:0] fpnew_pkg_man_bits;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_man_bits = fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32];
+		input reg [1:0] fmt;
+		fpnew_pkg_man_bits = fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32];
 	endfunction
 	localparam [31:0] MAN_BITS = fpnew_pkg_man_bits(FpFormat);
 	localparam [1:0] fpnew_pkg_DISTRIBUTED = 3;
@@ -15412,9 +13772,11 @@
 	assign out_valid_o = out_pipe_valid_q[NUM_OUT_REGS];
 	assign busy_o = |{inp_pipe_valid_q, out_pipe_valid_q};
 endmodule
+/*
 module fpnew_opgroup_block_BE2AB (
 	clk_i,
 	rst_ni,
+	IS_FIRST_MERGED,
 	operands_i,
 	is_boxed_i,
 	rnd_mode_i,
@@ -15440,13 +13802,13 @@
 	parameter [1:0] OpGroup = fpnew_pkg_ADDMUL;
 	parameter [31:0] Width = 32;
 	parameter [0:0] EnableVectors = 1'b1;
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	parameter [0:0] FpFmtMask = 1'sb1;
-	localparam [31:0] fpnew_pkg_NUM_INT_FORMATS = 1;
-	parameter [0:0] IntFmtMask = 1'sb1;
-	parameter [31:0] FmtPipeRegs = 32'd0;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	parameter [0:3] FpFmtMask = 1'sb1;
+	localparam [31:0] fpnew_pkg_NUM_INT_FORMATS = 4;
+	parameter [0:3] IntFmtMask = 1'sb1;
+	parameter [127:0] FmtPipeRegs = {fpnew_pkg_NUM_FP_FORMATS {32'd0}};
 	localparam [1:0] fpnew_pkg_PARALLEL = 1;
-	parameter [1:0] FmtUnitTypes = {fpnew_pkg_PARALLEL};
+	parameter [7:0] FmtUnitTypes = {fpnew_pkg_NUM_FP_FORMATS {fpnew_pkg_PARALLEL}};
 	localparam [1:0] fpnew_pkg_BEFORE = 0;
 	parameter [1:0] PipeConfig = fpnew_pkg_BEFORE;
 	localparam [31:0] NUM_FORMATS = fpnew_pkg_NUM_FP_FORMATS;
@@ -15464,6 +13826,7 @@
 		endcase
 	endfunction
 	localparam [31:0] NUM_OPERANDS = fpnew_pkg_num_operands(OpGroup);
+	input wire IS_FIRST_MERGED;
 	input wire clk_i;
 	input wire rst_ni;
 	input wire [(NUM_OPERANDS * Width) - 1:0] operands_i;
@@ -15472,11 +13835,11 @@
 	localparam [31:0] fpnew_pkg_OP_BITS = 4;
 	input wire [3:0] op_i;
 	input wire op_mod_i;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	input wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] src_fmt_i;
-	input wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] dst_fmt_i;
-	localparam [31:0] fpnew_pkg_INT_FORMAT_BITS = 0;
-	input wire [fpnew_pkg_INT_FORMAT_BITS - 1:0] int_fmt_i;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	input wire [1:0] src_fmt_i;
+	input wire [1:0] dst_fmt_i;
+	localparam [31:0] fpnew_pkg_INT_FORMAT_BITS = 2;
+	input wire [1:0] int_fmt_i;
 	input wire vectorial_op_i;
 	input wire tag_i;
 	input wire in_valid_i;
@@ -15489,26 +13852,26 @@
 	output wire out_valid_o;
 	input wire out_ready_i;
 	output wire busy_o;
-	wire [0:0] fmt_in_ready;
-	wire [0:0] fmt_out_valid;
-	wire [0:0] fmt_out_ready;
-	wire [0:0] fmt_busy;
-	wire [((Width + 6) >= 0 ? Width + 6 : (1 - (Width + 6)) + (Width + 5)):((Width + 6) >= 0 ? 0 : Width + 6)] fmt_outputs;
+	wire [3:0] fmt_in_ready;
+	wire [3:0] fmt_out_valid;
+	wire [3:0] fmt_out_ready;
+	wire [3:0] fmt_busy;
+	wire [((Width + 6) >= 0 ? (4 * (Width + 7)) - 1 : (4 * (1 - (Width + 6))) + (Width + 5)):((Width + 6) >= 0 ? 0 : Width + 6)] fmt_outputs;
 	assign in_ready_o = in_valid_i & fmt_in_ready[dst_fmt_i];
 	localparam [0:0] fpnew_pkg_DONT_CARE = 1'b1;
 	localparam [1:0] fpnew_pkg_MERGED = 2;
 	function automatic fpnew_pkg_any_enabled_multi;
-		input reg [1:0] types;
-		input reg [0:0] cfg;
+		input reg [7:0] types;
+		input reg [0:3] cfg;
 		reg [0:1] _sv2v_jump;
 		begin
 			_sv2v_jump = 2'b00;
-			begin : sv2v_autoblock_113
+			begin : sv2v_autoblock_115
 				reg [31:0] i;
 				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1)
 					if (_sv2v_jump < 2'b10) begin
 						_sv2v_jump = 2'b00;
-						if (cfg[i] && (types[i * 2+:2] == fpnew_pkg_MERGED)) begin
+						if (cfg[i] && (types[(3 - i) * 2+:2] == fpnew_pkg_MERGED)) begin
 							fpnew_pkg_any_enabled_multi = 1'b1;
 							_sv2v_jump = 2'b11;
 						end
@@ -15522,22 +13885,22 @@
 			end
 		end
 	endfunction
-	function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_F6DD6;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+	function automatic [1:0] sv2v_cast_F6DD6;
+		input reg [1:0] inp;
 		sv2v_cast_F6DD6 = inp;
 	endfunction
-	function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] fpnew_pkg_get_first_enabled_multi;
-		input reg [1:0] types;
-		input reg [0:0] cfg;
+	function automatic [1:0] fpnew_pkg_get_first_enabled_multi;
+		input reg [7:0] types;
+		input reg [0:3] cfg;
 		reg [0:1] _sv2v_jump;
 		begin
 			_sv2v_jump = 2'b00;
-			begin : sv2v_autoblock_114
+			begin : sv2v_autoblock_116
 				reg [31:0] i;
 				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1)
 					if (_sv2v_jump < 2'b10) begin
 						_sv2v_jump = 2'b00;
-						if (cfg[i] && (types[i * 2+:2] == fpnew_pkg_MERGED)) begin
+						if (cfg[i] && (types[(3 - i) * 2+:2] == fpnew_pkg_MERGED)) begin
 							fpnew_pkg_get_first_enabled_multi = sv2v_cast_F6DD6(i);
 							_sv2v_jump = 2'b11;
 						end
@@ -15552,32 +13915,53 @@
 		end
 	endfunction
 	function automatic fpnew_pkg_is_first_enabled_multi;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		input reg [1:0] types;
-		input reg [0:0] cfg;
-		reg [0:1] _sv2v_jump;
-		begin
-			_sv2v_jump = 2'b00;
-			begin : sv2v_autoblock_115
-				reg [31:0] i;
-				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1)
-					if (_sv2v_jump < 2'b10) begin
-						_sv2v_jump = 2'b00;
-						if (cfg[i] && (types[i * 2+:2] == fpnew_pkg_MERGED)) begin
-							fpnew_pkg_is_first_enabled_multi = sv2v_cast_F6DD6(i) == fmt;
-							_sv2v_jump = 2'b11;
+		input reg [1:0] fmt;
+		input reg [7:0] types;
+		input reg [0:3] cfg;
+		//reg [0:1] _sv2v_jump;
+		reg temp;
+		reg [1:0] check;
+		reg [31:0] i;
+		begin: checking
+			check[0]=00;
+			check[1]=01;
+			check[2]=10;
+			check[3]=11;
+		end
+		begin: func
+			check[0]=00;
+                        check[1]=01;
+                        check[2]=10;
+                        check[3]=11;
+			//_sv2v_jump = 2'b00;
+			//begin : sv2v_autoblock_117
+				//reg [31:0] i;
+				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1) begin
+					//if (_sv2v_jump < 2'b10) begin
+						//_sv2v_jump = 2'b00;
+						if (cfg[i] && (types[(3 - i) * 2+:2] == fpnew_pkg_MERGED)) begin
+							temp = check[i]==fmt; // (sv2v_cast_F6DD6(i) == fmt);
+							//_sv2v_jump = 2'b11;
+						end else begin
+							temp = 1'b0;
 						end
-					end
-			end
-			if (_sv2v_jump != 2'b11)
-				_sv2v_jump = 2'b00;
-			if (_sv2v_jump == 2'b00) begin
-				fpnew_pkg_is_first_enabled_multi = 1'b0;
-				_sv2v_jump = 2'b11;
-			end
+					//end
+				end
+				fpnew_pkg_is_first_enabled_multi = temp;
+			//end
+			//if (_sv2v_jump != 2'b11)
+				//_sv2v_jump = 2'b00;
+			//if (_sv2v_jump == 2'b00) begin
+				//fpnew_pkg_is_first_enabled_multi = 1'b0;
+				//_sv2v_jump = 2'b11;
+			//end
 		end
 	endfunction
 	localparam [1:0] fpnew_pkg_DISABLED = 0;
+	function automatic signed [31:0] sv2v_cast_32_signed;
+                input reg signed [31:0] inp;
+        	sv2v_cast_32_signed = inp;
+        endfunction
 	generate
 		genvar fmt;
 		function automatic signed [31:0] sv2v_cast_32_signed;
@@ -15586,16 +13970,16 @@
 		endfunction
 		for (fmt = 0; fmt < sv2v_cast_32_signed(NUM_FORMATS); fmt = fmt + 1) begin : gen_parallel_slices
 			localparam [0:0] ANY_MERGED = fpnew_pkg_any_enabled_multi(FmtUnitTypes, FpFmtMask);
-			function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_F6DD6;
-				input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_F6DD6;
+				input reg [1:0] inp;
 				sv2v_cast_F6DD6 = inp;
 			endfunction
-			localparam [0:0] IS_FIRST_MERGED = fpnew_pkg_is_first_enabled_multi(sv2v_cast_F6DD6(fmt), FmtUnitTypes, FpFmtMask);
-			if (FpFmtMask[fmt] && (FmtUnitTypes[fmt * 2+:2] == fpnew_pkg_PARALLEL)) begin : active_format
+			//localparam [0:0] IS_FIRST_MERGED = fpnew_pkg_is_first_enabled_multi(sv2v_cast_F6DD6(fmt), FmtUnitTypes, FpFmtMask);
+			if (FpFmtMask[fmt] && (FmtUnitTypes[(3 - fmt) * 2+:2] == fpnew_pkg_PARALLEL)) begin : active_format
 				wire in_valid;
 				assign in_valid = in_valid_i & (dst_fmt_i == fmt);
-				function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_F6DD6;
-					input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+				function automatic [1:0] sv2v_cast_F6DD6;
+					input reg [1:0] inp;
 					sv2v_cast_F6DD6 = inp;
 				endfunction
 				fpnew_opgroup_fmt_slice_30528 #(
@@ -15603,7 +13987,7 @@
 					.FpFormat(sv2v_cast_F6DD6(fmt)),
 					.Width(Width),
 					.EnableVectors(EnableVectors),
-					.NumPipeRegs(FmtPipeRegs[fmt * 32+:32]),
+					.NumPipeRegs(FmtPipeRegs[(3 - fmt) * 32+:32]),
 					.PipeConfig(PipeConfig)
 				) i_fmt_slice(
 					.clk_i(clk_i),
@@ -15641,7 +14025,7 @@
 				assign fmt_outputs[(fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 1 : Width + 5)] = fpnew_pkg_DONT_CARE;
 				assign fmt_outputs[(fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 0 : Width + 6)] = fpnew_pkg_DONT_CARE;
 			end
-			else if (!FpFmtMask[fmt] || (FmtUnitTypes[fmt * 2+:2] == fpnew_pkg_DISABLED)) begin : disable_fmt
+			else if (!FpFmtMask[fmt] || (FmtUnitTypes[(3 - fmt) * 2+:2] == fpnew_pkg_DISABLED)) begin : disable_fmt
 				assign fmt_in_ready[fmt] = 1'b0;
 				assign fmt_out_valid[fmt] = 1'b0;
 				assign fmt_busy[fmt] = 1'b0;
@@ -15658,17 +14042,17 @@
 		fpnew_pkg_maximum = (a > b ? a : b);
 	endfunction
 	function automatic [31:0] fpnew_pkg_get_num_regs_multi;
-		input reg [31:0] regs;
-		input reg [1:0] types;
-		input reg [0:0] cfg;
+		input reg [127:0] regs;
+		input reg [7:0] types;
+		input reg [0:3] cfg;
 		reg [31:0] res;
 		begin
 			res = 0;
-			begin : sv2v_autoblock_116
+			begin : sv2v_autoblock_118
 				reg [31:0] i;
 				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1)
-					if (cfg[i] && (types[i * 2+:2] == fpnew_pkg_MERGED))
-						res = fpnew_pkg_maximum(res, regs[i * 32+:32]);
+					if (cfg[i] && (types[(3 - i) * 2+:2] == fpnew_pkg_MERGED))
+						res = fpnew_pkg_maximum(res, regs[(3 - i) * 32+:32]);
 			end
 			fpnew_pkg_get_num_regs_multi = res;
 		end
@@ -15678,7 +14062,7 @@
 			localparam FMT = fpnew_pkg_get_first_enabled_multi(FmtUnitTypes, FpFmtMask);
 			localparam REG = fpnew_pkg_get_num_regs_multi(FmtPipeRegs, FmtUnitTypes, FpFmtMask);
 			wire in_valid;
-			assign in_valid = in_valid_i & (FmtUnitTypes[dst_fmt_i * 2+:2] == fpnew_pkg_MERGED);
+			assign in_valid = in_valid_i & (FmtUnitTypes[(3 - dst_fmt_i) * 2+:2] == fpnew_pkg_MERGED);
 			fpnew_opgroup_multifmt_slice_7C482 #(
 				.OpGroup(OpGroup),
 				.Width(Width),
@@ -15722,7 +14106,310 @@
 		.clk_i(clk_i),
 		.rst_ni(rst_ni),
 		.flush_i(flush_i),
-		.rr_i({32'd1 {1'sb0}}),
+		.rr_i({$unsigned(2) {1'sb0}}),
+		.req_i(fmt_out_valid),
+		.gnt_o(fmt_out_ready),
+		.data_i(fmt_outputs),
+		.gnt_i(out_ready_i),
+		.req_o(out_valid_o),
+		.data_o(arbiter_output),
+		.idx_o()
+	);
+	assign result_o = arbiter_output[Width + 6-:((Width + 6) >= 7 ? Width : 8 - (Width + 6))];
+	assign status_o = arbiter_output[6-:5];
+	assign extension_bit_o = arbiter_output[1];
+	assign tag_o = arbiter_output[0];
+	assign busy_o = |fmt_busy;
+endmodule*/
+module fpnew_opgroup_block_BE2AB (
+	clk_i,
+	rst_ni,
+	operands_i,
+	is_boxed_i,
+	rnd_mode_i,
+	op_i,
+	op_mod_i,
+	src_fmt_i,
+	dst_fmt_i,
+	int_fmt_i,
+	vectorial_op_i,
+	tag_i,
+	in_valid_i,
+	in_ready_o,
+	flush_i,
+	result_o,
+	status_o,
+	extension_bit_o,
+	tag_o,
+	out_valid_o,
+	out_ready_i,
+	busy_o
+);
+	localparam [1:0] fpnew_pkg_ADDMUL = 0;
+	parameter [1:0] OpGroup = fpnew_pkg_ADDMUL;
+	parameter [31:0] Width = 32;
+	parameter [0:0] EnableVectors = 1'b1;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	parameter [0:3] FpFmtMask = 1'sb1;
+	localparam [31:0] fpnew_pkg_NUM_INT_FORMATS = 4;
+	parameter [0:3] IntFmtMask = 1'sb1;
+	parameter [127:0] FmtPipeRegs = {fpnew_pkg_NUM_FP_FORMATS {32'd0}};
+	localparam [1:0] fpnew_pkg_PARALLEL = 1;
+	parameter [7:0] FmtUnitTypes = {fpnew_pkg_NUM_FP_FORMATS {fpnew_pkg_PARALLEL}};
+	localparam [1:0] fpnew_pkg_BEFORE = 0;
+	parameter [1:0] PipeConfig = fpnew_pkg_BEFORE;
+	localparam [31:0] NUM_FORMATS = fpnew_pkg_NUM_FP_FORMATS;
+	localparam [1:0] fpnew_pkg_CONV = 3;
+	localparam [1:0] fpnew_pkg_DIVSQRT = 1;
+	localparam [1:0] fpnew_pkg_NONCOMP = 2;
+	function automatic [31:0] fpnew_pkg_num_operands;
+		input reg [1:0] grp;
+		case (grp)
+			fpnew_pkg_ADDMUL: fpnew_pkg_num_operands = 3;
+			fpnew_pkg_DIVSQRT: fpnew_pkg_num_operands = 2;
+			fpnew_pkg_NONCOMP: fpnew_pkg_num_operands = 2;
+			fpnew_pkg_CONV: fpnew_pkg_num_operands = 3;
+			default: fpnew_pkg_num_operands = 0;
+		endcase
+	endfunction
+	localparam [31:0] NUM_OPERANDS = fpnew_pkg_num_operands(OpGroup);
+	input wire clk_i;
+	input wire rst_ni;
+	input wire [(NUM_OPERANDS * Width) - 1:0] operands_i;
+	input wire [(NUM_FORMATS * NUM_OPERANDS) - 1:0] is_boxed_i;
+	input wire [2:0] rnd_mode_i;
+	localparam [31:0] fpnew_pkg_OP_BITS = 4;
+	input wire [3:0] op_i;
+	input wire op_mod_i;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	input wire [1:0] src_fmt_i;
+	input wire [1:0] dst_fmt_i;
+	localparam [31:0] fpnew_pkg_INT_FORMAT_BITS = 2;
+	input wire [1:0] int_fmt_i;
+	input wire vectorial_op_i;
+	input wire tag_i;
+	input wire in_valid_i;
+	output wire in_ready_o;
+	input wire flush_i;
+	output wire [Width - 1:0] result_o;
+	output wire [4:0] status_o;
+	output wire extension_bit_o;
+	output wire tag_o;
+	output wire out_valid_o;
+	input wire out_ready_i;
+	output wire busy_o;
+	wire [3:0] fmt_in_ready;
+	wire [3:0] fmt_out_valid;
+	wire [3:0] fmt_out_ready;
+	wire [3:0] fmt_busy;
+	wire [((Width + 6) >= 0 ? (4 * (Width + 7)) - 1 : (4 * (1 - (Width + 6))) + (Width + 5)):((Width + 6) >= 0 ? 0 : Width + 6)] fmt_outputs;
+	assign in_ready_o = in_valid_i & fmt_in_ready[dst_fmt_i];
+	localparam [0:0] fpnew_pkg_DONT_CARE = 1'b1;
+	localparam [1:0] fpnew_pkg_MERGED = 2;
+	function automatic fpnew_pkg_any_enabled_multi;
+		input reg [7:0] types;
+		input reg [0:3] cfg;
+		reg [0:1] _sv2v_jump;
+		begin
+			_sv2v_jump = 2'b00;
+			begin : sv2v_autoblock_115
+				reg [31:0] i;
+				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1)
+					if (_sv2v_jump < 2'b10) begin
+						_sv2v_jump = 2'b00;
+						if (cfg[i] && (types[(3 - i) * 2+:2] == fpnew_pkg_MERGED)) begin
+							fpnew_pkg_any_enabled_multi = 1'b1;
+							_sv2v_jump = 2'b11;
+						end
+					end
+			end
+			if (_sv2v_jump != 2'b11)
+				_sv2v_jump = 2'b00;
+			if (_sv2v_jump == 2'b00) begin
+				fpnew_pkg_any_enabled_multi = 1'b0;
+				_sv2v_jump = 2'b11;
+			end
+		end
+	endfunction
+	function automatic [1:0] sv2v_cast_F6DD6;
+		input reg [1:0] inp;
+		sv2v_cast_F6DD6 = inp;
+	endfunction
+	function automatic [1:0] fpnew_pkg_get_first_enabled_multi;
+		input reg [7:0] types;
+		input reg [0:3] cfg;
+		reg [0:1] _sv2v_jump;
+		begin
+			_sv2v_jump = 2'b00;
+			begin : sv2v_autoblock_116
+				reg [31:0] i;
+				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1)
+					if (_sv2v_jump < 2'b10) begin
+						_sv2v_jump = 2'b00;
+						if (cfg[i] && (types[(3 - i) * 2+:2] == fpnew_pkg_MERGED)) begin
+							fpnew_pkg_get_first_enabled_multi = sv2v_cast_F6DD6(i);
+							_sv2v_jump = 2'b11;
+						end
+					end
+			end
+			if (_sv2v_jump != 2'b11)
+				_sv2v_jump = 2'b00;
+			if (_sv2v_jump == 2'b00) begin
+				fpnew_pkg_get_first_enabled_multi = sv2v_cast_F6DD6(0);
+				_sv2v_jump = 2'b11;
+			end
+		end
+	endfunction
+	function automatic [31:0] fpnew_pkg_merged_gen;
+		input reg [1:0] grp;
+		case (grp)
+			fpnew_pkg_ADDMUL, fpnew_pkg_NONCOMP: fpnew_pkg_merged_gen = 0;
+			fpnew_pkg_DIVSQRT, fpnew_pkg_CONV: fpnew_pkg_merged_gen = 1;
+			default: fpnew_pkg_merged_gen = 0;
+		endcase
+	endfunction
+	localparam [1:0] fpnew_pkg_DISABLED = 0;
+	generate
+		genvar fmt;
+		function automatic signed [31:0] sv2v_cast_32_signed;
+			input reg signed [31:0] inp;
+			sv2v_cast_32_signed = inp;
+		endfunction
+		for (fmt = 0; fmt < sv2v_cast_32_signed(NUM_FORMATS); fmt = fmt + 1) begin : gen_parallel_slices
+			localparam [0:0] ANY_MERGED = fpnew_pkg_any_enabled_multi(FmtUnitTypes, FpFmtMask);
+			localparam [0:0] IS_FIRST_MERGED = fpnew_pkg_merged_gen(OpGroup);
+			if (FpFmtMask[fmt] && (FmtUnitTypes[(3 - fmt) * 2+:2] == fpnew_pkg_PARALLEL)) begin : active_format
+				wire in_valid;
+				assign in_valid = in_valid_i & (dst_fmt_i == fmt);
+				function automatic [1:0] sv2v_cast_F6DD6;
+					input reg [1:0] inp;
+					sv2v_cast_F6DD6 = inp;
+				endfunction
+				fpnew_opgroup_fmt_slice_30528 #(
+					.OpGroup(OpGroup),
+					.FpFormat(sv2v_cast_F6DD6(fmt)),
+					.Width(Width),
+					.EnableVectors(EnableVectors),
+					.NumPipeRegs(FmtPipeRegs[(3 - fmt) * 32+:32]),
+					.PipeConfig(PipeConfig)
+				) i_fmt_slice(
+					.clk_i(clk_i),
+					.rst_ni(rst_ni),
+					.operands_i(operands_i),
+					.is_boxed_i(is_boxed_i[fmt * NUM_OPERANDS+:NUM_OPERANDS]),
+					.rnd_mode_i(rnd_mode_i),
+					.op_i(op_i),
+					.op_mod_i(op_mod_i),
+					.vectorial_op_i(vectorial_op_i),
+					.tag_i(tag_i),
+					.in_valid_i(in_valid),
+					.in_ready_o(fmt_in_ready[fmt]),
+					.flush_i(flush_i),
+					.result_o(fmt_outputs[((Width + 6) >= 0 ? (fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? Width + 6 : (Width + 6) - (Width + 6)) : (((fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? Width + 6 : (Width + 6) - (Width + 6))) + ((Width + 6) >= 7 ? Width : 8 - (Width + 6))) - 1)-:((Width + 6) >= 7 ? Width : 8 - (Width + 6))]),
+					.status_o(fmt_outputs[((Width + 6) >= 0 ? (fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 6 : Width) : ((fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 6 : Width)) + 4)-:5]),
+					.extension_bit_o(fmt_outputs[(fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 1 : Width + 5)]),
+					.tag_o(fmt_outputs[(fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 0 : Width + 6)]),
+					.out_valid_o(fmt_out_valid[fmt]),
+					.out_ready_i(fmt_out_ready[fmt]),
+					.busy_o(fmt_busy[fmt])
+				);
+			end
+			else if ((FpFmtMask[fmt] && ANY_MERGED) && !IS_FIRST_MERGED) begin : merged_unused
+				localparam FMT = fpnew_pkg_get_first_enabled_multi(FmtUnitTypes, FpFmtMask);
+				function automatic signed [31:0] sv2v_cast_32_signed;
+					input reg signed [31:0] inp;
+					sv2v_cast_32_signed = inp;
+				endfunction
+				assign fmt_in_ready[fmt] = fmt_in_ready[sv2v_cast_32_signed(FMT)];
+				assign fmt_out_valid[fmt] = 1'b0;
+				assign fmt_busy[fmt] = 1'b0;
+				assign fmt_outputs[((Width + 6) >= 0 ? (fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? Width + 6 : (Width + 6) - (Width + 6)) : (((fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? Width + 6 : (Width + 6) - (Width + 6))) + ((Width + 6) >= 7 ? Width : 8 - (Width + 6))) - 1)-:((Width + 6) >= 7 ? Width : 8 - (Width + 6))] = {Width {fpnew_pkg_DONT_CARE}};
+				assign fmt_outputs[((Width + 6) >= 0 ? (fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 6 : Width) : ((fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 6 : Width)) + 4)-:5] = {fpnew_pkg_DONT_CARE, fpnew_pkg_DONT_CARE, fpnew_pkg_DONT_CARE, fpnew_pkg_DONT_CARE, fpnew_pkg_DONT_CARE};
+				assign fmt_outputs[(fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 1 : Width + 5)] = fpnew_pkg_DONT_CARE;
+				assign fmt_outputs[(fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 0 : Width + 6)] = fpnew_pkg_DONT_CARE;
+			end
+			else if (!FpFmtMask[fmt] || (FmtUnitTypes[(3 - fmt) * 2+:2] == fpnew_pkg_DISABLED)) begin : disable_fmt
+				assign fmt_in_ready[fmt] = 1'b0;
+				assign fmt_out_valid[fmt] = 1'b0;
+				assign fmt_busy[fmt] = 1'b0;
+				assign fmt_outputs[((Width + 6) >= 0 ? (fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? Width + 6 : (Width + 6) - (Width + 6)) : (((fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? Width + 6 : (Width + 6) - (Width + 6))) + ((Width + 6) >= 7 ? Width : 8 - (Width + 6))) - 1)-:((Width + 6) >= 7 ? Width : 8 - (Width + 6))] = {Width {fpnew_pkg_DONT_CARE}};
+				assign fmt_outputs[((Width + 6) >= 0 ? (fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 6 : Width) : ((fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 6 : Width)) + 4)-:5] = {fpnew_pkg_DONT_CARE, fpnew_pkg_DONT_CARE, fpnew_pkg_DONT_CARE, fpnew_pkg_DONT_CARE, fpnew_pkg_DONT_CARE};
+				assign fmt_outputs[(fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 1 : Width + 5)] = fpnew_pkg_DONT_CARE;
+				assign fmt_outputs[(fmt * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 0 : Width + 6)] = fpnew_pkg_DONT_CARE;
+			end
+		end
+	endgenerate
+	function automatic signed [31:0] fpnew_pkg_maximum;
+		input reg signed [31:0] a;
+		input reg signed [31:0] b;
+		fpnew_pkg_maximum = (a > b ? a : b);
+	endfunction
+	function automatic [31:0] fpnew_pkg_get_num_regs_multi;
+		input reg [127:0] regs;
+		input reg [7:0] types;
+		input reg [0:3] cfg;
+		reg [31:0] res;
+		begin
+			res = 0;
+			begin : sv2v_autoblock_117
+				reg [31:0] i;
+				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1)
+					if (cfg[i] && (types[(3 - i) * 2+:2] == fpnew_pkg_MERGED))
+						res = fpnew_pkg_maximum(res, regs[(3 - i) * 32+:32]);
+			end
+			fpnew_pkg_get_num_regs_multi = res;
+		end
+	endfunction
+	generate
+		if (fpnew_pkg_any_enabled_multi(FmtUnitTypes, FpFmtMask)) begin : gen_merged_slice
+			localparam FMT = fpnew_pkg_get_first_enabled_multi(FmtUnitTypes, FpFmtMask);
+			localparam REG = fpnew_pkg_get_num_regs_multi(FmtPipeRegs, FmtUnitTypes, FpFmtMask);
+			wire in_valid;
+			assign in_valid = in_valid_i & (FmtUnitTypes[(3 - dst_fmt_i) * 2+:2] == fpnew_pkg_MERGED);
+			fpnew_opgroup_multifmt_slice_7C482 #(
+				.OpGroup(OpGroup),
+				.Width(Width),
+				.FpFmtConfig(FpFmtMask),
+				.IntFmtConfig(IntFmtMask),
+				.EnableVectors(EnableVectors),
+				.NumPipeRegs(REG),
+				.PipeConfig(PipeConfig)
+			) i_multifmt_slice(
+				.clk_i(clk_i),
+				.rst_ni(rst_ni),
+				.operands_i(operands_i),
+				.is_boxed_i(is_boxed_i),
+				.rnd_mode_i(rnd_mode_i),
+				.op_i(op_i),
+				.op_mod_i(op_mod_i),
+				.src_fmt_i(src_fmt_i),
+				.dst_fmt_i(dst_fmt_i),
+				.int_fmt_i(int_fmt_i),
+				.vectorial_op_i(vectorial_op_i),
+				.tag_i(tag_i),
+				.in_valid_i(in_valid),
+				.in_ready_o(fmt_in_ready[FMT]),
+				.flush_i(flush_i),
+				.result_o(fmt_outputs[((Width + 6) >= 0 ? (FMT * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? Width + 6 : (Width + 6) - (Width + 6)) : (((FMT * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? Width + 6 : (Width + 6) - (Width + 6))) + ((Width + 6) >= 7 ? Width : 8 - (Width + 6))) - 1)-:((Width + 6) >= 7 ? Width : 8 - (Width + 6))]),
+				.status_o(fmt_outputs[((Width + 6) >= 0 ? (FMT * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 6 : Width) : ((FMT * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 6 : Width)) + 4)-:5]),
+				.extension_bit_o(fmt_outputs[(FMT * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 1 : Width + 5)]),
+				.tag_o(fmt_outputs[(FMT * ((Width + 6) >= 0 ? Width + 7 : 1 - (Width + 6))) + ((Width + 6) >= 0 ? 0 : Width + 6)]),
+				.out_valid_o(fmt_out_valid[FMT]),
+				.out_ready_i(fmt_out_ready[FMT]),
+				.busy_o(fmt_busy[FMT])
+			);
+		end
+	endgenerate
+	wire [Width + 6:0] arbiter_output;
+	rr_arb_tree_252F1_F315E #(
+		.DataType_Width(Width),
+		.NumIn(NUM_FORMATS),
+		.AxiVldRdy(1'b1)
+	) i_arbiter(
+		.clk_i(clk_i),
+		.rst_ni(rst_ni),
+		.flush_i(flush_i),
+		.rr_i({$unsigned(2) {1'sb0}}),
 		.req_i(fmt_out_valid),
 		.gnt_o(fmt_out_ready),
 		.data_i(fmt_outputs),
@@ -15760,13 +14447,13 @@
 );
 	localparam [1:0] fpnew_pkg_ADDMUL = 0;
 	parameter [1:0] OpGroup = fpnew_pkg_ADDMUL;
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_CA66C;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	function automatic [1:0] sv2v_cast_CA66C;
+		input reg [1:0] inp;
 		sv2v_cast_CA66C = inp;
 	endfunction
-	parameter [fpnew_pkg_FP_FORMAT_BITS - 1:0] FpFormat = sv2v_cast_CA66C(0);
+	parameter [1:0] FpFormat = sv2v_cast_CA66C(0);
 	parameter [31:0] Width = 32;
 	parameter [0:0] EnableVectors = 1'b1;
 	parameter [31:0] NumPipeRegs = 0;
@@ -15806,15 +14493,15 @@
 	output wire out_valid_o;
 	input wire out_ready_i;
 	output wire busy_o;
-	localparam [63:0] fpnew_pkg_FP_ENCODINGS = 64'h0000000800000017;
+	localparam [255:0] fpnew_pkg_FP_ENCODINGS = 256'h00000008000000170000000b00000034000000050000000a0000000500000002;
 	function automatic [31:0] fpnew_pkg_fp_width;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32]) + 1;
+		input reg [1:0] fmt;
+		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32]) + 1;
 	endfunction
 	localparam [31:0] FP_WIDTH = fpnew_pkg_fp_width(FpFormat);
 	function automatic [31:0] fpnew_pkg_num_lanes;
 		input reg [31:0] width;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
+		input reg [1:0] fmt;
 		input reg vec;
 		fpnew_pkg_num_lanes = (vec ? width / fpnew_pkg_fp_width(fmt) : 1);
 	endfunction
@@ -15869,7 +14556,7 @@
 					sv2v_cast_32_signed = inp;
 				endfunction
 				always @(*) begin : prepare_input
-					begin : sv2v_autoblock_117
+					begin : sv2v_autoblock_119
 						reg signed [31:0] i;
 						for (i = 0; i < sv2v_cast_32_signed(NUM_OPERANDS); i = i + 1)
 							local_operands[i * FP_WIDTH+:FP_WIDTH] = operands_i[(i * Width) + (((($unsigned(lane) + 1) * FP_WIDTH) - 1) >= ($unsigned(lane) * FP_WIDTH) ? (($unsigned(lane) + 1) * FP_WIDTH) - 1 : (((($unsigned(lane) + 1) * FP_WIDTH) - 1) + (((($unsigned(lane) + 1) * FP_WIDTH) - 1) >= ($unsigned(lane) * FP_WIDTH) ? (((($unsigned(lane) + 1) * FP_WIDTH) - 1) - ($unsigned(lane) * FP_WIDTH)) + 1 : (($unsigned(lane) * FP_WIDTH) - ((($unsigned(lane) + 1) * FP_WIDTH) - 1)) + 1)) - 1)-:(((($unsigned(lane) + 1) * FP_WIDTH) - 1) >= ($unsigned(lane) * FP_WIDTH) ? (((($unsigned(lane) + 1) * FP_WIDTH) - 1) - ($unsigned(lane) * FP_WIDTH)) + 1 : (($unsigned(lane) * FP_WIDTH) - ((($unsigned(lane) + 1) * FP_WIDTH) - 1)) + 1)];
@@ -15974,7 +14661,7 @@
 	always @(*) begin : output_processing
 		reg [4:0] temp_status;
 		temp_status = {5 {1'sb0}};
-		begin : sv2v_autoblock_118
+		begin : sv2v_autoblock_120
 			reg signed [31:0] i;
 			for (i = 0; i < sv2v_cast_32_signed(NUM_LANES); i = i + 1)
 				temp_status = temp_status | lane_status[i * 5+:5];
@@ -16009,10 +14696,10 @@
 	localparam [1:0] fpnew_pkg_CONV = 3;
 	parameter [1:0] OpGroup = fpnew_pkg_CONV;
 	parameter [31:0] Width = 64;
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	parameter [0:0] FpFmtConfig = 1'sb1;
-	localparam [31:0] fpnew_pkg_NUM_INT_FORMATS = 1;
-	parameter [0:0] IntFmtConfig = 1'sb1;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	parameter [0:3] FpFmtConfig = 1'sb1;
+	localparam [31:0] fpnew_pkg_NUM_INT_FORMATS = 4;
+	parameter [0:3] IntFmtConfig = 1'sb1;
 	parameter [0:0] EnableVectors = 1'b1;
 	parameter [31:0] NumPipeRegs = 0;
 	localparam [1:0] fpnew_pkg_BEFORE = 0;
@@ -16040,11 +14727,11 @@
 	localparam [31:0] fpnew_pkg_OP_BITS = 4;
 	input wire [3:0] op_i;
 	input wire op_mod_i;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	input wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] src_fmt_i;
-	input wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] dst_fmt_i;
-	localparam [31:0] fpnew_pkg_INT_FORMAT_BITS = 0;
-	input wire [fpnew_pkg_INT_FORMAT_BITS - 1:0] int_fmt_i;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	input wire [1:0] src_fmt_i;
+	input wire [1:0] dst_fmt_i;
+	localparam [31:0] fpnew_pkg_INT_FORMAT_BITS = 2;
+	input wire [1:0] int_fmt_i;
 	input wire vectorial_op_i;
 	input wire tag_i;
 	input wire in_valid_i;
@@ -16057,26 +14744,26 @@
 	output wire out_valid_o;
 	input wire out_ready_i;
 	output wire busy_o;
-	localparam [63:0] fpnew_pkg_FP_ENCODINGS = 64'h0000000800000017;
+	localparam [255:0] fpnew_pkg_FP_ENCODINGS = 256'h00000008000000170000000b00000034000000050000000a0000000500000002;
 	function automatic [31:0] fpnew_pkg_fp_width;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32]) + 1;
+		input reg [1:0] fmt;
+		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32]) + 1;
 	endfunction
 	function automatic signed [31:0] fpnew_pkg_maximum;
 		input reg signed [31:0] a;
 		input reg signed [31:0] b;
 		fpnew_pkg_maximum = (a > b ? a : b);
 	endfunction
-	function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_38622;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+	function automatic [1:0] sv2v_cast_38622;
+		input reg [1:0] inp;
 		sv2v_cast_38622 = inp;
 	endfunction
 	function automatic [31:0] fpnew_pkg_max_fp_width;
-		input reg [0:0] cfg;
+		input reg [0:3] cfg;
 		reg [31:0] res;
 		begin
 			res = 0;
-			begin : sv2v_autoblock_119
+			begin : sv2v_autoblock_121
 				reg [31:0] i;
 				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1)
 					if (cfg[i])
@@ -16086,23 +14773,29 @@
 		end
 	endfunction
 	localparam [31:0] MAX_FP_WIDTH = fpnew_pkg_max_fp_width(FpFmtConfig);
-	localparam [fpnew_pkg_INT_FORMAT_BITS - 1:0] fpnew_pkg_INT32 = 0;
+	localparam [1:0] fpnew_pkg_INT16 = 1;
+	localparam [1:0] fpnew_pkg_INT32 = 2;
+	localparam [1:0] fpnew_pkg_INT64 = 3;
+	localparam [1:0] fpnew_pkg_INT8 = 0;
 	function automatic [31:0] fpnew_pkg_int_width;
-		input reg [fpnew_pkg_INT_FORMAT_BITS - 1:0] ifmt;
+		input reg [1:0] ifmt;
 		case (ifmt)
+			fpnew_pkg_INT8: fpnew_pkg_int_width = 8;
+			fpnew_pkg_INT16: fpnew_pkg_int_width = 16;
 			fpnew_pkg_INT32: fpnew_pkg_int_width = 32;
+			fpnew_pkg_INT64: fpnew_pkg_int_width = 64;
 		endcase
 	endfunction
-	function automatic [fpnew_pkg_INT_FORMAT_BITS - 1:0] sv2v_cast_E880F;
-		input reg [fpnew_pkg_INT_FORMAT_BITS - 1:0] inp;
+	function automatic [1:0] sv2v_cast_E880F;
+		input reg [1:0] inp;
 		sv2v_cast_E880F = inp;
 	endfunction
 	function automatic [31:0] fpnew_pkg_max_int_width;
-		input reg [0:0] cfg;
+		input reg [0:3] cfg;
 		reg [31:0] res;
 		begin
 			res = 0;
-			begin : sv2v_autoblock_120
+			begin : sv2v_autoblock_122
 				reg signed [31:0] ifmt;
 				for (ifmt = 0; ifmt < fpnew_pkg_NUM_INT_FORMATS; ifmt = ifmt + 1)
 					if (cfg[ifmt])
@@ -16118,11 +14811,11 @@
 		fpnew_pkg_minimum = (a < b ? a : b);
 	endfunction
 	function automatic [31:0] fpnew_pkg_min_fp_width;
-		input reg [0:0] cfg;
+		input reg [0:3] cfg;
 		reg [31:0] res;
 		begin
 			res = fpnew_pkg_max_fp_width(cfg);
-			begin : sv2v_autoblock_121
+			begin : sv2v_autoblock_123
 				reg [31:0] i;
 				for (i = 0; i < fpnew_pkg_NUM_FP_FORMATS; i = i + 1)
 					if (cfg[i])
@@ -16133,13 +14826,13 @@
 	endfunction
 	function automatic [31:0] fpnew_pkg_max_num_lanes;
 		input reg [31:0] width;
-		input reg [0:0] cfg;
+		input reg [0:3] cfg;
 		input reg vec;
 		fpnew_pkg_max_num_lanes = (vec ? width / fpnew_pkg_min_fp_width(cfg) : 1);
 	endfunction
 	localparam [31:0] NUM_LANES = fpnew_pkg_max_num_lanes(Width, FpFmtConfig, 1'b1);
 	localparam [31:0] NUM_INT_FORMATS = fpnew_pkg_NUM_INT_FORMATS;
-	localparam [31:0] FMT_BITS = fpnew_pkg_maximum(0, 0);
+	localparam [31:0] FMT_BITS = fpnew_pkg_maximum(2, 2);
 	localparam [31:0] AUX_BITS = FMT_BITS + 2;
 	wire [NUM_LANES - 1:0] lane_in_ready;
 	wire [NUM_LANES - 1:0] lane_out_valid;
@@ -16186,10 +14879,10 @@
 			assign conv_target_d = (dst_is_cpk ? operands_i[2 * Width+:Width] : operands_i[Width+:Width]);
 		end
 	endgenerate
-	reg [0:0] is_boxed_1op;
-	reg [1:0] is_boxed_2op;
+	reg [3:0] is_boxed_1op;
+	reg [7:0] is_boxed_2op;
 	always @(*) begin : boxed_2op
-		begin : sv2v_autoblock_122
+		begin : sv2v_autoblock_124
 			reg signed [31:0] fmt;
 			for (fmt = 0; fmt < NUM_FORMATS; fmt = fmt + 1)
 				begin
@@ -16198,12 +14891,12 @@
 				end
 		end
 	end
-	localparam [0:0] fpnew_pkg_CPK_FORMATS = 5'b11000;
-	function automatic [0:0] fpnew_pkg_get_conv_lane_formats;
+	localparam [0:3] fpnew_pkg_CPK_FORMATS = 5'b11000;
+	function automatic [0:3] fpnew_pkg_get_conv_lane_formats;
 		input reg [31:0] width;
-		input reg [0:0] cfg;
+		input reg [0:3] cfg;
 		input reg [31:0] lane_no;
-		reg [0:0] res;
+		reg [0:3] res;
 		reg [31:0] fmt;
 		begin
 			for (fmt = 0; fmt < fpnew_pkg_NUM_FP_FORMATS; fmt = fmt + 1)
@@ -16211,20 +14904,20 @@
 			fpnew_pkg_get_conv_lane_formats = res;
 		end
 	endfunction
-	function automatic [0:0] fpnew_pkg_get_conv_lane_int_formats;
+	function automatic [0:3] fpnew_pkg_get_conv_lane_int_formats;
 		input reg [31:0] width;
-		input reg [0:0] cfg;
-		input reg [0:0] icfg;
+		input reg [0:3] cfg;
+		input reg [0:3] icfg;
 		input reg [31:0] lane_no;
-		reg [0:0] res;
-		reg [0:0] lanefmts;
+		reg [0:3] res;
+		reg [0:3] lanefmts;
 		begin
-			res = 1'b0;
+			res = {4 {1'sb0}};
 			lanefmts = fpnew_pkg_get_conv_lane_formats(width, cfg, lane_no);
-			begin : sv2v_autoblock_123
+			begin : sv2v_autoblock_125
 				reg [31:0] ifmt;
 				for (ifmt = 0; ifmt < fpnew_pkg_NUM_INT_FORMATS; ifmt = ifmt + 1)
-					begin : sv2v_autoblock_124
+					begin : sv2v_autoblock_126
 						reg [31:0] fmt;
 						for (fmt = 0; fmt < fpnew_pkg_NUM_FP_FORMATS; fmt = fmt + 1)
 							res[ifmt] = res[ifmt] | ((icfg[ifmt] && lanefmts[fmt]) && (fpnew_pkg_fp_width(sv2v_cast_38622(fmt)) == fpnew_pkg_int_width(sv2v_cast_E880F(ifmt))));
@@ -16233,11 +14926,11 @@
 			fpnew_pkg_get_conv_lane_int_formats = res;
 		end
 	endfunction
-	function automatic [0:0] fpnew_pkg_get_lane_formats;
+	function automatic [0:3] fpnew_pkg_get_lane_formats;
 		input reg [31:0] width;
-		input reg [0:0] cfg;
+		input reg [0:3] cfg;
 		input reg [31:0] lane_no;
-		reg [0:0] res;
+		reg [0:3] res;
 		reg [31:0] fmt;
 		begin
 			for (fmt = 0; fmt < fpnew_pkg_NUM_FP_FORMATS; fmt = fmt + 1)
@@ -16245,20 +14938,20 @@
 			fpnew_pkg_get_lane_formats = res;
 		end
 	endfunction
-	function automatic [0:0] fpnew_pkg_get_lane_int_formats;
+	function automatic [0:3] fpnew_pkg_get_lane_int_formats;
 		input reg [31:0] width;
-		input reg [0:0] cfg;
-		input reg [0:0] icfg;
+		input reg [0:3] cfg;
+		input reg [0:3] icfg;
 		input reg [31:0] lane_no;
-		reg [0:0] res;
-		reg [0:0] lanefmts;
+		reg [0:3] res;
+		reg [0:3] lanefmts;
 		begin
-			res = 1'b0;
+			res = {4 {1'sb0}};
 			lanefmts = fpnew_pkg_get_lane_formats(width, cfg, lane_no);
-			begin : sv2v_autoblock_125
+			begin : sv2v_autoblock_127
 				reg [31:0] ifmt;
 				for (ifmt = 0; ifmt < fpnew_pkg_NUM_INT_FORMATS; ifmt = ifmt + 1)
-					begin : sv2v_autoblock_126
+					begin : sv2v_autoblock_128
 						reg [31:0] fmt;
 						for (fmt = 0; fmt < fpnew_pkg_NUM_FP_FORMATS; fmt = fmt + 1)
 							if (fpnew_pkg_fp_width(sv2v_cast_38622(fmt)) == fpnew_pkg_int_width(sv2v_cast_E880F(ifmt)))
@@ -16278,13 +14971,13 @@
 		endfunction
 		for (lane = 0; lane < sv2v_cast_32_signed(NUM_LANES); lane = lane + 1) begin : gen_num_lanes
 			localparam [31:0] LANE = $unsigned(lane);
-			localparam [0:0] ACTIVE_FORMATS = fpnew_pkg_get_lane_formats(Width, FpFmtConfig, LANE);
-			localparam [0:0] ACTIVE_INT_FORMATS = fpnew_pkg_get_lane_int_formats(Width, FpFmtConfig, IntFmtConfig, LANE);
+			localparam [0:3] ACTIVE_FORMATS = fpnew_pkg_get_lane_formats(Width, FpFmtConfig, LANE);
+			localparam [0:3] ACTIVE_INT_FORMATS = fpnew_pkg_get_lane_int_formats(Width, FpFmtConfig, IntFmtConfig, LANE);
 			localparam [31:0] MAX_WIDTH = fpnew_pkg_max_fp_width(ACTIVE_FORMATS);
-			localparam [0:0] CONV_FORMATS = fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, LANE);
-			localparam [0:0] CONV_INT_FORMATS = fpnew_pkg_get_conv_lane_int_formats(Width, FpFmtConfig, IntFmtConfig, LANE);
+			localparam [0:3] CONV_FORMATS = fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, LANE);
+			localparam [0:3] CONV_INT_FORMATS = fpnew_pkg_get_conv_lane_int_formats(Width, FpFmtConfig, IntFmtConfig, LANE);
 			localparam [31:0] CONV_WIDTH = fpnew_pkg_max_fp_width(CONV_FORMATS);
-			localparam [0:0] LANE_FORMATS = (OpGroup == fpnew_pkg_CONV ? CONV_FORMATS : ACTIVE_FORMATS);
+			localparam [0:3] LANE_FORMATS = (OpGroup == fpnew_pkg_CONV ? CONV_FORMATS : ACTIVE_FORMATS);
 			localparam [31:0] LANE_WIDTH = (OpGroup == fpnew_pkg_CONV ? CONV_WIDTH : MAX_WIDTH);
 			wire [LANE_WIDTH - 1:0] local_result;
 			if ((lane == 0) || EnableVectors) begin : active_lane
@@ -16299,26 +14992,26 @@
 					input reg [31:0] inp;
 					sv2v_cast_32 = inp;
 				endfunction
-				function automatic [0:0] sv2v_cast_1;
-					input reg [0:0] inp;
-					sv2v_cast_1 = inp;
+				function automatic [3:0] sv2v_cast_4;
+					input reg [3:0] inp;
+					sv2v_cast_4 = inp;
 				endfunction
 				always @(*) begin : prepare_input
-					begin : sv2v_autoblock_127
+					begin : sv2v_autoblock_129
 						reg [31:0] i;
 						for (i = 0; i < NUM_OPERANDS; i = i + 1)
-							local_operands[i * sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))))))+:sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))))))] = operands_i[i * Width+:Width] >> (LANE * fpnew_pkg_fp_width(src_fmt_i));
+							local_operands[i * sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))))))+:sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))))))] = operands_i[i * Width+:Width] >> (LANE * fpnew_pkg_fp_width(src_fmt_i));
 					end
 					if (OpGroup == fpnew_pkg_CONV)
 						if (op_i == fpnew_pkg_I2F)
-							local_operands[0+:sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))))))] = operands_i[0+:Width] >> (LANE * fpnew_pkg_int_width(int_fmt_i));
+							local_operands[0+:sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))))))] = operands_i[0+:Width] >> (LANE * fpnew_pkg_int_width(int_fmt_i));
 						else if (op_i == fpnew_pkg_F2F) begin
 							if ((vectorial_op && op_mod_i) && is_up_cast)
-								local_operands[0+:sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))))))] = operands_i[0+:Width] >> ((LANE * fpnew_pkg_fp_width(src_fmt_i)) + (MAX_FP_WIDTH / 2));
+								local_operands[0+:sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))))))] = operands_i[0+:Width] >> ((LANE * fpnew_pkg_fp_width(src_fmt_i)) + (MAX_FP_WIDTH / 2));
 						end
 						else if (dst_is_cpk)
 							if (lane == 1)
-								local_operands[0+:sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))))))] = operands_i[Width + (LANE_WIDTH - 1)-:LANE_WIDTH];
+								local_operands[0+:sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))))))] = operands_i[Width + (LANE_WIDTH - 1)-:LANE_WIDTH];
 				end
 				if (OpGroup == fpnew_pkg_ADDMUL) begin : lane_instance
 					fpnew_fma_multi_E4D0A_BE123 #(
@@ -16356,9 +15049,9 @@
 						input reg [31:0] inp;
 						sv2v_cast_32 = inp;
 					endfunction
-					function automatic [0:0] sv2v_cast_1;
-						input reg [0:0] inp;
-						sv2v_cast_1 = inp;
+					function automatic [3:0] sv2v_cast_4;
+						input reg [3:0] inp;
+						sv2v_cast_4 = inp;
 					endfunction
 					fpnew_divsqrt_multi_28154_735ED #(
 						.AuxType_AUX_BITS(AUX_BITS),
@@ -16368,7 +15061,7 @@
 					) i_fpnew_divsqrt_multi(
 						.clk_i(clk_i),
 						.rst_ni(rst_ni),
-						.operands_i(local_operands[0+:sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))))) * 2]),
+						.operands_i(local_operands[0+:sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))))) * 2]),
 						.is_boxed_i(is_boxed_2op),
 						.rnd_mode_i(rnd_mode_i),
 						.op_i(op_i),
@@ -16394,9 +15087,9 @@
 						input reg [31:0] inp;
 						sv2v_cast_32 = inp;
 					endfunction
-					function automatic [0:0] sv2v_cast_1;
-						input reg [0:0] inp;
-						sv2v_cast_1 = inp;
+					function automatic [3:0] sv2v_cast_4;
+						input reg [3:0] inp;
+						sv2v_cast_4 = inp;
 					endfunction
 					fpnew_cast_multi_8A35C_87530 #(
 						.AuxType_AUX_BITS(AUX_BITS),
@@ -16407,7 +15100,7 @@
 					) i_fpnew_cast_multi(
 						.clk_i(clk_i),
 						.rst_ni(rst_ni),
-						.operands_i(local_operands[0+:sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_1(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))))))]),
+						.operands_i(local_operands[0+:sv2v_cast_32((OpGroup == fpnew_pkg_CONV ? sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) : sv2v_cast_32(fpnew_pkg_max_fp_width(sv2v_cast_4(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))))))]),
 						.is_boxed_i(is_boxed_1op),
 						.rnd_mode_i(rnd_mode_i),
 						.op_i(op_i),
@@ -16432,8 +15125,8 @@
 				end
 				assign out_ready = out_ready_i & ((lane == 0) | result_is_vector);
 				assign lane_out_valid[lane] = out_valid & ((lane == 0) | result_is_vector);
-				function automatic [0:0] sv2v_cast_18C91;
-					input reg [0:0] inp;
+				function automatic [3:0] sv2v_cast_18C91;
+					input reg [3:0] inp;
 					sv2v_cast_18C91 = inp;
 				endfunction
 				assign local_result = (lane_out_valid[lane] ? op_result : {(OpGroup == fpnew_pkg_CONV ? fpnew_pkg_max_fp_width(sv2v_cast_18C91(fpnew_pkg_get_conv_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane))))) : fpnew_pkg_max_fp_width(sv2v_cast_18C91(fpnew_pkg_get_lane_formats(Width, FpFmtConfig, sv2v_cast_32($unsigned(lane)))))) {lane_ext_bit[0]}});
@@ -16442,8 +15135,8 @@
 			else begin : inactive_lane
 				assign lane_out_valid[lane] = 1'b0;
 				assign lane_in_ready[lane] = 1'b0;
-				function automatic [0:0] sv2v_cast_18C91;
-					input reg [0:0] inp;
+				function automatic [3:0] sv2v_cast_18C91;
+					input reg [3:0] inp;
 					sv2v_cast_18C91 = inp;
 				endfunction
 				function automatic [31:0] sv2v_cast_32;
@@ -16456,8 +15149,8 @@
 			end
 			genvar fmt;
 			for (fmt = 0; fmt < NUM_FORMATS; fmt = fmt + 1) begin : pack_fp_result
-				function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_38622;
-					input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+				function automatic [1:0] sv2v_cast_38622;
+					input reg [1:0] inp;
 					sv2v_cast_38622 = inp;
 				endfunction
 				localparam [31:0] FP_WIDTH = fpnew_pkg_fp_width(sv2v_cast_38622(fmt));
@@ -16472,8 +15165,8 @@
 			if (OpGroup == fpnew_pkg_CONV) begin : int_results_enabled
 				genvar ifmt;
 				for (ifmt = 0; ifmt < NUM_INT_FORMATS; ifmt = ifmt + 1) begin : pack_int_result
-					function automatic [fpnew_pkg_INT_FORMAT_BITS - 1:0] sv2v_cast_E880F;
-						input reg [fpnew_pkg_INT_FORMAT_BITS - 1:0] inp;
+					function automatic [1:0] sv2v_cast_E880F;
+						input reg [1:0] inp;
 						sv2v_cast_E880F = inp;
 					endfunction
 					localparam [31:0] INT_WIDTH = fpnew_pkg_int_width(sv2v_cast_E880F(ifmt));
@@ -16491,8 +15184,8 @@
 	generate
 		genvar fmt;
 		for (fmt = 0; fmt < NUM_FORMATS; fmt = fmt + 1) begin : extend_fp_result
-			function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_38622;
-				input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
+			function automatic [1:0] sv2v_cast_38622;
+				input reg [1:0] inp;
 				sv2v_cast_38622 = inp;
 			endfunction
 			localparam [31:0] FP_WIDTH = fpnew_pkg_fp_width(sv2v_cast_38622(fmt));
@@ -16539,7 +15232,7 @@
 	always @(*) begin : output_processing
 		reg [4:0] temp_status;
 		temp_status = {5 {1'sb0}};
-		begin : sv2v_autoblock_128
+		begin : sv2v_autoblock_130
 			reg signed [31:0] i;
 			for (i = 0; i < sv2v_cast_32_signed(NUM_LANES); i = i + 1)
 				temp_status = temp_status | lane_status[i * 5+:5];
@@ -16614,33 +15307,33 @@
 	out_ready_i,
 	busy_o
 );
-	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 1;
-	localparam [31:0] fpnew_pkg_NUM_INT_FORMATS = 1;
-	function automatic [0:0] sv2v_cast_1;
-		input reg [0:0] inp;
-		sv2v_cast_1 = inp;
+	localparam [31:0] fpnew_pkg_NUM_FP_FORMATS = 4;
+	localparam [31:0] fpnew_pkg_NUM_INT_FORMATS = 4;
+	function automatic [3:0] sv2v_cast_4;
+		input reg [3:0] inp;
+		sv2v_cast_4 = inp;
 	endfunction
-	localparam [35:0] fpnew_pkg_RV64D_Xsflt = {34'b0000000000000000000000000100000011, sv2v_cast_1(5'b11111), sv2v_cast_1(4'b1111)};
-	parameter [35:0] Features = fpnew_pkg_RV64D_Xsflt;
+	localparam [41:0] fpnew_pkg_RV64D_Xsflt = {34'b0000000000000000000000000100000011, sv2v_cast_4(5'b11111), 4'b1111};
+	parameter [41:0] Features = fpnew_pkg_RV64D_Xsflt;
 	localparam [31:0] fpnew_pkg_NUM_OPGROUPS = 4;
 	localparam [1:0] fpnew_pkg_BEFORE = 0;
 	localparam [1:0] fpnew_pkg_MERGED = 2;
 	localparam [1:0] fpnew_pkg_PARALLEL = 1;
-	function automatic [31:0] sv2v_cast_33F2F;
-		input reg [31:0] inp;
+	function automatic [127:0] sv2v_cast_33F2F;
+		input reg [127:0] inp;
 		sv2v_cast_33F2F = inp;
 	endfunction
-	function automatic [127:0] sv2v_cast_128;
-		input reg [127:0] inp;
-		sv2v_cast_128 = inp;
+	function automatic [511:0] sv2v_cast_512;
+		input reg [511:0] inp;
+		sv2v_cast_512 = inp;
 	endfunction
-	function automatic [7:0] sv2v_cast_8;
-		input reg [7:0] inp;
-		sv2v_cast_8 = inp;
+	function automatic [31:0] sv2v_cast_32;
+		input reg [31:0] inp;
+		sv2v_cast_32 = inp;
 	endfunction
-	localparam [137:0] fpnew_pkg_DEFAULT_NOREGS = {sv2v_cast_128({fpnew_pkg_NUM_OPGROUPS {sv2v_cast_33F2F(0)}}), sv2v_cast_8({{fpnew_pkg_PARALLEL}, {fpnew_pkg_MERGED}, {fpnew_pkg_PARALLEL}, {fpnew_pkg_MERGED}}), fpnew_pkg_BEFORE};
-	parameter [137:0] Implementation = fpnew_pkg_DEFAULT_NOREGS;
-	localparam [31:0] WIDTH = Features[35-:32];
+	localparam [545:0] fpnew_pkg_DEFAULT_NOREGS = {sv2v_cast_512({fpnew_pkg_NUM_OPGROUPS {sv2v_cast_33F2F(0)}}), sv2v_cast_32({{fpnew_pkg_NUM_FP_FORMATS {fpnew_pkg_PARALLEL}}, {fpnew_pkg_NUM_FP_FORMATS {fpnew_pkg_MERGED}}, {fpnew_pkg_NUM_FP_FORMATS {fpnew_pkg_PARALLEL}}, {fpnew_pkg_NUM_FP_FORMATS {fpnew_pkg_MERGED}}}), fpnew_pkg_BEFORE};
+	parameter [545:0] Implementation = fpnew_pkg_DEFAULT_NOREGS;
+	localparam [31:0] WIDTH = Features[41-:32];
 	localparam [31:0] NUM_OPERANDS = 3;
 	input wire clk_i;
 	input wire rst_ni;
@@ -16649,11 +15342,11 @@
 	localparam [31:0] fpnew_pkg_OP_BITS = 4;
 	input wire [3:0] op_i;
 	input wire op_mod_i;
-	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 0;
-	input wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] src_fmt_i;
-	input wire [fpnew_pkg_FP_FORMAT_BITS - 1:0] dst_fmt_i;
-	localparam [31:0] fpnew_pkg_INT_FORMAT_BITS = 0;
-	input wire [fpnew_pkg_INT_FORMAT_BITS - 1:0] int_fmt_i;
+	localparam [31:0] fpnew_pkg_FP_FORMAT_BITS = 2;
+	input wire [1:0] src_fmt_i;
+	input wire [1:0] dst_fmt_i;
+	localparam [31:0] fpnew_pkg_INT_FORMAT_BITS = 2;
+	input wire [1:0] int_fmt_i;
 	input wire vectorial_op_i;
 	input wire tag_i;
 	input wire in_valid_i;
@@ -16673,7 +15366,7 @@
 	wire [3:0] opgrp_ext;
 	wire [3:0] opgrp_busy;
 	wire [((WIDTH + 5) >= 0 ? (4 * (WIDTH + 6)) - 1 : (4 * (1 - (WIDTH + 5))) + (WIDTH + 4)):((WIDTH + 5) >= 0 ? 0 : WIDTH + 5)] opgrp_outputs;
-	wire [2:0] is_boxed;
+	wire [11:0] is_boxed;
 	localparam [3:0] fpnew_pkg_ADD = 2;
 	localparam [1:0] fpnew_pkg_ADDMUL = 0;
 	localparam [3:0] fpnew_pkg_CLASSIFY = 9;
@@ -16704,29 +15397,29 @@
 		endcase
 	endfunction
 	assign in_ready_o = in_valid_i & opgrp_in_ready[fpnew_pkg_get_opgroup(op_i)];
-	localparam [63:0] fpnew_pkg_FP_ENCODINGS = 64'h0000000800000017;
+	localparam [255:0] fpnew_pkg_FP_ENCODINGS = 256'h00000008000000170000000b00000034000000050000000a0000000500000002;
 	function automatic [31:0] fpnew_pkg_fp_width;
-		input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] fmt;
-		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[(fmt * 64) + 31-:32]) + 1;
+		input reg [1:0] fmt;
+		fpnew_pkg_fp_width = (fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 63-:32] + fpnew_pkg_FP_ENCODINGS[((3 - fmt) * 64) + 31-:32]) + 1;
 	endfunction
+	function automatic signed [31:0] sv2v_cast_32_signed;
+                input reg signed [31:0] inp;
+	        sv2v_cast_32_signed = inp;
+        endfunction
+	function automatic [1:0] sv2v_cast_B5DD5;
+                input reg [1:0] inp;
+        	sv2v_cast_B5DD5 = inp;
+        endfunction
 	generate
 		genvar fmt;
-		function automatic signed [31:0] sv2v_cast_32_signed;
+		/*function automatic signed [31:0] sv2v_cast_32_signed;
 			input reg signed [31:0] inp;
 			sv2v_cast_32_signed = inp;
-		endfunction
+		endfunction*/
 		for (fmt = 0; fmt < sv2v_cast_32_signed(NUM_FORMATS); fmt = fmt + 1) begin : gen_nanbox_check
-			function automatic [fpnew_pkg_FP_FORMAT_BITS - 1:0] sv2v_cast_B5DD5;
-				input reg [fpnew_pkg_FP_FORMAT_BITS - 1:0] inp;
-				sv2v_cast_B5DD5 = inp;
-			endfunction
 			localparam [31:0] FP_WIDTH = fpnew_pkg_fp_width(sv2v_cast_B5DD5(fmt));
-			if (Features[2] && (FP_WIDTH < WIDTH)) begin : check
+			if (Features[8] && (FP_WIDTH < WIDTH)) begin : check
 				genvar op;
-				function automatic signed [31:0] sv2v_cast_32_signed;
-					input reg signed [31:0] inp;
-					sv2v_cast_32_signed = inp;
-				endfunction
 				for (op = 0; op < sv2v_cast_32_signed(NUM_OPERANDS); op = op + 1) begin : operands
 					assign is_boxed[(fmt * NUM_OPERANDS) + op] = (!vectorial_op_i ? operands_i[(op * WIDTH) + ((WIDTH - 1) >= FP_WIDTH ? WIDTH - 1 : ((WIDTH - 1) + ((WIDTH - 1) >= FP_WIDTH ? ((WIDTH - 1) - FP_WIDTH) + 1 : (FP_WIDTH - (WIDTH - 1)) + 1)) - 1)-:((WIDTH - 1) >= FP_WIDTH ? ((WIDTH - 1) - FP_WIDTH) + 1 : (FP_WIDTH - (WIDTH - 1)) + 1)] == {((WIDTH - 1) >= FP_WIDTH ? ((WIDTH - 1) - FP_WIDTH) + 1 : (FP_WIDTH - (WIDTH - 1)) + 1) {1'sb1}} : 1'b1);
 				end
@@ -16762,20 +15455,21 @@
 				sv2v_cast_32 = inp;
 			endfunction
 			always @(*) begin : slice_inputs
-				begin : sv2v_autoblock_129
+				begin : sv2v_autoblock_131
 					reg [31:0] fmt;
 					for (fmt = 0; fmt < NUM_FORMATS; fmt = fmt + 1)
 						input_boxed[fmt * sv2v_cast_32(fpnew_pkg_num_operands(sv2v_cast_2(opgrp)))+:sv2v_cast_32(fpnew_pkg_num_operands(sv2v_cast_2(opgrp)))] = is_boxed[(fmt * 3) + (NUM_OPS - 1)-:NUM_OPS];
 				end
 			end
+			
 			fpnew_opgroup_block_BE2AB #(
 				.OpGroup(sv2v_cast_2(opgrp)),
 				.Width(WIDTH),
-				.EnableVectors(Features[3]),
-				.FpFmtMask(Features[1-:1]),
-				.IntFmtMask(Features[0-:1]),
-				.FmtPipeRegs(Implementation[10 + (32 * (3 - opgrp))+:32]),
-				.FmtUnitTypes(Implementation[2 + (2 * (3 - opgrp))+:2]),
+				.EnableVectors(Features[9]),
+				.FpFmtMask(Features[7-:4]),
+				.IntFmtMask(Features[3-:4]),
+				.FmtPipeRegs(Implementation[34 + (32 * ((3 - opgrp) * fpnew_pkg_NUM_FP_FORMATS))+:128]),
+				.FmtUnitTypes(Implementation[2 + (2 * ((3 - opgrp) * fpnew_pkg_NUM_FP_FORMATS))+:8]),
 				.PipeConfig(Implementation[1-:2])
 			) i_opgroup_block(
 				.clk_i(clk_i),
@@ -17428,6 +16122,7 @@
 		.devmode_i(1'b1)
 	);
 endmodule
+
 module iccm_controller (
 	clk_i,
 	rst_ni,
@@ -17467,8 +16162,8 @@
 	localparam [1:0] PROG = 2;
 	localparam [1:0] RESET = 0;
 	always @(*) begin
-		we_d = we_q;
-		addr_d = addr_q;
+		we_d    = we_q;
+		addr_d  = addr_q;
 		reset_d = reset_q;
 		ctrl_fsm_ns = ctrl_fsm_cs;
 		case (ctrl_fsm_cs)
@@ -17492,7 +16187,7 @@
 				ctrl_fsm_ns = DONE;
 			end
 			DONE:
-				if ((wdata_o == 32'h00000fff) || !rst_ni) begin
+				if (wdata_o == 32'h00000fff || (!rst_ni)) begin
 					ctrl_fsm_ns = DONE;
 					reset_d = 1'b1;
 				end
@@ -17500,6 +16195,7 @@
 					ctrl_fsm_ns = LOAD;
 				else
 					ctrl_fsm_ns = DONE;
+		//	default: ctrl_fsm_ns = RESET;
 		endcase
 	end
 	assign rx_byte_d = rx_byte_i;
@@ -17518,17 +16214,17 @@
 			reset_q <= 1'b1;
 			byte_count <= 2'b00;
 			ctrl_fsm_cs <= DONE;
-		end
+		end 
 		else if (prog_i) begin
-			we_q <= 1'b0;
-			addr_q <= 12'b000000000000;
-			rx_byte_q0 <= 8'b00000000;
-			rx_byte_q1 <= 8'b00000000;
-			rx_byte_q2 <= 8'b00000000;
-			rx_byte_q3 <= 8'b00000000;
-			reset_q <= 1'b0;
-			byte_count <= 2'b00;
-			ctrl_fsm_cs <= RESET;
+            we_q <= 1'b0;
+            addr_q <= 12'b000000000000;
+            rx_byte_q0 <= 8'b00000000;
+            rx_byte_q1 <= 8'b00000000;
+            rx_byte_q2 <= 8'b00000000;
+            rx_byte_q3 <= 8'b00000000;
+            reset_q <= 1'b0;
+            byte_count <= 2'b00;
+            ctrl_fsm_cs <= RESET;
 		end
 		else begin
 			we_q <= we_d;
@@ -17604,7 +16300,7 @@
 	assign mask_sel[1] = (tl_wmask[15:8] != 8'b00000000 ? 1'b1 : 1'b0);
 	assign mask_sel[2] = (tl_wmask[23:16] != 8'b00000000 ? 1'b1 : 1'b0);
 	assign mask_sel[3] = (tl_wmask[31:24] != 8'b00000000 ? 1'b1 : 1'b0);
-	assign csb = ~(prog_rst_ni ? tl_req : iccm_ctrl_we);
+	assign csb = ~1'b1;
 	assign addr_o = (prog_rst_ni ? tl_addr : iccm_ctrl_addr);
 	assign wdata_o = (prog_rst_ni ? tl_wdata : iccm_ctrl_wdata);
 	assign we_o = ~(prog_rst_ni ? tl_we : iccm_ctrl_we);
@@ -17697,7 +16393,7 @@
 			wire [((2 ** NumLevels) * NumLevels) - 1:0] index_nodes;
 			reg [WIDTH - 1:0] in_tmp;
 			always @(*) begin : flip_vector
-				begin : sv2v_autoblock_130
+				begin : sv2v_autoblock_132
 					reg [31:0] i;
 					for (i = 0; i < WIDTH; i = i + 1)
 						in_tmp[i] = (MODE ? in_i[(WIDTH - 1) - i] : in_i[i]);
@@ -18538,7 +17234,7 @@
 			assign arb_req = (|masked_req ? masked_req : req_i);
 			always @(*) begin
 				ppc_out[0] = arb_req[0];
-				begin : sv2v_autoblock_131
+				begin : sv2v_autoblock_133
 					reg signed [31:0] i;
 					for (i = 1; i < N; i = i + 1)
 						ppc_out[i] = ppc_out[i - 1] | arb_req[i];
@@ -18558,7 +17254,7 @@
 			if (EnDataPort == 1) begin : gen_datapath
 				always @(*) begin
 					data_o = {DW {1'sb0}};
-					begin : sv2v_autoblock_132
+					begin : sv2v_autoblock_134
 						reg signed [31:0] i;
 						for (i = 0; i < N; i = i + 1)
 							if (winner[i])
@@ -18573,7 +17269,7 @@
 			end
 			always @(*) begin
 				idx_o = {IdxW {1'sb0}};
-				begin : sv2v_autoblock_133
+				begin : sv2v_autoblock_135
 					reg [31:0] i;
 					for (i = 0; i < N; i = i + 1)
 						if (winner[i])
@@ -18598,6 +17294,13 @@
 		.GCLK(clk_o),
 		.GATE(en_i | test_en_i)
 	);
+  /*reg en_latch;
+  always @(*) begin
+    if (!clk_i) begin
+      en_latch = en_i | test_en_i;
+    end
+  end
+  assign clk_o = en_latch & clk_i;*/
 endmodule
 module prim_filter_ctr (
 	clk_i,
@@ -18635,7 +17338,7 @@
 			stored_value_q <= filter_i;
 	always @(posedge clk_i or negedge rst_ni)
 		if (!rst_ni)
-			diff_ctr_q <= {CTR_WIDTH {1'b0}};
+			diff_ctr_q <= {CTR_WIDTH {1'sb0}};
 		else
 			diff_ctr_q <= diff_ctr_d;
 	assign diff_ctr_d = (filter_i != filter_q ? {CTR_WIDTH {1'sb0}} : (diff_ctr_q == CYCLESM1 ? CYCLESM1 : diff_ctr_q + 1'b1));
@@ -19529,303 +18232,7 @@
 		end
 	endgenerate
 endmodule
-module rstmgr (
-	clk_i,
-	rst_ni,
-	prog_rst_ni,
-	ndmreset,
-	sys_rst_ni
-);
-	input wire clk_i;
-	input wire rst_ni;
-	input wire prog_rst_ni;
-	input wire ndmreset;
-	output reg sys_rst_ni;
-	always @(*)
-		if (!rst_ni)
-			sys_rst_ni = 1'b0;
-		else if (!prog_rst_ni)
-			sys_rst_ni = 1'b0;
-		else if (ndmreset)
-			sys_rst_ni = 1'b0;
-		else
-			sys_rst_ni = prog_rst_ni;
-endmodule
-module rv_dm (
-	clk_i,
-	rst_ni,
-	testmode_i,
-	ndmreset_o,
-	dmactive_o,
-	debug_req_o,
-	unavailable_i,
-	tl_d_i,
-	tl_d_o,
-	tl_h_o,
-	tl_h_i,
-	jtag_req_i,
-	jtag_rsp_o
-);
-	parameter signed [31:0] NrHarts = 1;
-	parameter [31:0] IdcodeValue = 32'h00000001;
-	parameter [0:0] DirectDmiTap = 1'b1;
-	input wire clk_i;
-	input wire rst_ni;
-	input wire testmode_i;
-	output wire ndmreset_o;
-	output wire dmactive_o;
-	output wire [NrHarts - 1:0] debug_req_o;
-	input wire [NrHarts - 1:0] unavailable_i;
-	localparam signed [31:0] tlul_pkg_TL_AIW = 8;
-	localparam signed [31:0] tlul_pkg_TL_AW = 32;
-	localparam signed [31:0] tlul_pkg_TL_DW = 32;
-	localparam signed [31:0] tlul_pkg_TL_DBW = 4;
-	localparam signed [31:0] tlul_pkg_TL_SZW = 2;
-	input wire [85:0] tl_d_i;
-	localparam signed [31:0] tlul_pkg_TL_DIW = 1;
-	output wire [51:0] tl_d_o;
-	output wire [85:0] tl_h_o;
-	input wire [51:0] tl_h_i;
-	input wire [3:0] jtag_req_i;
-	output wire [1:0] jtag_rsp_o;
-	localparam signed [31:0] BusWidth = 32;
-	localparam [NrHarts - 1:0] SelectableHarts = {NrHarts {1'b1}};
-	wire [(NrHarts * 32) - 1:0] hartinfo;
-	wire [NrHarts - 1:0] halted;
-	wire [NrHarts - 1:0] resumeack;
-	wire [NrHarts - 1:0] haltreq;
-	wire [NrHarts - 1:0] resumereq;
-	wire clear_resumeack;
-	wire cmd_valid;
-	wire [31:0] cmd;
-	wire cmderror_valid;
-	wire [2:0] cmderror;
-	wire cmdbusy;
-	localparam [4:0] dm_ProgBufSize = 5'h08;
-	wire [(dm_ProgBufSize * 32) - 1:0] progbuf;
-	localparam [3:0] dm_DataCount = 4'h2;
-	wire [(dm_DataCount * 32) - 1:0] data_csrs_mem;
-	wire [(dm_DataCount * 32) - 1:0] data_mem_csrs;
-	wire data_valid;
-	wire [19:0] hartsel;
-	wire [31:0] sbaddress_csrs_sba;
-	wire [31:0] sbaddress_sba_csrs;
-	wire sbaddress_write_valid;
-	wire sbreadonaddr;
-	wire sbautoincrement;
-	wire [2:0] sbaccess;
-	wire sbreadondata;
-	wire [31:0] sbdata_write;
-	wire sbdata_read_valid;
-	wire sbdata_write_valid;
-	wire [31:0] sbdata_read;
-	wire sbdata_valid;
-	wire sbbusy;
-	wire sberror_valid;
-	wire [2:0] sberror;
-	wire [40:0] dmi_req;
-	wire [33:0] dmi_rsp;
-	wire dmi_req_valid;
-	wire dmi_req_ready;
-	wire dmi_rsp_valid;
-	wire dmi_rsp_ready;
-	wire dmi_rst_n;
-	localparam [11:0] dm_DataAddr = 12'h380;
-	localparam [31:0] DebugHartInfo = {16'b0000000000100001, dm_DataCount, dm_DataAddr};
-	generate
-		genvar i;
-		for (i = 0; i < NrHarts; i = i + 1) begin : gen_dm_hart_ctrl
-			assign hartinfo[i * 32+:32] = DebugHartInfo;
-		end
-	endgenerate
-	dm_csrs #(
-		.NrHarts(NrHarts),
-		.BusWidth(BusWidth),
-		.SelectableHarts(SelectableHarts)
-	) i_dm_csrs(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.testmode_i(testmode_i),
-		.dmi_rst_ni(dmi_rst_n),
-		.dmi_req_valid_i(dmi_req_valid),
-		.dmi_req_ready_o(dmi_req_ready),
-		.dmi_req_i(dmi_req),
-		.dmi_resp_valid_o(dmi_rsp_valid),
-		.dmi_resp_ready_i(dmi_rsp_ready),
-		.dmi_resp_o(dmi_rsp),
-		.ndmreset_o(ndmreset_o),
-		.dmactive_o(dmactive_o),
-		.hartsel_o(hartsel),
-		.hartinfo_i(hartinfo),
-		.halted_i(halted),
-		.unavailable_i(unavailable_i),
-		.resumeack_i(resumeack),
-		.haltreq_o(haltreq),
-		.resumereq_o(resumereq),
-		.clear_resumeack_o(clear_resumeack),
-		.cmd_valid_o(cmd_valid),
-		.cmd_o(cmd),
-		.cmderror_valid_i(cmderror_valid),
-		.cmderror_i(cmderror),
-		.cmdbusy_i(cmdbusy),
-		.progbuf_o(progbuf),
-		.data_i(data_mem_csrs),
-		.data_valid_i(data_valid),
-		.data_o(data_csrs_mem),
-		.sbaddress_o(sbaddress_csrs_sba),
-		.sbaddress_i(sbaddress_sba_csrs),
-		.sbaddress_write_valid_o(sbaddress_write_valid),
-		.sbreadonaddr_o(sbreadonaddr),
-		.sbautoincrement_o(sbautoincrement),
-		.sbaccess_o(sbaccess),
-		.sbreadondata_o(sbreadondata),
-		.sbdata_o(sbdata_write),
-		.sbdata_read_valid_o(sbdata_read_valid),
-		.sbdata_write_valid_o(sbdata_write_valid),
-		.sbdata_i(sbdata_read),
-		.sbdata_valid_i(sbdata_valid),
-		.sbbusy_i(sbbusy),
-		.sberror_valid_i(sberror_valid),
-		.sberror_i(sberror)
-	);
-	wire host_req;
-	wire [31:0] host_add;
-	wire host_we;
-	wire [31:0] host_wdata;
-	wire [3:0] host_be;
-	wire host_gnt;
-	wire host_r_valid;
-	wire [31:0] host_r_rdata;
-	wire host_r_err;
-	dm_sba #(.BusWidth(BusWidth)) i_dm_sba(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.master_req_o(host_req),
-		.master_add_o(host_add),
-		.master_we_o(host_we),
-		.master_wdata_o(host_wdata),
-		.master_be_o(host_be),
-		.master_gnt_i(host_gnt),
-		.master_r_valid_i(host_r_valid),
-		.master_r_rdata_i(host_r_rdata),
-		.dmactive_i(dmactive_o),
-		.sbaddress_i(sbaddress_csrs_sba),
-		.sbaddress_o(sbaddress_sba_csrs),
-		.sbaddress_write_valid_i(sbaddress_write_valid),
-		.sbreadonaddr_i(sbreadonaddr),
-		.sbautoincrement_i(sbautoincrement),
-		.sbaccess_i(sbaccess),
-		.sbreadondata_i(sbreadondata),
-		.sbdata_i(sbdata_write),
-		.sbdata_read_valid_i(sbdata_read_valid),
-		.sbdata_write_valid_i(sbdata_write_valid),
-		.sbdata_o(sbdata_read),
-		.sbdata_valid_o(sbdata_valid),
-		.sbbusy_o(sbbusy),
-		.sberror_valid_o(sberror_valid),
-		.sberror_o(sberror)
-	);
-	tlul_host_adapter #(.MAX_REQS(1)) tl_adapter_host_sba(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.req_i(host_req),
-		.gnt_o(host_gnt),
-		.addr_i(host_add),
-		.we_i(host_we),
-		.wdata_i(host_wdata),
-		.be_i(host_be),
-		.valid_o(host_r_valid),
-		.rdata_o(host_r_rdata),
-		.err_o(host_r_err),
-		.tl_h_c_a(tl_h_o),
-		.tl_h_c_d(tl_h_i)
-	);
-	localparam [31:0] AddressWidthWords = 30;
-	wire req;
-	wire we;
-	wire [3:0] be;
-	wire [31:0] wdata;
-	wire [31:0] rdata;
-	reg rvalid;
-	wire [31:0] addr_b;
-	wire [29:0] addr_w;
-	assign be = {4 {1'b1}};
-	assign addr_b = {addr_w, {2 {1'b0}}};
-	dm_mem #(
-		.NrHarts(NrHarts),
-		.BusWidth(BusWidth),
-		.SelectableHarts(SelectableHarts),
-		.DmBaseAddress(1)
-	) i_dm_mem(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.debug_req_o(debug_req_o),
-		.hartsel_i(hartsel),
-		.haltreq_i(haltreq),
-		.resumereq_i(resumereq),
-		.clear_resumeack_i(clear_resumeack),
-		.halted_o(halted),
-		.resuming_o(resumeack),
-		.cmd_valid_i(cmd_valid),
-		.cmd_i(cmd),
-		.cmderror_valid_o(cmderror_valid),
-		.cmderror_o(cmderror),
-		.cmdbusy_o(cmdbusy),
-		.progbuf_i(progbuf),
-		.data_i(data_csrs_mem),
-		.data_o(data_mem_csrs),
-		.data_valid_o(data_valid),
-		.req_i(req),
-		.we_i(we),
-		.addr_i(addr_b),
-		.wdata_i(wdata),
-		.be_i(be),
-		.rdata_o(rdata)
-	);
-	dmi_jtag #(.IdcodeValue(IdcodeValue)) dap(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.testmode_i(testmode_i),
-		.dmi_rst_no(dmi_rst_n),
-		.dmi_req_o(dmi_req),
-		.dmi_req_valid_o(dmi_req_valid),
-		.dmi_req_ready_i(dmi_req_ready),
-		.dmi_resp_i(dmi_rsp),
-		.dmi_resp_ready_o(dmi_rsp_ready),
-		.dmi_resp_valid_i(dmi_rsp_valid),
-		.tck_i(jtag_req_i[3]),
-		.tms_i(jtag_req_i[2]),
-		.trst_ni(jtag_req_i[1]),
-		.td_i(jtag_req_i[0]),
-		.td_o(jtag_rsp_o[1]),
-		.tdo_oe_o(jtag_rsp_o[0])
-	);
-	tlul_sram_adapter #(
-		.SramAw(AddressWidthWords),
-		.SramDw(BusWidth),
-		.Outstanding(1),
-		.ByteAccess(0)
-	) tl_adapter_device_mem(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.req_o(req),
-		.gnt_i(1'b1),
-		.we_o(we),
-		.addr_o(addr_w),
-		.wdata_o(wdata),
-		.wmask_o(),
-		.rdata_i(rdata),
-		.rvalid_i(rvalid),
-		.rerror_i(2'b00),
-		.tl_o(tl_d_o),
-		.tl_i(tl_d_i)
-	);
-	always @(posedge clk_i or negedge rst_ni)
-		if (!rst_ni)
-			rvalid <= 1'b0;
-		else
-			rvalid <= req & ~we;
-endmodule
+
 module rv_plic_gateway (
 	clk_i,
 	rst_ni,
@@ -19851,7 +18258,7 @@
 			src_q <= {N_SOURCE {1'sb0}};
 		else
 			src_q <= src_i;
-	always @(*) begin : sv2v_autoblock_134
+	always @(*) begin : sv2v_autoblock_136
 		reg signed [31:0] i;
 		for (i = 0; i < N_SOURCE; i = i + 1)
 			set[i] = (le_i[i] ? src_i[i] & ~src_q[i] : src_i[i]);
@@ -23126,7 +21533,7 @@
 	assign cc_id = irq_id_o;
 	always @(*) begin
 		claim = {36 {1'sb0}};
-		begin : sv2v_autoblock_135
+		begin : sv2v_autoblock_137
 			reg signed [31:0] i;
 			for (i = 0; i < rv_plic_reg_pkg_NumTarget; i = i + 1)
 				if (claim_re[i])
@@ -23135,7 +21542,7 @@
 	end
 	always @(*) begin
 		complete = {36 {1'sb0}};
-		begin : sv2v_autoblock_136
+		begin : sv2v_autoblock_138
 			reg signed [31:0] i;
 			for (i = 0; i < rv_plic_reg_pkg_NumTarget; i = i + 1)
 				if (complete_we[i])
@@ -23726,88 +22133,6 @@
 		.devmode_i(1'b1)
 	);
 endmodule
-/*
-module sky130_sram_4kbyte_1rw1r_32x1024_8 (
-	clk0,
-	csb0,
-	web0,
-	wmask0,
-	addr0,
-	din0,
-	dout0,
-	clk1,
-	csb1,
-	addr1,
-	dout1
-);
-	parameter NUM_WMASKS = 4;
-	parameter DATA_WIDTH = 32;
-	parameter ADDR_WIDTH = 10;
-	parameter RAM_DEPTH = 1 << ADDR_WIDTH;
-	parameter DELAY = 3;
-	parameter VERBOSE = 1;
-	parameter T_HOLD = 1;
-	input clk0;
-	input csb0;
-	input web0;
-	input [NUM_WMASKS - 1:0] wmask0;
-	input [ADDR_WIDTH - 1:0] addr0;
-	input [DATA_WIDTH - 1:0] din0;
-	output [DATA_WIDTH - 1:0] dout0;
-	input clk1;
-	input csb1;
-	input [ADDR_WIDTH - 1:0] addr1;
-	output [DATA_WIDTH - 1:0] dout1;
-	reg csb0_reg;
-	reg web0_reg;
-	reg [NUM_WMASKS - 1:0] wmask0_reg;
-	reg [ADDR_WIDTH - 1:0] addr0_reg;
-	reg [DATA_WIDTH - 1:0] din0_reg;
-	reg [DATA_WIDTH - 1:0] mem [0:RAM_DEPTH - 1];
-	always @(posedge clk0) begin
-		csb0_reg = csb0;
-		web0_reg = web0;
-		wmask0_reg = wmask0;
-		addr0_reg = addr0;
-		din0_reg = din0;
-		#(T_HOLD) dout0 = 32'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
-		if ((!csb0_reg && web0_reg) && VERBOSE)
-			$display($time, " Reading %m addr0=%b dout0=%b", addr0_reg, mem[addr0_reg]);
-		if ((!csb0_reg && !web0_reg) && VERBOSE)
-			$display($time, " Writing %m addr0=%b din0=%b wmask0=%b", addr0_reg, din0_reg, wmask0_reg);
-	end
-	reg csb1_reg;
-	reg [ADDR_WIDTH - 1:0] addr1_reg;
-	always @(posedge clk1) begin
-		csb1_reg = csb1;
-		addr1_reg = addr1;
-		if (((!csb0 && !web0) && !csb1) && (addr0 == addr1))
-			$display($time, " WARNING: Writing and reading addr0=%b and addr1=%b simultaneously!", addr0, addr1);
-		#(T_HOLD) dout1 = 32'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
-		if (!csb1_reg && VERBOSE)
-			$display($time, " Reading %m addr1=%b dout1=%b", addr1_reg, mem[addr1_reg]);
-	end
-	always @(negedge clk0) begin : MEM_WRITE0
-		if (!csb0_reg && !web0_reg) begin
-			if (wmask0_reg[0])
-				mem[addr0_reg][7:0] = din0_reg[7:0];
-			if (wmask0_reg[1])
-				mem[addr0_reg][15:8] = din0_reg[15:8];
-			if (wmask0_reg[2])
-				mem[addr0_reg][23:16] = din0_reg[23:16];
-			if (wmask0_reg[3])
-				mem[addr0_reg][31:24] = din0_reg[31:24];
-		end
-	end
-	always @(negedge clk0) begin : MEM_READ0
-		if (!csb0_reg && web0_reg)
-			dout0 <= #(DELAY) mem[addr0_reg];
-	end
-	always @(negedge clk1) begin : MEM_READ1
-		if (!csb1_reg)
-			dout1 <= #(DELAY) mem[addr1_reg];
-	end
-endmodule*/
 module spi_clgen (
 	clk_i,
 	rst_ni,
@@ -24580,10 +22905,10 @@
 	localparam signed [31:0] WordSize = 2;
 	wire [7:0] tl_source;
 	wire [3:0] tl_be;
-	function automatic [7:0] sv2v_cast_8;
-               input reg [7:0] inp;
-               sv2v_cast_8 = inp;
-        endfunction
+	 function automatic [7:0] sv2v_cast_8;
+                                input reg [7:0] inp;
+                                sv2v_cast_8 = inp;
+                        endfunction
 	generate
 		if (MAX_REQS == 1) begin
 			assign tl_source = {8 {1'sb0}};
@@ -24605,6 +22930,10 @@
 					else
 						source_d = source_q + 1;
 			end
+			/*function automatic [7:0] sv2v_cast_8;
+				input reg [7:0] inp;
+				sv2v_cast_8 = inp;
+			endfunction*/
 			assign tl_source = sv2v_cast_8(source_q);
 		end
 	endgenerate
@@ -24734,7 +23063,7 @@
 	endfunction
 	always @(*) begin
 		hfifo_reqready = tl_u_i[N][0];
-		begin : sv2v_autoblock_137
+		begin : sv2v_autoblock_139
 			reg signed [31:0] idx;
 			for (idx = 0; idx < N; idx = idx + 1)
 				if (dev_select_t == sv2v_cast_BB804_signed(idx))
@@ -24746,7 +23075,7 @@
 	assign tl_t_i[0] = tl_t_o[85] & hfifo_reqready;
 	always @(*) begin
 		tl_t_p = tl_u_i[N];
-		begin : sv2v_autoblock_138
+		begin : sv2v_autoblock_140
 			reg signed [31:0] idx;
 			for (idx = 0; idx < N; idx = idx + 1)
 				if (dev_select_outstanding == sv2v_cast_BB804_signed(idx))
@@ -25169,7 +23498,7 @@
 	always @(*) begin
 		wmask_int = {WidthMult * tlul_pkg_TL_DW {1'sb0}};
 		wdata_int = {WidthMult * tlul_pkg_TL_DW {1'sb0}};
-		if (tl_i[85]) begin : sv2v_autoblock_139
+		if (tl_i[85]) begin : sv2v_autoblock_141
 			reg signed [31:0] i;
 			for (i = 0; i < 4; i = i + 1)
 				begin
@@ -25220,7 +23549,7 @@
 	wire [31:0] rdata_tlword;
 	always @(*) begin
 		rmask = {WidthMult * tlul_pkg_TL_DW {1'sb0}};
-		begin : sv2v_autoblock_140
+		begin : sv2v_autoblock_142
 			reg signed [31:0] i;
 			for (i = 0; i < 4; i = i + 1)
 				rmask[(sramreqfifo_rdata[WoffsetWidth - 1-:WoffsetWidth] * 32) + (8 * i)+:8] = {8 {sramreqfifo_rdata[(tlul_pkg_TL_DBW + (WoffsetWidth - 1)) - (3 - i)]}};
@@ -25285,380 +23614,6 @@
 		.rdata_o(rspfifo_rdata)
 	);
 endmodule
-module tl_xbar_main (
-	clk_i,
-	rst_ni,
-	tl_brqif_i,
-	tl_brqif_o,
-	tl_brqlsu_i,
-	tl_brqlsu_o,
-	tl_dm_sba_i,
-	tl_dm_sba_o,
-	tl_iccm_o,
-	tl_iccm_i,
-	tl_debug_rom_o,
-	tl_debug_rom_i,
-	tl_dccm_o,
-	tl_dccm_i,
-	tl_timer0_o,
-	tl_timer0_i,
-	tl_uart_o,
-	tl_uart_i,
-	tl_spi_o,
-	tl_spi_i,
-	tl_pwm_o,
-	tl_pwm_i,
-	tl_gpio_o,
-	tl_gpio_i,
-	tl_plic_o,
-	tl_plic_i
-);
-	input wire clk_i;
-	input wire rst_ni;
-	localparam signed [31:0] tlul_pkg_TL_AIW = 8;
-	localparam signed [31:0] tlul_pkg_TL_AW = 32;
-	localparam signed [31:0] tlul_pkg_TL_DW = 32;
-	localparam signed [31:0] tlul_pkg_TL_DBW = 4;
-	localparam signed [31:0] tlul_pkg_TL_SZW = 2;
-	input wire [85:0] tl_brqif_i;
-	localparam signed [31:0] tlul_pkg_TL_DIW = 1;
-	output wire [51:0] tl_brqif_o;
-	input wire [85:0] tl_brqlsu_i;
-	output wire [51:0] tl_brqlsu_o;
-	input wire [85:0] tl_dm_sba_i;
-	output wire [51:0] tl_dm_sba_o;
-	output wire [85:0] tl_iccm_o;
-	input wire [51:0] tl_iccm_i;
-	output wire [85:0] tl_debug_rom_o;
-	input wire [51:0] tl_debug_rom_i;
-	output wire [85:0] tl_dccm_o;
-	input wire [51:0] tl_dccm_i;
-	output wire [85:0] tl_timer0_o;
-	input wire [51:0] tl_timer0_i;
-	output wire [85:0] tl_uart_o;
-	input wire [51:0] tl_uart_i;
-	output wire [85:0] tl_spi_o;
-	input wire [51:0] tl_spi_i;
-	output wire [85:0] tl_pwm_o;
-	input wire [51:0] tl_pwm_i;
-	output wire [85:0] tl_gpio_o;
-	input wire [51:0] tl_gpio_i;
-	output wire [85:0] tl_plic_o;
-	input wire [51:0] tl_plic_i;
-	wire [85:0] brqifu_to_s1n;
-	wire [51:0] s1n_to_brqifu;
-	reg [1:0] device_sel_1;
-	wire [85:0] brqlsu_to_s1n;
-	wire [51:0] s1n_to_brqlsu;
-	reg [3:0] device_sel_2;
-	wire [85:0] dbg_to_s1n;
-	wire [51:0] s1n_to_dbg;
-	reg [3:0] device_sel_3;
-	wire [171:0] h1_dv_i;
-	wire [103:0] h1_dv_o;
-	wire [773:0] h2_dv_i;
-	wire [467:0] h2_dv_o;
-	wire [687:0] h3_dv_i;
-	wire [415:0] h3_dv_o;
-	wire [257:0] s1n_sm1_1;
-	wire [155:0] sm1_s1n_1;
-	wire [171:0] s1n_sm1_2;
-	wire [103:0] sm1_s1n_2;
-	wire [171:0] s1n_sm1_4;
-	wire [103:0] sm1_s1n_4;
-	wire [171:0] s1n_sm1_5;
-	wire [103:0] sm1_s1n_5;
-	wire [171:0] s1n_sm1_6;
-	wire [103:0] sm1_s1n_6;
-	wire [171:0] s1n_sm1_7;
-	wire [103:0] sm1_s1n_7;
-	wire [171:0] s1n_sm1_8;
-	wire [103:0] sm1_s1n_8;
-	wire [171:0] s1n_sm1_9;
-	wire [103:0] sm1_s1n_9;
-	wire [171:0] s1n_sm1_10;
-	wire [103:0] sm1_s1n_10;
-	assign h1_dv_o[52+:52] = sm1_s1n_1[104+:52];
-	assign h3_dv_o[312+:52] = sm1_s1n_1[52+:52];
-	assign h2_dv_o[0+:52] = sm1_s1n_1[0+:52];
-	assign s1n_sm1_1[172+:86] = h1_dv_i[86+:86];
-	assign s1n_sm1_1[86+:86] = h3_dv_i[516+:86];
-	assign s1n_sm1_1[0+:86] = h2_dv_i[0+:86];
-	assign h2_dv_o[416+:52] = sm1_s1n_2[52+:52];
-	assign h3_dv_o[364+:52] = sm1_s1n_2[0+:52];
-	assign s1n_sm1_2[86+:86] = h2_dv_i[688+:86];
-	assign s1n_sm1_2[0+:86] = h3_dv_i[602+:86];
-	assign h1_dv_o[0+:52] = sm1_s1n_4[52+:52];
-	assign h2_dv_o[364+:52] = sm1_s1n_4[0+:52];
-	assign s1n_sm1_4[86+:86] = h1_dv_i[0+:86];
-	assign s1n_sm1_4[0+:86] = h2_dv_i[602+:86];
-	assign h2_dv_o[312+:52] = sm1_s1n_5[52+:52];
-	assign h3_dv_o[260+:52] = sm1_s1n_5[0+:52];
-	assign s1n_sm1_5[86+:86] = h2_dv_i[516+:86];
-	assign s1n_sm1_5[0+:86] = h3_dv_i[430+:86];
-	assign h2_dv_o[260+:52] = sm1_s1n_6[52+:52];
-	assign h3_dv_o[208+:52] = sm1_s1n_6[0+:52];
-	assign s1n_sm1_6[86+:86] = h2_dv_i[430+:86];
-	assign s1n_sm1_6[0+:86] = h3_dv_i[344+:86];
-	assign h2_dv_o[208+:52] = sm1_s1n_7[52+:52];
-	assign h3_dv_o[156+:52] = sm1_s1n_7[0+:52];
-	assign s1n_sm1_7[86+:86] = h2_dv_i[344+:86];
-	assign s1n_sm1_7[0+:86] = h3_dv_i[258+:86];
-	assign h2_dv_o[156+:52] = sm1_s1n_8[52+:52];
-	assign h3_dv_o[104+:52] = sm1_s1n_8[0+:52];
-	assign s1n_sm1_8[86+:86] = h2_dv_i[258+:86];
-	assign s1n_sm1_8[0+:86] = h3_dv_i[172+:86];
-	assign h2_dv_o[104+:52] = sm1_s1n_9[52+:52];
-	assign h3_dv_o[52+:52] = sm1_s1n_9[0+:52];
-	assign s1n_sm1_9[86+:86] = h2_dv_i[172+:86];
-	assign s1n_sm1_9[0+:86] = h3_dv_i[86+:86];
-	assign h2_dv_o[52+:52] = sm1_s1n_10[52+:52];
-	assign h3_dv_o[0+:52] = sm1_s1n_10[0+:52];
-	assign s1n_sm1_10[86+:86] = h2_dv_i[86+:86];
-	assign s1n_sm1_10[0+:86] = h3_dv_i[0+:86];
-	assign brqifu_to_s1n = tl_brqif_i;
-	assign tl_brqif_o = s1n_to_brqifu;
-	assign brqlsu_to_s1n = tl_brqlsu_i;
-	assign tl_brqlsu_o = s1n_to_brqlsu;
-	assign dbg_to_s1n = tl_dm_sba_i;
-	assign tl_dm_sba_o = s1n_to_dbg;
-	localparam [31:0] tl_main_pkg_ADDR_MASK_DEBUG_ROM = 32'h0000ffff;
-	localparam [31:0] tl_main_pkg_ADDR_MASK_ICCM = 32'h0000ffff;
-	localparam [31:0] tl_main_pkg_ADDR_SPACE_DEBUG_ROM = 32'h10040000;
-	localparam [31:0] tl_main_pkg_ADDR_SPACE_ICCM = 32'h20000000;
-	always @(*) begin
-		device_sel_1 = 2'd2;
-		if ((brqifu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_ICCM) == tl_main_pkg_ADDR_SPACE_ICCM)
-			device_sel_1 = 2'd0;
-		else if ((brqifu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_DEBUG_ROM) == tl_main_pkg_ADDR_SPACE_DEBUG_ROM)
-			device_sel_1 = 2'd1;
-	end
-	tlul_socket_1n #(
-		.HReqDepth(4'h0),
-		.HRspDepth(4'h0),
-		.DReqDepth(12'h000),
-		.DRspDepth(12'h000),
-		.N(2)
-	) host_1(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.tl_h_i(brqifu_to_s1n),
-		.tl_h_o(s1n_to_brqifu),
-		.tl_d_o(h1_dv_i),
-		.tl_d_i(h1_dv_o),
-		.dev_select_i(device_sel_1)
-	);
-	localparam [31:0] tl_main_pkg_ADDR_MASK_DCCM = 32'h0000ffff;
-	localparam [31:0] tl_main_pkg_ADDR_MASK_GPIO = 32'h0000ffff;
-	localparam [31:0] tl_main_pkg_ADDR_MASK_PLIC = 32'h0000ffff;
-	localparam [31:0] tl_main_pkg_ADDR_MASK_PWM = 32'h0000ffff;
-	localparam [31:0] tl_main_pkg_ADDR_MASK_SPI0 = 32'h0000ffff;
-	localparam [31:0] tl_main_pkg_ADDR_MASK_TIMER0 = 32'h0000ffff;
-	localparam [31:0] tl_main_pkg_ADDR_MASK_UART0 = 32'h0000ffff;
-	localparam [31:0] tl_main_pkg_ADDR_SPACE_DCCM = 32'h10000000;
-	localparam [31:0] tl_main_pkg_ADDR_SPACE_GPIO = 32'h400c0000;
-	localparam [31:0] tl_main_pkg_ADDR_SPACE_PLIC = 32'h40050000;
-	localparam [31:0] tl_main_pkg_ADDR_SPACE_PWM = 32'h400b0000;
-	localparam [31:0] tl_main_pkg_ADDR_SPACE_SPI0 = 32'h40080000;
-	localparam [31:0] tl_main_pkg_ADDR_SPACE_TIMER0 = 32'h40000000;
-	localparam [31:0] tl_main_pkg_ADDR_SPACE_UART0 = 32'h40060000;
-	always @(*) begin
-		device_sel_2 = 4'd9;
-		if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_DCCM) == tl_main_pkg_ADDR_SPACE_DCCM)
-			device_sel_2 = 4'd0;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_DEBUG_ROM) == tl_main_pkg_ADDR_SPACE_DEBUG_ROM)
-			device_sel_2 = 4'd1;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_TIMER0) == tl_main_pkg_ADDR_SPACE_TIMER0)
-			device_sel_2 = 4'd2;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_UART0) == tl_main_pkg_ADDR_SPACE_UART0)
-			device_sel_2 = 4'd3;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_SPI0) == tl_main_pkg_ADDR_SPACE_SPI0)
-			device_sel_2 = 4'd4;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_PWM) == tl_main_pkg_ADDR_SPACE_PWM)
-			device_sel_2 = 4'd5;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_GPIO) == tl_main_pkg_ADDR_SPACE_GPIO)
-			device_sel_2 = 4'd6;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_PLIC) == tl_main_pkg_ADDR_SPACE_PLIC)
-			device_sel_2 = 4'd7;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_ICCM) == tl_main_pkg_ADDR_SPACE_ICCM)
-			device_sel_2 = 4'd8;
-	end
-	tlul_socket_1n #(
-		.HReqDepth(4'h0),
-		.HRspDepth(4'h0),
-		.DReqDepth(36'h000000000),
-		.DRspDepth(36'h000000000),
-		.N(9)
-	) host_2(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.tl_h_i(brqlsu_to_s1n),
-		.tl_h_o(s1n_to_brqlsu),
-		.tl_d_o(h2_dv_i),
-		.tl_d_i(h2_dv_o),
-		.dev_select_i(device_sel_2)
-	);
-	always @(*) begin
-		device_sel_3 = 4'd8;
-		if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_DCCM) == tl_main_pkg_ADDR_SPACE_DCCM)
-			device_sel_3 = 4'd0;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_ICCM) == tl_main_pkg_ADDR_SPACE_ICCM)
-			device_sel_3 = 4'd1;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_TIMER0) == tl_main_pkg_ADDR_SPACE_TIMER0)
-			device_sel_3 = 4'd2;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_UART0) == tl_main_pkg_ADDR_SPACE_UART0)
-			device_sel_3 = 4'd3;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_SPI0) == tl_main_pkg_ADDR_SPACE_SPI0)
-			device_sel_3 = 4'd4;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_PWM) == tl_main_pkg_ADDR_SPACE_PWM)
-			device_sel_3 = 4'd5;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_GPIO) == tl_main_pkg_ADDR_SPACE_GPIO)
-			device_sel_3 = 4'd6;
-		else if ((brqlsu_to_s1n[68-:32] & ~tl_main_pkg_ADDR_MASK_PLIC) == tl_main_pkg_ADDR_SPACE_PLIC)
-			device_sel_3 = 4'd7;
-	end
-	tlul_socket_1n #(
-		.HReqDepth(4'h0),
-		.HRspDepth(4'h0),
-		.DReqDepth(36'h000000000),
-		.DRspDepth(36'h000000000),
-		.N(8)
-	) host_3(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.tl_h_i(dbg_to_s1n),
-		.tl_h_o(s1n_to_dbg),
-		.tl_d_o(h3_dv_i),
-		.tl_d_i(h3_dv_o),
-		.dev_select_i(device_sel_3)
-	);
-	tlul_socket_m1 #(
-		.HReqDepth(8'h00),
-		.HRspDepth(8'h00),
-		.DReqDepth(4'h0),
-		.DRspDepth(4'h0),
-		.M(3)
-	) ICCM(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.tl_h_i(s1n_sm1_1),
-		.tl_h_o(sm1_s1n_1),
-		.tl_d_o(tl_iccm_o),
-		.tl_d_i(tl_iccm_i)
-	);
-	tlul_socket_m1 #(
-		.HReqDepth(8'h00),
-		.HRspDepth(8'h00),
-		.DReqDepth(4'h0),
-		.DRspDepth(4'h0),
-		.M(2)
-	) DCCM(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.tl_h_i(s1n_sm1_2),
-		.tl_h_o(sm1_s1n_2),
-		.tl_d_o(tl_dccm_o),
-		.tl_d_i(tl_dccm_i)
-	);
-	tlul_socket_m1 #(
-		.HReqDepth(8'h00),
-		.HRspDepth(8'h00),
-		.DReqDepth(4'h0),
-		.DRspDepth(4'h0),
-		.M(2)
-	) DEBUG_ROM(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.tl_h_i(s1n_sm1_4),
-		.tl_h_o(sm1_s1n_4),
-		.tl_d_o(tl_debug_rom_o),
-		.tl_d_i(tl_debug_rom_i)
-	);
-	tlul_socket_m1 #(
-		.HReqDepth(8'h00),
-		.HRspDepth(8'h00),
-		.DReqDepth(4'h0),
-		.DRspDepth(4'h0),
-		.M(2)
-	) TIMER(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.tl_h_i(s1n_sm1_5),
-		.tl_h_o(sm1_s1n_5),
-		.tl_d_o(tl_timer0_o),
-		.tl_d_i(tl_timer0_i)
-	);
-	tlul_socket_m1 #(
-		.HReqDepth(8'h00),
-		.HRspDepth(8'h00),
-		.DReqDepth(4'h0),
-		.DRspDepth(4'h0),
-		.M(2)
-	) UART(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.tl_h_i(s1n_sm1_6),
-		.tl_h_o(sm1_s1n_6),
-		.tl_d_o(tl_uart_o),
-		.tl_d_i(tl_uart_i)
-	);
-	tlul_socket_m1 #(
-		.HReqDepth(8'h00),
-		.HRspDepth(8'h00),
-		.DReqDepth(4'h0),
-		.DRspDepth(4'h0),
-		.M(2)
-	) SPI(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.tl_h_i(s1n_sm1_7),
-		.tl_h_o(sm1_s1n_7),
-		.tl_d_o(tl_spi_o),
-		.tl_d_i(tl_spi_i)
-	);
-	tlul_socket_m1 #(
-		.HReqDepth(8'h00),
-		.HRspDepth(8'h00),
-		.DReqDepth(4'h0),
-		.DRspDepth(4'h0),
-		.M(2)
-	) PWM(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.tl_h_i(s1n_sm1_8),
-		.tl_h_o(sm1_s1n_8),
-		.tl_d_o(tl_pwm_o),
-		.tl_d_i(tl_pwm_i)
-	);
-	tlul_socket_m1 #(
-		.HReqDepth(8'h00),
-		.HRspDepth(8'h00),
-		.DReqDepth(4'h0),
-		.DRspDepth(4'h0),
-		.M(2)
-	) GPIO(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.tl_h_i(s1n_sm1_9),
-		.tl_h_o(sm1_s1n_9),
-		.tl_d_o(tl_gpio_o),
-		.tl_d_i(tl_gpio_i)
-	);
-	tlul_socket_m1 #(
-		.HReqDepth(8'h00),
-		.HRspDepth(8'h00),
-		.DReqDepth(4'h0),
-		.DRspDepth(4'h0),
-		.M(2)
-	) PLIC(
-		.clk_i(clk_i),
-		.rst_ni(rst_ni),
-		.tl_h_i(s1n_sm1_10),
-		.tl_h_o(sm1_s1n_10),
-		.tl_d_o(tl_plic_o),
-		.tl_d_i(tl_plic_i)
-	);
-endmodule
 module uart_core (
 	clk_i,
 	rst_ni,
@@ -25727,109 +23682,161 @@
 	);
 	assign rdata = (addr == 0 ? control : (addr == 8 ? rx : 0));
 endmodule
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+// Set Parameter CLKS_PER_BIT as follows:
+// CLKS_PER_BIT = (Frequency of i_Clock)/(Frequency of UART)
+// Example: 10 MHz Clock, 115200 baud UART
+// (10000000)/(115200) = 87
+  
 module uart_rx_prog (
-	clk_i,
-	rst_ni,
-	i_Rx_Serial,
-	CLKS_PER_BIT,
-	o_Rx_DV,
-	o_Rx_Byte
-);
-	input wire clk_i;
-	input wire rst_ni;
-	input wire i_Rx_Serial;
-	input wire [15:0] CLKS_PER_BIT;
-	output wire o_Rx_DV;
-	output wire [7:0] o_Rx_Byte;
-	parameter s_IDLE = 3'b000;
-	parameter s_RX_START_BIT = 3'b001;
-	parameter s_RX_DATA_BITS = 3'b010;
-	parameter s_RX_STOP_BIT = 3'b011;
-	parameter s_CLEANUP = 3'b100;
-	reg r_Rx_Data_R;
-	reg r_Rx_Data;
-	reg [15:0] r_Clock_Count;
-	reg [2:0] r_Bit_Index;
-	reg [7:0] r_Rx_Byte;
-	reg r_Rx_DV;
-	reg [2:0] r_SM_Main;
-	always @(posedge clk_i)
-		if (~rst_ni) begin
-			r_Rx_Data_R <= 1'b1;
-			r_Rx_Data <= 1'b1;
-		end
-		else begin
-			r_Rx_Data_R <= i_Rx_Serial;
-			r_Rx_Data <= r_Rx_Data_R;
-		end
-	always @(posedge clk_i or negedge rst_ni)
-		if (~rst_ni) begin
-			r_SM_Main <= s_IDLE;
-			r_Rx_DV <= 1'b0;
-			r_Clock_Count <= 16'b0000000000000000;
-			r_Bit_Index <= 3'b000;
-			r_Rx_Byte <= 8'b00000000;
-		end
-		else
-			case (r_SM_Main)
-				s_IDLE: begin
-					r_Rx_DV <= 1'b0;
-					r_Clock_Count <= 16'b0000000000000000;
-					r_Bit_Index <= 3'b000;
-					r_Rx_Byte <= 8'b00000000;
-					if (r_Rx_Data == 1'b0)
-						r_SM_Main <= s_RX_START_BIT;
-					else
-						r_SM_Main <= s_IDLE;
-				end
-				s_RX_START_BIT:
-					if (r_Clock_Count == ((CLKS_PER_BIT - 1) >> 1)) begin
-						if (r_Rx_Data == 1'b0) begin
-							r_Clock_Count <= 16'b0000000000000000;
-							r_SM_Main <= s_RX_DATA_BITS;
-						end
-						else
-							r_SM_Main <= s_IDLE;
-					end
-					else begin
-						r_Clock_Count <= r_Clock_Count + 16'b0000000000000001;
-						r_SM_Main <= s_RX_START_BIT;
-					end
-				s_RX_DATA_BITS:
-					if (r_Clock_Count < (CLKS_PER_BIT - 1)) begin
-						r_Clock_Count <= r_Clock_Count + 16'b0000000000000001;
-						r_SM_Main <= s_RX_DATA_BITS;
-					end
-					else begin
-						r_Clock_Count <= 16'b0000000000000000;
-						r_Rx_Byte[r_Bit_Index] <= r_Rx_Data;
-						if (r_Bit_Index < 7) begin
-							r_Bit_Index <= r_Bit_Index + 3'b001;
-							r_SM_Main <= s_RX_DATA_BITS;
-						end
-						else begin
-							r_Bit_Index <= 3'b000;
-							r_SM_Main <= s_RX_STOP_BIT;
-						end
-					end
-				s_RX_STOP_BIT:
-					if (r_Clock_Count < (CLKS_PER_BIT - 1)) begin
-						r_Clock_Count <= r_Clock_Count + 16'b0000000000000001;
-						r_SM_Main <= s_RX_STOP_BIT;
-					end
-					else begin
-						r_Rx_DV <= 1'b1;
-						r_Clock_Count <= 16'b0000000000000000;
-						r_SM_Main <= s_CLEANUP;
-					end
-				s_CLEANUP: begin
-					r_SM_Main <= s_IDLE;
-					r_Rx_DV <= 1'b0;
-				end
-				default: r_SM_Main <= s_IDLE;
-			endcase
-	assign o_Rx_DV = r_Rx_DV;
-	assign o_Rx_Byte = r_Rx_Byte;
+   input  wire       clk_i,
+   input  wire       rst_ni,
+   input  wire       i_Rx_Serial,
+   input  wire [15:0] CLKS_PER_BIT,
+   output wire        o_Rx_DV,
+   output wire  [7:0] o_Rx_Byte
+   );
+    
+  parameter s_IDLE         = 3'b000;
+  parameter s_RX_START_BIT = 3'b001;
+  parameter s_RX_DATA_BITS = 3'b010;
+  parameter s_RX_STOP_BIT  = 3'b011;
+  parameter s_CLEANUP      = 3'b100;
+   
+  reg           r_Rx_Data_R ;
+  reg           r_Rx_Data   ;
+   
+  reg [15:0]     r_Clock_Count ;
+  reg [2:0]     r_Bit_Index  ; //8 bits total
+  reg [7:0]     r_Rx_Byte   ;
+  reg           r_Rx_DV     ;
+  reg [2:0]     r_SM_Main   ;
+   
+  // Purpose: Double-register the incoming data.
+  // This allows it to be used in the UART RX Clock Domain.
+  // (It removes problems caused by metastability)
+  always @(posedge clk_i)
+    begin
+    if (~rst_ni) begin
+      r_Rx_Data_R <= 1'b1;
+      r_Rx_Data   <= 1'b1;
+    end else begin
+      r_Rx_Data_R <= i_Rx_Serial;
+      r_Rx_Data   <= r_Rx_Data_R;
+    end
+  end
+   
+   
+  // Purpose: Control RX state machine
+  always @(posedge clk_i or negedge rst_ni)
+    begin
+      if (~rst_ni) begin
+        r_SM_Main <= s_IDLE;
+        r_Rx_DV       <= 1'b0;
+        r_Clock_Count <= 16'b0;
+        r_Bit_Index   <= 3'b0;
+	r_Rx_Byte     <= 8'b0;
+      end else begin       
+      case (r_SM_Main)
+        s_IDLE :
+          begin
+            r_Rx_DV       <= 1'b0;
+            r_Clock_Count <= 16'b0;
+            r_Bit_Index   <= 3'b0;
+            r_Rx_Byte     <= 8'b0; 
+            if (r_Rx_Data == 1'b0)          // Start bit detected
+              r_SM_Main <= s_RX_START_BIT;
+            else
+              r_SM_Main <= s_IDLE;
+          end
+         
+        // Check middle of start bit to make sure it's still low
+        s_RX_START_BIT :
+          begin
+            if (r_Clock_Count == ((CLKS_PER_BIT-1)>>1))
+              begin
+                if (r_Rx_Data == 1'b0)
+                  begin
+                    r_Clock_Count <= 16'b0;  // reset counter, found the middle
+                    r_SM_Main     <= s_RX_DATA_BITS;
+                  end
+                else
+                  r_SM_Main <= s_IDLE;
+              end
+            else
+              begin
+                r_Clock_Count <= r_Clock_Count + 16'b1;
+                r_SM_Main     <= s_RX_START_BIT;
+              end
+          end // case: s_RX_START_BIT
+         
+         
+        // Wait CLKS_PER_BIT-1 clock cycles to sample serial data
+        s_RX_DATA_BITS :
+          begin
+            if (r_Clock_Count < CLKS_PER_BIT-1)
+              begin
+                r_Clock_Count <= r_Clock_Count + 16'b1;
+                r_SM_Main     <= s_RX_DATA_BITS;
+              end
+            else
+              begin
+                r_Clock_Count          <= 16'b0;
+                r_Rx_Byte[r_Bit_Index] <= r_Rx_Data;
+                 
+                // Check if we have received all bits
+                if (r_Bit_Index < 7)
+                  begin
+                    r_Bit_Index <= r_Bit_Index + 3'b1;
+                    r_SM_Main   <= s_RX_DATA_BITS;
+                  end
+                else
+                  begin
+                    r_Bit_Index <= 3'b0;
+                    r_SM_Main   <= s_RX_STOP_BIT;
+                  end
+              end
+          end // case: s_RX_DATA_BITS
+     
+     
+        // Receive Stop bit.  Stop bit = 1
+        s_RX_STOP_BIT :
+          begin
+            // Wait CLKS_PER_BIT-1 clock cycles for Stop bit to finish
+            if (r_Clock_Count < CLKS_PER_BIT-1)
+              begin
+                r_Clock_Count <= r_Clock_Count + 16'b1;
+                r_SM_Main     <= s_RX_STOP_BIT;
+              end
+            else
+              begin
+                r_Rx_DV       <= 1'b1;
+                r_Clock_Count <= 16'b0;
+                r_SM_Main     <= s_CLEANUP;
+              end
+          end // case: s_RX_STOP_BIT
+     
+         
+        // Stay here 1 clock
+        s_CLEANUP :
+          begin
+            r_SM_Main <= s_IDLE;
+            r_Rx_DV   <= 1'b0;
+          end
+         
+         
+        default :
+          r_SM_Main <= s_IDLE;
+         
+      endcase
+      end
+    end   
+   
+  assign o_Rx_DV   = r_Rx_DV;
+  assign o_Rx_Byte = r_Rx_Byte;
+   
 endmodule
 module uart_rx (
 	clk_i,
@@ -26095,7 +24102,7 @@
 endmodule
 
 (* blackbox *)
-module sky130_sram_4kbyte_1rw1r_32x1024_8 (clk0, csb0,  web0,   wmask0, addr0, din0, dout0, clk1,       csb1,   addr1, dout1);
+module sky130_sram_4kbyte_1rw1r_32x1024_8 (clk0, csb0, web0, wmask0, addr0, din0, dout0, clk1, csb1, addr1, dout1);
         parameter NUM_WMASKS = 4;
         parameter DATA_WIDTH = 32;
         parameter ADDR_WIDTH = 10;
@@ -26118,4 +24125,4 @@
         input csb1;
         input [ADDR_WIDTH - 1:0] addr1;
         output [DATA_WIDTH - 1:0] dout1;
-endmodule
+endmodule
\ No newline at end of file