Dev/downsize apb paddr (#27)
* Downsize paddr bits * Updated Test suite to use offset aligned address * fix for apb3 and axi4lite * modified structure to pass hierarchy information --------- Co-authored-by: Byron Lathi <bslathi19@gmail.com>
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
from collections import deque
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from systemrdl.node import AddressableNode
|
||||
|
||||
from ...utils import get_indexed_path
|
||||
from ...sv_int import SVInt
|
||||
from ...utils import clog2, get_indexed_path
|
||||
from ..base_cpuif import BaseCpuif
|
||||
from .apb4_interface import APB4FlatInterface
|
||||
|
||||
@@ -33,8 +35,12 @@ class APB4CpuifFlat(BaseCpuif):
|
||||
) -> str:
|
||||
return self._interface.signal(signal, node, idx)
|
||||
|
||||
def fanout(self, node: AddressableNode) -> str:
|
||||
def fanout(self, node: AddressableNode, array_stack: deque[int]) -> str:
|
||||
fanout: dict[str, str] = {}
|
||||
addr_comp = [f"{self.signal('PADDR')}"]
|
||||
for i, stride in enumerate(array_stack):
|
||||
addr_comp.append(f"(gi{i}*{SVInt(stride, self.addr_width)})")
|
||||
|
||||
fanout[self.signal("PSEL", node, "gi")] = (
|
||||
f"cpuif_wr_sel.{get_indexed_path(self.exp.ds.top_node, node, 'gi')}|cpuif_rd_sel.{get_indexed_path(self.exp.ds.top_node, node, 'gi')}"
|
||||
)
|
||||
@@ -42,7 +48,7 @@ class APB4CpuifFlat(BaseCpuif):
|
||||
fanout[self.signal("PWRITE", node, "gi")] = (
|
||||
f"cpuif_wr_sel.{get_indexed_path(self.exp.ds.top_node, node, 'gi')}"
|
||||
)
|
||||
fanout[self.signal("PADDR", node, "gi")] = self.signal("PADDR")
|
||||
fanout[self.signal("PADDR", node, "gi")] = f"{{{'-'.join(addr_comp)}}}[{clog2(node.size) - 1}:0]"
|
||||
fanout[self.signal("PPROT", node, "gi")] = self.signal("PPROT")
|
||||
fanout[self.signal("PWDATA", node, "gi")] = "cpuif_wr_data"
|
||||
fanout[self.signal("PSTRB", node, "gi")] = "cpuif_wr_byte_en"
|
||||
|
||||
Reference in New Issue
Block a user