aboutsummaryrefslogtreecommitdiffstats
path: root/icebox/icebox.py
diff options
context:
space:
mode:
authorElms <elms@freshred.net>2018-07-24 13:34:14 -0700
committerElms <elms@freshred.net>2018-07-26 10:12:56 -0700
commit542e9ef0f3df4014896a8c35017fe4da9d6c68b7 (patch)
treefc42d20996c3815bff6e41ac4722a5c8e086189c /icebox/icebox.py
parent4582202121ef1619105ab02d8b51eba1a6bada60 (diff)
downloadicestorm-542e9ef0f3df4014896a8c35017fe4da9d6c68b7.tar.gz
icestorm-542e9ef0f3df4014896a8c35017fe4da9d6c68b7.tar.bz2
icestorm-542e9ef0f3df4014896a8c35017fe4da9d6c68b7.zip
icebox: parse '.sym>' HLC to track signal names
Diffstat (limited to 'icebox/icebox.py')
-rw-r--r--icebox/icebox.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/icebox/icebox.py b/icebox/icebox.py
index 27bd243..44f6024 100644
--- a/icebox/icebox.py
+++ b/icebox/icebox.py
@@ -704,6 +704,26 @@ class iceconfig:
#print('\tafter directions', neighbours)
return neighbours
+ def get_net_number(self, segment):
+ if not hasattr(self, 'net_map') or self.net_map is None:
+ self.net_map = {}
+ for netidx, group in enumerate(sorted(self.all_group_segments())):
+ for seg in group:
+ self.net_map[seg] = netidx
+
+ return self.net_map[segment]
+
+ def all_group_segments(self):
+ if not hasattr(self, 'all_groups') or self.all_groups is None:
+ all_tiles = set()
+ for x in range(self.max_x + 1):
+ for y in range(self.max_y + 1):
+ if self.tile(x, y) is not None:
+ all_tiles.add((x, y))
+
+ self.all_groups = self.group_segments(all_tiles, connect_gb=False)
+ return self.all_groups
+
def group_segments(self, all_from_tiles=set(), extra_connections=list(), extra_segments=list(), connect_gb=True):
seed_segments = set()
seen_segments = set()
@@ -957,7 +977,9 @@ class iceconfig:
print(line, file=f)
for extra_bit in sorted(self.extra_bits):
print(".extra_bit %d %d %d" % extra_bit, file=f)
-
+ for net in sorted(self.symbols.keys()):
+ for sym_key in self.symbols[net]:
+ print(".sym %s %s" % (net, sym_key), file=f)
class tileconfig:
def __init__(self, tile):
self.bits = set()