diff --git a/src/peakrdl_regblock/write_buffering/template.sv b/src/peakrdl_regblock/write_buffering/template.sv index 9235642..43e7973 100644 --- a/src/peakrdl_regblock/write_buffering/template.sv +++ b/src/peakrdl_regblock/write_buffering/template.sv @@ -11,11 +11,11 @@ always_ff {{get_always_ff_event(cpuif.reset)}} begin if({{segment.strobe}} && decoded_req_is_wr) begin {{wbuf_prefix}}.pending <= '1; {%- if node.inst.is_msb0_order %} - {{wbuf_prefix}}.data{{segment.bslice}} <= decoded_wr_data_bswap; - {{wbuf_prefix}}.biten{{segment.bslice}} <= decoded_wr_biten_bswap; + {{wbuf_prefix}}.data{{segment.bslice}} <= ({{wbuf_prefix}}.data{{segment.bslice}} & ~decoded_wr_biten_bswap) | (decoded_wr_data_bswap & decoded_wr_biten_bswap); + {{wbuf_prefix}}.biten{{segment.bslice}} <= {{wbuf_prefix}}.biten{{segment.bslice}} | decoded_wr_biten_bswap; {%- else %} - {{wbuf_prefix}}.data{{segment.bslice}} <= ({{wbuf_prefix}}.data{{segment.bslice}} & ~decoded_wr_biten{{segment.bslice}}) | (decoded_wr_data{{segment.bslice}} & decoded_wr_biten{{segment.bslice}}); - {{wbuf_prefix}}.biten{{segment.bslice}} <= decoded_wr_biten | {{wbuf_prefix}}.biten{{segment.bslice}}; + {{wbuf_prefix}}.data{{segment.bslice}} <= ({{wbuf_prefix}}.data{{segment.bslice}} & ~decoded_wr_biten) | (decoded_wr_data & decoded_wr_biten); + {{wbuf_prefix}}.biten{{segment.bslice}} <= {{wbuf_prefix}}.biten{{segment.bslice}} | decoded_wr_biten; {%- endif %} end {%- endfor %}