Skip to content

Commit

Permalink
src: Deduplicate logic of read enable generation.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ondrej Ille committed May 4, 2024
1 parent a076609 commit 3411923
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/peakrdl_regblock/readback/generators.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,10 @@ def process_external_reg(self, node: RegNode) -> None:

def process_reg(self, node: RegNode) -> None:
current_bit = 0
rd_strb = f"({self.exp.dereferencer.get_access_strobe(node)} && !decoded_req_is_wr)"
# Create per-register read enable
rd_strb = self.exp.dereferencer.get_access_strobe(node)
rd_en = f"{rd_strb.split('.')[-1]}_rd_en"
self.add_content(f"logic {rd_en} = {rd_strb} && !decoded_req_is_wr;")
# Fields are sorted by ascending low bit
for field in node.fields():
if not field.is_sw_readable:
Expand All @@ -151,7 +154,7 @@ def process_reg(self, node: RegNode) -> None:
# Field gets bitswapped since it is in [low:high] orientation
value = do_bitswap(value)

self.add_content(f"assign readback_array[{self.current_offset_str}][{field.high}:{field.low}] = {rd_strb} ? {value} : '0;")
self.add_content(f"assign readback_array[{self.current_offset_str}][{field.high}:{field.low}] = {rd_en} ? {value} : '0;")

current_bit = field.high + 1

Expand Down

0 comments on commit 3411923

Please sign in to comment.