aboutsummaryrefslogtreecommitdiffstats
path: root/icebox/icebox_chipdb.py
diff options
context:
space:
mode:
authorDavid Shah <davey1576@gmail.com>2017-11-15 16:31:17 +0000
committerDavid Shah <davey1576@gmail.com>2017-11-17 15:09:41 +0000
commit8f9eba3fe3f91bd503015ac0b8e0801d6e0694c0 (patch)
tree5c0cc045158be9d35235317a4d91eb0c034072d4 /icebox/icebox_chipdb.py
parentc9160c77dc7a0029a39c51aef75b9e32755a6677 (diff)
downloadicestorm-8f9eba3fe3f91bd503015ac0b8e0801d6e0694c0.tar.gz
icestorm-8f9eba3fe3f91bd503015ac0b8e0801d6e0694c0.tar.bz2
icestorm-8f9eba3fe3f91bd503015ac0b8e0801d6e0694c0.zip
Add new tile types and MAC16s to chipdb
Diffstat (limited to 'icebox/icebox_chipdb.py')
-rwxr-xr-xicebox/icebox_chipdb.py32
1 files changed, 31 insertions, 1 deletions
diff --git a/icebox/icebox_chipdb.py b/icebox/icebox_chipdb.py
index ca7f483..7d75670 100755
--- a/icebox/icebox_chipdb.py
+++ b/icebox/icebox_chipdb.py
@@ -129,7 +129,8 @@ print("""#
# .logic_tile X Y
# .ramb_tile X Y
# .ramt_tile X Y
-#
+# .dsp[0..3]_tile X Y
+# .ipcon_tile X Y
# declares the existence of a IO/LOGIC/RAM tile with the given coordinates
#
#
@@ -137,6 +138,8 @@ print("""#
# .logic_tile_bits COLUMNS ROWS
# .ramb_tile_bits COLUMNS ROWS
# .ramt_tile_bits COLUMNS ROWS
+# .dsp[0..3]_tile_bits X Y
+# .ipcon_tile_bits X Y
# FUNCTION_1 CONFIG_BITS_NAMES_1
# FUNCTION_2 CONFIG_BITS_NAMES_2
# ...
@@ -145,6 +148,7 @@ print("""#
#
#
# .extra_cell X Y <cell-type>
+# .extra_cell X Y Z <cell-type>
# KEY MULTI-FIELD-VALUE
# ....
#
@@ -238,6 +242,16 @@ for idx in sorted(ic.ramt_tiles):
print(".ramt_tile %d %d" % idx)
print()
+for dsp_idx in range(4):
+ for idx in sorted(ic.dsp_tiles[dsp_idx]):
+ x, y = idx
+ print(".dsp%d_tile %d %d" % (dsp_idx, x, y))
+ print()
+
+for idx in sorted(ic.ipcon_tiles):
+ print(".ipcon_tile %d %d" % idx)
+print()
+
def print_tile_nonrouting_bits(tile_type, idx):
tx = idx[0]
ty = idx[1]
@@ -266,6 +280,11 @@ if not mode_384:
print_tile_nonrouting_bits("ramb", list(ic.ramb_tiles.keys())[0])
print_tile_nonrouting_bits("ramt", list(ic.ramt_tiles.keys())[0])
+if ic.is_ultra():
+ for dsp_idx in range(4):
+ print_tile_nonrouting_bits("dsp%d" % dsp_idx, list(ic.dsp_tiles[dsp_idx].keys())[0])
+ print_tile_nonrouting_bits("ipcon", list(ic.ipcon_tiles.keys())[0])
+
print(".extra_cell 0 0 WARMBOOT")
for key in sorted(icebox.warmbootinfo_db[ic.device]):
print("%s %s" % (key, " ".join([str(k) for k in icebox.warmbootinfo_db[ic.device][key]])))
@@ -285,6 +304,17 @@ for pllid in ic.pll_list():
print("%s %s" % (key, " ".join([str(k) for k in pllinfo[key]])))
print()
+for dsploc in ic.dsp_tiles[0]:
+ x, y = dsploc
+ print(".extra_cell %d %d 0 MAC16" % dsploc)
+ nets = ic.get_dsp_nets_db(x, y)
+ for key in sorted(nets):
+ print("%s %s" % (key, " ".join([str(k) for k in nets[key]])))
+
+ cfg = ic.get_dsp_config_db(x, y)
+ for key in sorted(cfg):
+ print("%s %s" % (key, " ".join([str(k) for k in cfg[key]])))
+
print(".extra_bits")
extra_bits = dict()
for idx in sorted(ic.extra_bits_db()):