aboutsummaryrefslogtreecommitdiffstats
path: root/icebox/icebox.py
diff options
context:
space:
mode:
authorDavid Shah <davey1576@gmail.com>2017-11-17 14:29:00 +0000
committerDavid Shah <davey1576@gmail.com>2017-11-17 15:10:04 +0000
commitafcc653b7882217d98aad95829256d65665f7c07 (patch)
tree61359f190cd5fba5af0716908b156bdaa203f8f0 /icebox/icebox.py
parentc71db50a27600885ea4e84d9744a4a4417af02c6 (diff)
downloadicestorm-afcc653b7882217d98aad95829256d65665f7c07.tar.gz
icestorm-afcc653b7882217d98aad95829256d65665f7c07.tar.bz2
icestorm-afcc653b7882217d98aad95829256d65665f7c07.zip
Add support for UltraPlus SPRAM
Diffstat (limited to 'icebox/icebox.py')
-rw-r--r--icebox/icebox.py243
1 files changed, 243 insertions, 0 deletions
diff --git a/icebox/icebox.py b/icebox/icebox.py
index 40934f3..0a810e8 100644
--- a/icebox/icebox.py
+++ b/icebox/icebox.py
@@ -4438,6 +4438,249 @@ dsp_config_db = {
}
}
+# SPRAM data for UltraPlus devices, use icefuzz/tests/fuzz_spram.py
+# to generate this
+spram_db = {
+ "5k" : {
+ (0, 0, 1): {
+ "ADDRESS_0": (0, 2, "lutff_0/in_1"),
+ "ADDRESS_10": (0, 2, "lutff_2/in_0"),
+ "ADDRESS_11": (0, 2, "lutff_3/in_0"),
+ "ADDRESS_12": (0, 2, "lutff_4/in_0"),
+ "ADDRESS_13": (0, 2, "lutff_5/in_0"),
+ "ADDRESS_1": (0, 2, "lutff_1/in_1"),
+ "ADDRESS_2": (0, 2, "lutff_2/in_1"),
+ "ADDRESS_3": (0, 2, "lutff_3/in_1"),
+ "ADDRESS_4": (0, 2, "lutff_4/in_1"),
+ "ADDRESS_5": (0, 2, "lutff_5/in_1"),
+ "ADDRESS_6": (0, 2, "lutff_6/in_1"),
+ "ADDRESS_7": (0, 2, "lutff_7/in_1"),
+ "ADDRESS_8": (0, 2, "lutff_0/in_0"),
+ "ADDRESS_9": (0, 2, "lutff_1/in_0"),
+ "CHIPSELECT": (0, 3, "lutff_6/in_1"),
+ "CLOCK": (0, 1, "clk"),
+ "DATAIN_0": (0, 1, "lutff_0/in_3"),
+ "DATAIN_10": (0, 1, "lutff_2/in_1"),
+ "DATAIN_11": (0, 1, "lutff_3/in_1"),
+ "DATAIN_12": (0, 1, "lutff_4/in_1"),
+ "DATAIN_13": (0, 1, "lutff_5/in_1"),
+ "DATAIN_14": (0, 1, "lutff_6/in_1"),
+ "DATAIN_15": (0, 1, "lutff_7/in_1"),
+ "DATAIN_1": (0, 1, "lutff_1/in_3"),
+ "DATAIN_2": (0, 1, "lutff_2/in_3"),
+ "DATAIN_3": (0, 1, "lutff_3/in_3"),
+ "DATAIN_4": (0, 1, "lutff_4/in_3"),
+ "DATAIN_5": (0, 1, "lutff_5/in_3"),
+ "DATAIN_6": (0, 1, "lutff_6/in_3"),
+ "DATAIN_7": (0, 1, "lutff_7/in_3"),
+ "DATAIN_8": (0, 1, "lutff_0/in_1"),
+ "DATAIN_9": (0, 1, "lutff_1/in_1"),
+ "DATAOUT_0": (0, 1, "slf_op_0"),
+ "DATAOUT_10": (0, 2, "slf_op_2"),
+ "DATAOUT_11": (0, 2, "slf_op_3"),
+ "DATAOUT_12": (0, 2, "slf_op_4"),
+ "DATAOUT_13": (0, 2, "slf_op_5"),
+ "DATAOUT_14": (0, 2, "slf_op_6"),
+ "DATAOUT_15": (0, 2, "slf_op_7"),
+ "DATAOUT_1": (0, 1, "slf_op_1"),
+ "DATAOUT_2": (0, 1, "slf_op_2"),
+ "DATAOUT_3": (0, 1, "slf_op_3"),
+ "DATAOUT_4": (0, 1, "slf_op_4"),
+ "DATAOUT_5": (0, 1, "slf_op_5"),
+ "DATAOUT_6": (0, 1, "slf_op_6"),
+ "DATAOUT_7": (0, 1, "slf_op_7"),
+ "DATAOUT_8": (0, 2, "slf_op_0"),
+ "DATAOUT_9": (0, 2, "slf_op_1"),
+ "MASKWREN_0": (0, 3, "lutff_0/in_0"),
+ "MASKWREN_1": (0, 3, "lutff_1/in_0"),
+ "MASKWREN_2": (0, 3, "lutff_2/in_0"),
+ "MASKWREN_3": (0, 3, "lutff_3/in_0"),
+ "POWEROFF": (0, 4, "lutff_4/in_3"),
+ "SLEEP": (0, 4, "lutff_2/in_3"),
+ "SPRAM_EN": (0, 1, "CBIT_0"),
+ "STANDBY": (0, 4, "lutff_0/in_3"),
+ "WREN": (0, 3, "lutff_4/in_1"),
+ },
+ (0, 0, 2): {
+ "ADDRESS_0": (0, 2, "lutff_6/in_0"),
+ "ADDRESS_10": (0, 3, "lutff_0/in_1"),
+ "ADDRESS_11": (0, 3, "lutff_1/in_1"),
+ "ADDRESS_12": (0, 3, "lutff_2/in_1"),
+ "ADDRESS_13": (0, 3, "lutff_3/in_1"),
+ "ADDRESS_1": (0, 2, "lutff_7/in_0"),
+ "ADDRESS_2": (0, 3, "lutff_0/in_3"),
+ "ADDRESS_3": (0, 3, "lutff_1/in_3"),
+ "ADDRESS_4": (0, 3, "lutff_2/in_3"),
+ "ADDRESS_5": (0, 3, "lutff_3/in_3"),
+ "ADDRESS_6": (0, 3, "lutff_4/in_3"),
+ "ADDRESS_7": (0, 3, "lutff_5/in_3"),
+ "ADDRESS_8": (0, 3, "lutff_6/in_3"),
+ "ADDRESS_9": (0, 3, "lutff_7/in_3"),
+ "CHIPSELECT": (0, 3, "lutff_7/in_1"),
+ "CLOCK": (0, 2, "clk"),
+ "DATAIN_0": (0, 1, "lutff_0/in_0"),
+ "DATAIN_10": (0, 2, "lutff_2/in_3"),
+ "DATAIN_11": (0, 2, "lutff_3/in_3"),
+ "DATAIN_12": (0, 2, "lutff_4/in_3"),
+ "DATAIN_13": (0, 2, "lutff_5/in_3"),
+ "DATAIN_14": (0, 2, "lutff_6/in_3"),
+ "DATAIN_15": (0, 2, "lutff_7/in_3"),
+ "DATAIN_1": (0, 1, "lutff_1/in_0"),
+ "DATAIN_2": (0, 1, "lutff_2/in_0"),
+ "DATAIN_3": (0, 1, "lutff_3/in_0"),
+ "DATAIN_4": (0, 1, "lutff_4/in_0"),
+ "DATAIN_5": (0, 1, "lutff_5/in_0"),
+ "DATAIN_6": (0, 1, "lutff_6/in_0"),
+ "DATAIN_7": (0, 1, "lutff_7/in_0"),
+ "DATAIN_8": (0, 2, "lutff_0/in_3"),
+ "DATAIN_9": (0, 2, "lutff_1/in_3"),
+ "DATAOUT_0": (0, 3, "slf_op_0"),
+ "DATAOUT_10": (0, 4, "slf_op_2"),
+ "DATAOUT_11": (0, 4, "slf_op_3"),
+ "DATAOUT_12": (0, 4, "slf_op_4"),
+ "DATAOUT_13": (0, 4, "slf_op_5"),
+ "DATAOUT_14": (0, 4, "slf_op_6"),
+ "DATAOUT_15": (0, 4, "slf_op_7"),
+ "DATAOUT_1": (0, 3, "slf_op_1"),
+ "DATAOUT_2": (0, 3, "slf_op_2"),
+ "DATAOUT_3": (0, 3, "slf_op_3"),
+ "DATAOUT_4": (0, 3, "slf_op_4"),
+ "DATAOUT_5": (0, 3, "slf_op_5"),
+ "DATAOUT_6": (0, 3, "slf_op_6"),
+ "DATAOUT_7": (0, 3, "slf_op_7"),
+ "DATAOUT_8": (0, 4, "slf_op_0"),
+ "DATAOUT_9": (0, 4, "slf_op_1"),
+ "MASKWREN_0": (0, 3, "lutff_4/in_0"),
+ "MASKWREN_1": (0, 3, "lutff_5/in_0"),
+ "MASKWREN_2": (0, 3, "lutff_6/in_0"),
+ "MASKWREN_3": (0, 3, "lutff_7/in_0"),
+ "POWEROFF": (0, 4, "lutff_5/in_3"),
+ "SLEEP": (0, 4, "lutff_3/in_3"),
+ "SPRAM_EN": (0, 1, "CBIT_1"),
+ "STANDBY": (0, 4, "lutff_1/in_3"),
+ "WREN": (0, 3, "lutff_5/in_1"),
+ },
+ (25, 0, 3): {
+ "ADDRESS_0": (25, 2, "lutff_0/in_1"),
+ "ADDRESS_10": (25, 2, "lutff_2/in_0"),
+ "ADDRESS_11": (25, 2, "lutff_3/in_0"),
+ "ADDRESS_12": (25, 2, "lutff_4/in_0"),
+ "ADDRESS_13": (25, 2, "lutff_5/in_0"),
+ "ADDRESS_1": (25, 2, "lutff_1/in_1"),
+ "ADDRESS_2": (25, 2, "lutff_2/in_1"),
+ "ADDRESS_3": (25, 2, "lutff_3/in_1"),
+ "ADDRESS_4": (25, 2, "lutff_4/in_1"),
+ "ADDRESS_5": (25, 2, "lutff_5/in_1"),
+ "ADDRESS_6": (25, 2, "lutff_6/in_1"),
+ "ADDRESS_7": (25, 2, "lutff_7/in_1"),
+ "ADDRESS_8": (25, 2, "lutff_0/in_0"),
+ "ADDRESS_9": (25, 2, "lutff_1/in_0"),
+ "CHIPSELECT": (25, 3, "lutff_6/in_1"),
+ "CLOCK": (25, 1, "clk"),
+ "DATAIN_0": (25, 1, "lutff_0/in_3"),
+ "DATAIN_10": (25, 1, "lutff_2/in_1"),
+ "DATAIN_11": (25, 1, "lutff_3/in_1"),
+ "DATAIN_12": (25, 1, "lutff_4/in_1"),
+ "DATAIN_13": (25, 1, "lutff_5/in_1"),
+ "DATAIN_14": (25, 1, "lutff_6/in_1"),
+ "DATAIN_15": (25, 1, "lutff_7/in_1"),
+ "DATAIN_1": (25, 1, "lutff_1/in_3"),
+ "DATAIN_2": (25, 1, "lutff_2/in_3"),
+ "DATAIN_3": (25, 1, "lutff_3/in_3"),
+ "DATAIN_4": (25, 1, "lutff_4/in_3"),
+ "DATAIN_5": (25, 1, "lutff_5/in_3"),
+ "DATAIN_6": (25, 1, "lutff_6/in_3"),
+ "DATAIN_7": (25, 1, "lutff_7/in_3"),
+ "DATAIN_8": (25, 1, "lutff_0/in_1"),
+ "DATAIN_9": (25, 1, "lutff_1/in_1"),
+ "DATAOUT_0": (25, 1, "slf_op_0"),
+ "DATAOUT_10": (25, 2, "slf_op_2"),
+ "DATAOUT_11": (25, 2, "slf_op_3"),
+ "DATAOUT_12": (25, 2, "slf_op_4"),
+ "DATAOUT_13": (25, 2, "slf_op_5"),
+ "DATAOUT_14": (25, 2, "slf_op_6"),
+ "DATAOUT_15": (25, 2, "slf_op_7"),
+ "DATAOUT_1": (25, 1, "slf_op_1"),
+ "DATAOUT_2": (25, 1, "slf_op_2"),
+ "DATAOUT_3": (25, 1, "slf_op_3"),
+ "DATAOUT_4": (25, 1, "slf_op_4"),
+ "DATAOUT_5": (25, 1, "slf_op_5"),
+ "DATAOUT_6": (25, 1, "slf_op_6"),
+ "DATAOUT_7": (25, 1, "slf_op_7"),
+ "DATAOUT_8": (25, 2, "slf_op_0"),
+ "DATAOUT_9": (25, 2, "slf_op_1"),
+ "MASKWREN_0": (25, 3, "lutff_0/in_0"),
+ "MASKWREN_1": (25, 3, "lutff_1/in_0"),
+ "MASKWREN_2": (25, 3, "lutff_2/in_0"),
+ "MASKWREN_3": (25, 3, "lutff_3/in_0"),
+ "POWEROFF": (25, 4, "lutff_4/in_3"),
+ "SLEEP": (25, 4, "lutff_2/in_3"),
+ "SPRAM_EN": (25, 1, "CBIT_0"),
+ "STANDBY": (25, 4, "lutff_0/in_3"),
+ "WREN": (25, 3, "lutff_4/in_1"),
+ },
+ (25, 0, 4): {
+ "ADDRESS_0": (25, 2, "lutff_6/in_0"),
+ "ADDRESS_10": (25, 3, "lutff_0/in_1"),
+ "ADDRESS_11": (25, 3, "lutff_1/in_1"),
+ "ADDRESS_12": (25, 3, "lutff_2/in_1"),
+ "ADDRESS_13": (25, 3, "lutff_3/in_1"),
+ "ADDRESS_1": (25, 2, "lutff_7/in_0"),
+ "ADDRESS_2": (25, 3, "lutff_0/in_3"),
+ "ADDRESS_3": (25, 3, "lutff_1/in_3"),
+ "ADDRESS_4": (25, 3, "lutff_2/in_3"),
+ "ADDRESS_5": (25, 3, "lutff_3/in_3"),
+ "ADDRESS_6": (25, 3, "lutff_4/in_3"),
+ "ADDRESS_7": (25, 3, "lutff_5/in_3"),
+ "ADDRESS_8": (25, 3, "lutff_6/in_3"),
+ "ADDRESS_9": (25, 3, "lutff_7/in_3"),
+ "CHIPSELECT": (25, 3, "lutff_7/in_1"),
+ "CLOCK": (25, 2, "clk"),
+ "DATAIN_0": (25, 1, "lutff_0/in_0"),
+ "DATAIN_10": (25, 2, "lutff_2/in_3"),
+ "DATAIN_11": (25, 2, "lutff_3/in_3"),
+ "DATAIN_12": (25, 2, "lutff_4/in_3"),
+ "DATAIN_13": (25, 2, "lutff_5/in_3"),
+ "DATAIN_14": (25, 2, "lutff_6/in_3"),
+ "DATAIN_15": (25, 2, "lutff_7/in_3"),
+ "DATAIN_1": (25, 1, "lutff_1/in_0"),
+ "DATAIN_2": (25, 1, "lutff_2/in_0"),
+ "DATAIN_3": (25, 1, "lutff_3/in_0"),
+ "DATAIN_4": (25, 1, "lutff_4/in_0"),
+ "DATAIN_5": (25, 1, "lutff_5/in_0"),
+ "DATAIN_6": (25, 1, "lutff_6/in_0"),
+ "DATAIN_7": (25, 1, "lutff_7/in_0"),
+ "DATAIN_8": (25, 2, "lutff_0/in_3"),
+ "DATAIN_9": (25, 2, "lutff_1/in_3"),
+ "DATAOUT_0": (25, 3, "slf_op_0"),
+ "DATAOUT_10": (25, 4, "slf_op_2"),
+ "DATAOUT_11": (25, 4, "slf_op_3"),
+ "DATAOUT_12": (25, 4, "slf_op_4"),
+ "DATAOUT_13": (25, 4, "slf_op_5"),
+ "DATAOUT_14": (25, 4, "slf_op_6"),
+ "DATAOUT_15": (25, 4, "slf_op_7"),
+ "DATAOUT_1": (25, 3, "slf_op_1"),
+ "DATAOUT_2": (25, 3, "slf_op_2"),
+ "DATAOUT_3": (25, 3, "slf_op_3"),
+ "DATAOUT_4": (25, 3, "slf_op_4"),
+ "DATAOUT_5": (25, 3, "slf_op_5"),
+ "DATAOUT_6": (25, 3, "slf_op_6"),
+ "DATAOUT_7": (25, 3, "slf_op_7"),
+ "DATAOUT_8": (25, 4, "slf_op_0"),
+ "DATAOUT_9": (25, 4, "slf_op_1"),
+ "MASKWREN_0": (25, 3, "lutff_4/in_0"),
+ "MASKWREN_1": (25, 3, "lutff_5/in_0"),
+ "MASKWREN_2": (25, 3, "lutff_6/in_0"),
+ "MASKWREN_3": (25, 3, "lutff_7/in_0"),
+ "POWEROFF": (25, 4, "lutff_5/in_3"),
+ "SLEEP": (25, 4, "lutff_3/in_3"),
+ "SPRAM_EN": (25, 1, "CBIT_1"),
+ "STANDBY": (25, 4, "lutff_1/in_3"),
+ "WREN": (25, 3, "lutff_5/in_1"),
+ }
+ }
+}
+
# This contains the data for extra cells not included
# in any previous databases