@@ -522,122 +522,6 @@ index 962d3b559..9d5a10c8c 100644
522522 `endif
523523 end
524524
525- diff --git a/hw/ip/tlul/rtl/tlul_adapter_sram.sv b/hw/ip/tlul/rtl/tlul_adapter_sram.sv
526- index 6e2f33191..2820baadd 100644
527- --- a/hw/ip/tlul/rtl/tlul_adapter_sram.sv
528- +++ b/hw/ip/tlul/rtl/tlul_adapter_sram.sv
529- @@ -134,20 +134,17 @@ module tlul_adapter_sram #(
530- end
531- end
532-
533- - assign tl_o = '{
534- - d_valid : d_valid ,
535- - d_opcode : (d_valid && reqfifo_rdata.op != OpRead) ? AccessAck : AccessAckData,
536- - d_param : '0,
537- - d_size : (d_valid) ? reqfifo_rdata.size : '0,
538- - d_source : (d_valid) ? reqfifo_rdata.source : '0,
539- - d_sink : 1'b0,
540- - d_data : (d_valid && rspfifo_rvalid && reqfifo_rdata.op == OpRead)
541- - ? rspfifo_rdata.data : '0,
542- - d_user : '0,
543- - d_error : d_valid && d_error,
544- -
545- - a_ready : (gnt_i | error_internal) & reqfifo_wready & sramreqfifo_wready
546- - };
547- + assign tl_o.d_valid = d_valid;
548- + assign tl_o.d_opcode = (d_valid && reqfifo_rdata.op != OpRead) ? AccessAck : AccessAckData;
549- + assign tl_o.d_param = '0;
550- + assign tl_o.d_size = (d_valid) ? reqfifo_rdata.size : '0;
551- + assign tl_o.d_source = (d_valid) ? reqfifo_rdata.source : '0;
552- + assign tl_o.d_sink = 1'b0;
553- + assign tl_o.d_data = (d_valid && rspfifo_rvalid && reqfifo_rdata.op == OpRead) ? rspfifo_rdata.data : '0;
554- + assign tl_o.d_user = '0;
555- + assign tl_o.d_error = d_valid && d_error;
556- +
557- + assign tl_o.a_ready = (gnt_i | error_internal) & reqfifo_wready & sramreqfifo_wready;
558-
559- // a_ready depends on the FIFO full condition and grant from SRAM (or SRAM arbiter)
560- // assemble response, including read response, write response, and error for unsupported stuff
561- @@ -171,8 +168,8 @@ module tlul_adapter_sram #(
562- end
563-
564- // Convert byte mask to SRAM bit mask for writes, and only forward valid data
565- - logic [WidthMult-1:0][top_pkg::TL_DW-1:0] wmask_int;
566- - logic [WidthMult-1:0][top_pkg::TL_DW-1:0] wdata_int;
567- + logic [(WidthMult * top_pkg::TL_DW) - 1:0] wmask_int;
568- + logic [(WidthMult * top_pkg::TL_DW) - 1:0] wdata_int;
569-
570- always_comb begin
571- wmask_int = '0;
572- @@ -180,8 +177,8 @@ module tlul_adapter_sram #(
573-
574- if (tl_i.a_valid) begin
575- for (int i = 0 ; i < top_pkg::TL_DW/8 ; i++) begin
576- - wmask_int[woffset][8*i +: 8] = {8{tl_i.a_mask[i]}};
577- - wdata_int[woffset][8*i +: 8] = (tl_i.a_mask[i] && we_o) ? tl_i.a_data[8*i+:8] : '0;
578- + wmask_int[(woffset * top_pkg::TL_DW) + (8 * i) +: 8] = {8{tl_i.a_mask[i]}};
579- + wdata_int[(woffset * top_pkg::TL_DW) + (8 * i) +: 8] = (tl_i.a_mask[i] && we_o) ? tl_i.a_data[8*i+:8] : '0;
580- end
581- end
582- end
583- @@ -221,19 +218,15 @@ module tlul_adapter_sram #(
584- // End: Request Error Detection
585-
586- assign reqfifo_wvalid = a_ack ; // Push to FIFO only when granted
587- - assign reqfifo_wdata = '{
588- - op: (tl_i.a_opcode != Get) ? OpWrite : OpRead, // To return AccessAck for opcode error
589- - error: error_internal,
590- - size: tl_i.a_size,
591- - source: tl_i.a_source
592- - }; // Store the request only. Doesn't have to store data
593- + assign reqfifo_wdata.op = (tl_i.a_opcode != Get) ? OpWrite : OpRead; // To return AccessAck for opcode error
594- + assign reqfifo_wdata.error = error_internal;
595- + assign reqfifo_wdata.size = tl_i.a_size;
596- + assign reqfifo_wdata.source = tl_i.a_source;
597- assign reqfifo_rready = d_ack ;
598-
599- // push together with ReqFIFO, pop upon returning read
600- - assign sramreqfifo_wdata = '{
601- - mask : tl_i.a_mask,
602- - woffset : woffset
603- - };
604- + assign sramreqfifo_wdata.mask = tl_i.a_mask;
605- + assign sramreqfifo_wdata.woffset = woffset;
606- assign sramreqfifo_wvalid = sram_ack & ~we_o;
607- assign sramreqfifo_rready = rspfifo_wvalid;
608-
609- @@ -241,26 +234,23 @@ module tlul_adapter_sram #(
610-
611- // Make sure only requested bytes are forwarded
612- logic [SramDw-1:0] rdata;
613- - logic [WidthMult-1:0][top_pkg::TL_DW-1:0] rmask;
614- + logic [(WidthMult * top_pkg::TL_DW) - 1:0] rmask;
615- //logic [SramDw-1:0] rmask;
616- logic [top_pkg::TL_DW-1:0] rdata_tlword;
617-
618- always_comb begin
619- rmask = '0;
620- for (int i = 0 ; i < top_pkg::TL_DW/8 ; i++) begin
621- - rmask[sramreqfifo_rdata.woffset][8*i +: 8] = {8{sramreqfifo_rdata.mask[i]}};
622- + rmask[(sramreqfifo_rdata.woffset * top_pkg::TL_DW) + (8 * i) +: 8] = {8{sramreqfifo_rdata.mask[i]}};
623- end
624- end
625-
626- assign rdata = rdata_i & rmask;
627- assign rdata_tlword = rdata[sramreqfifo_rdata.woffset * top_pkg::TL_DW +: top_pkg::TL_DW];
628-
629- - assign rspfifo_wdata = '{
630- - data : rdata_tlword,
631- - error: rerror_i[1] // Only care for Uncorrectable error
632- - };
633- - assign rspfifo_rready = (reqfifo_rdata.op == OpRead & ~reqfifo_rdata.error)
634- - ? reqfifo_rready : 1'b0 ;
635- + assign rspfifo_wdata.data = rdata_tlword;
636- + assign rspfifo_wdata.error = rerror_i[1]; // Only care for Uncorrectable error
637- + assign rspfifo_rready = (reqfifo_rdata.op == OpRead & ~reqfifo_rdata.error) ? reqfifo_rready : 1'b0 ;
638-
639- // FIFO instance: REQ, RSP
640-
641525diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
642526index 2acc14e86..c6aa89066 100644
643527--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
0 commit comments