From 8f9eba3fe3f91bd503015ac0b8e0801d6e0694c0 Mon Sep 17 00:00:00 2001 From: David Shah Date: Wed, 15 Nov 2017 16:31:17 +0000 Subject: Add new tile types and MAC16s to chipdb --- icebox/icebox_chipdb.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'icebox/icebox_chipdb.py') 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 +# .extra_cell X Y Z # 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()): -- cgit v1.2.3 From e7d22f22777227df18ff9c34e3b663aef04a075b Mon Sep 17 00:00:00 2001 From: David Shah Date: Fri, 17 Nov 2017 10:06:35 +0000 Subject: UltraPlus Internal Oscillator support --- icebox/icebox_chipdb.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'icebox/icebox_chipdb.py') diff --git a/icebox/icebox_chipdb.py b/icebox/icebox_chipdb.py index 7d75670..ce30153 100755 --- a/icebox/icebox_chipdb.py +++ b/icebox/icebox_chipdb.py @@ -314,7 +314,18 @@ for dsploc in ic.dsp_tiles[0]: 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() + +if ic.device in icebox.extra_cells_db: + for cell in icebox.extra_cells_db[ic.device]: + name, loc = cell + x, y, z = loc + print(".extra_cell %d %d %d %s" % (x, y, z, name)) + cellinfo = icebox.extra_cells_db[ic.device][cell] + for key in sorted(cellinfo): + print("%s %s" % (key, " ".join([str(k) for k in cellinfo[key]]))) + print() + print(".extra_bits") extra_bits = dict() for idx in sorted(ic.extra_bits_db()): -- cgit v1.2.3 From c71db50a27600885ea4e84d9744a4a4417af02c6 Mon Sep 17 00:00:00 2001 From: David Shah Date: Fri, 17 Nov 2017 11:27:40 +0000 Subject: Add UltraPlus LED driver support and demo --- icebox/icebox_chipdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'icebox/icebox_chipdb.py') diff --git a/icebox/icebox_chipdb.py b/icebox/icebox_chipdb.py index ce30153..9a7b531 100755 --- a/icebox/icebox_chipdb.py +++ b/icebox/icebox_chipdb.py @@ -324,7 +324,7 @@ if ic.device in icebox.extra_cells_db: cellinfo = icebox.extra_cells_db[ic.device][cell] for key in sorted(cellinfo): print("%s %s" % (key, " ".join([str(k) for k in cellinfo[key]]))) - print() + print() print(".extra_bits") extra_bits = dict() -- cgit v1.2.3 From afcc653b7882217d98aad95829256d65665f7c07 Mon Sep 17 00:00:00 2001 From: David Shah Date: Fri, 17 Nov 2017 14:29:00 +0000 Subject: Add support for UltraPlus SPRAM --- icebox/icebox_chipdb.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'icebox/icebox_chipdb.py') diff --git a/icebox/icebox_chipdb.py b/icebox/icebox_chipdb.py index 9a7b531..520d884 100755 --- a/icebox/icebox_chipdb.py +++ b/icebox/icebox_chipdb.py @@ -325,7 +325,17 @@ if ic.device in icebox.extra_cells_db: for key in sorted(cellinfo): print("%s %s" % (key, " ".join([str(k) for k in cellinfo[key]]))) print() - + +if ic.device in icebox.spram_db: + for cell in icebox.spram_db[ic.device]: + loc = cell + x, y, z = loc + print(".extra_cell %d %d %d SPRAM" % (x, y, z)) + cellinfo = icebox.spram_db[ic.device][cell] + for key in sorted(cellinfo): + print("%s %s" % (key, " ".join([str(k) for k in cellinfo[key]]))) + print() + print(".extra_bits") extra_bits = dict() for idx in sorted(ic.extra_bits_db()): -- cgit v1.2.3