Skip to content

Commit

Permalink
Added grid generation methods
Browse files Browse the repository at this point in the history
  • Loading branch information
ganeshgore committed Jan 6, 2025
1 parent 226f275 commit 24287f8
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
12 changes: 12 additions & 0 deletions spydrnet_physical/util/rrgraph_uncompress.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,18 @@ def update_attr(element, attribs, skip_keys=(), upper_case_fields=()):

class rrgraph_bin2xml:

@staticmethod
def _grid_bin2xml(grids, xml_root=None):
if xml_root is None:
xml_root = XML("<grid></grid>")
xml_root.extend(
[
update_attr(Element("grid_loc"), g_loc.to_dict())
for g_loc in grids
]
)
return xml_root

@staticmethod
def _channels_bin2xml(channels, xml_root=None):
if xml_root is None:
Expand Down
17 changes: 17 additions & 0 deletions spydrnet_physical/util/rrgraph_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ def __init__(self, width, height, vpr_arch, routing_chan):
self.channels["Y"] = list(routing_chan for _ in range(width))
self.segments = []
self.block_types = []
self.gridLocs = []
self.rrgraph_bin = rr_capnp.RrGraph.new_message()
self.create_channels()

Expand Down Expand Up @@ -137,6 +138,20 @@ def create_block(
rr.blockTypes.blockTypes = self.block_types
return block_type_ux

def add_grid_block(self, block, x, y, layer=0, x_offset=0, y_offset=0):
grid = rr_capnp.GridLoc.new_message(
blockTypeId=block,
x=x,
y=y,
heightOffset=y_offset,
widthOffset=x_offset,
layer=layer,
)
self.gridLocs.append(grid)
self.rrgraph_bin.grid = rr_capnp.GridLocs.new_message()
self.rrgraph_bin.grid.gridLocs = self.gridLocs
return grid

def create_segment(
self, name, length, res_type="uxsdInvalid", c_per_meter=0, r_per_meter=0
):
Expand Down Expand Up @@ -237,6 +252,7 @@ def _gen_rrgraph_xml(
switches = self._switches_bin2xml(self.switches)
segments = self._segments_bin2xml(self.segments)
block_types = self._block_types_bin2xml(self.rrgraph_bin.blockTypes.blockTypes)
grids = self._grid_bin2xml(self.rrgraph_bin.grid.gridLocs)
# rrgraph_segments_bin2xml(self.rrgraph_bin.channels, etree.Element("channels"))
# rrgraph_block_types_bin2xml(self.rrgraph_bin.channels, etree.Element("channels"))
# rrgraph_grid_bin2xml(self.rrgraph_bin.channels, etree.Element("channels"))
Expand All @@ -246,6 +262,7 @@ def _gen_rrgraph_xml(
root.append(switches)
root.append(segments)
root.append(block_types)
root.append(grids)
return root

def write_rrgraph_xml(
Expand Down

0 comments on commit 24287f8

Please sign in to comment.