aboutsummaryrefslogtreecommitdiff
path: root/icebox
diff options
context:
space:
mode:
Diffstat (limited to 'icebox')
-rw-r--r--icebox/Makefile101
-rw-r--r--icebox/icebox.py195
-rwxr-xr-xicebox/icebox_asc2hlc.py8
-rwxr-xr-xicebox/icebox_chipdb.py6
-rwxr-xr-xicebox/icebox_colbuf.py6
-rwxr-xr-xicebox/icebox_diff.py6
-rwxr-xr-xicebox/icebox_explain.py6
-rwxr-xr-xicebox/icebox_hlc2asc.py8
-rwxr-xr-xicebox/icebox_html.py2
-rwxr-xr-xicebox/icebox_maps.py19
-rwxr-xr-xicebox/icebox_stat.py6
-rwxr-xr-xicebox/icebox_vlog.py11
12 files changed, 299 insertions, 75 deletions
diff --git a/icebox/Makefile b/icebox/Makefile
index 5088f46..38ec8a4 100644
--- a/icebox/Makefile
+++ b/icebox/Makefile
@@ -1,5 +1,11 @@
include ../config.mk
+ifneq ($(shell uname -s),Darwin)
+ SED_I = sed -i
+else
+ SED_I = sed -i ''
+endif
+
all: chipdb-384.txt chipdb-1k.txt chipdb-8k.txt chipdb-5k.txt chipdb-lm4k.txt chipdb-u4k.txt
chipdb-384.txt: icebox.py iceboxdb.py icebox_chipdb.py
@@ -36,45 +42,66 @@ clean:
rm -f icebox.pyc iceboxdb.pyc
install: all
- mkdir -p $(DESTDIR)$(PREFIX)/share/icebox
+ mkdir -p $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox
mkdir -p $(DESTDIR)$(PREFIX)/bin
- cp chipdb-384.txt $(DESTDIR)$(PREFIX)/share/icebox/
- cp chipdb-1k.txt $(DESTDIR)$(PREFIX)/share/icebox/
- cp chipdb-8k.txt $(DESTDIR)$(PREFIX)/share/icebox/
- cp chipdb-5k.txt $(DESTDIR)$(PREFIX)/share/icebox/
- cp chipdb-u4k.txt $(DESTDIR)$(PREFIX)/share/icebox/
- cp chipdb-lm4k.txt $(DESTDIR)$(PREFIX)/share/icebox/
- cp icebox.py $(DESTDIR)$(PREFIX)/bin/icebox.py
- cp iceboxdb.py $(DESTDIR)$(PREFIX)/bin/iceboxdb.py
- cp icebox_chipdb.py $(DESTDIR)$(PREFIX)/bin/icebox_chipdb$(PY_EXE)
- cp icebox_diff.py $(DESTDIR)$(PREFIX)/bin/icebox_diff$(PY_EXE)
- cp icebox_explain.py $(DESTDIR)$(PREFIX)/bin/icebox_explain$(PY_EXE)
- cp icebox_asc2hlc.py $(DESTDIR)$(PREFIX)/bin/icebox_asc2hlc$(PY_EXE)
- cp icebox_hlc2asc.py $(DESTDIR)$(PREFIX)/bin/icebox_hlc2asc$(PY_EXE)
- cp icebox_colbuf.py $(DESTDIR)$(PREFIX)/bin/icebox_colbuf$(PY_EXE)
- cp icebox_html.py $(DESTDIR)$(PREFIX)/bin/icebox_html$(PY_EXE)
- cp icebox_maps.py $(DESTDIR)$(PREFIX)/bin/icebox_maps$(PY_EXE)
- cp icebox_vlog.py $(DESTDIR)$(PREFIX)/bin/icebox_vlog$(PY_EXE)
- cp icebox_stat.py $(DESTDIR)$(PREFIX)/bin/icebox_stat$(PY_EXE)
+ cp chipdb-384.txt $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox/
+ cp chipdb-1k.txt $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox/
+ cp chipdb-8k.txt $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox/
+ cp chipdb-5k.txt $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox/
+ cp chipdb-u4k.txt $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox/
+ cp chipdb-lm4k.txt $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox/
+ cp icebox.py $(DESTDIR)$(PREFIX)/bin/$(subst -,_,$(PROGRAM_PREFIX))icebox.py
+ cp iceboxdb.py $(DESTDIR)$(PREFIX)/bin/$(subst -,_,$(PROGRAM_PREFIX))iceboxdb.py
+ cp icebox_chipdb.py $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_chipdb$(PY_EXE)
+ cp icebox_diff.py $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_diff$(PY_EXE)
+ cp icebox_explain.py $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_explain$(PY_EXE)
+ cp icebox_asc2hlc.py $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_asc2hlc$(PY_EXE)
+ cp icebox_hlc2asc.py $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_hlc2asc$(PY_EXE)
+ cp icebox_colbuf.py $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_colbuf$(PY_EXE)
+ cp icebox_html.py $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_html$(PY_EXE)
+ cp icebox_maps.py $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_maps$(PY_EXE)
+ cp icebox_vlog.py $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_vlog$(PY_EXE)
+ cp icebox_stat.py $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_stat$(PY_EXE)
+ $(SED_I) 's+import iceboxdb+import $(subst -,_,$(PROGRAM_PREFIX))iceboxdb as iceboxdb+g' $(DESTDIR)$(PREFIX)/bin/$(subst -,_,$(PROGRAM_PREFIX))icebox.py
+ $(SED_I) 's+import icebox+import $(subst -,_,$(PROGRAM_PREFIX))icebox as icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_chipdb$(PY_EXE)
+ $(SED_I) 's+import icebox+import $(subst -,_,$(PROGRAM_PREFIX))icebox as icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_diff$(PY_EXE)
+ $(SED_I) 's+from icebox+from $(subst -,_,$(PROGRAM_PREFIX))icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_diff$(PY_EXE)
+ $(SED_I) 's+import icebox+import $(subst -,_,$(PROGRAM_PREFIX))icebox as icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_explain$(PY_EXE)
+ $(SED_I) 's+from icebox+from $(subst -,_,$(PROGRAM_PREFIX))icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_explain$(PY_EXE)
+ $(SED_I) 's+import icebox+import $(subst -,_,$(PROGRAM_PREFIX))icebox as icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_asc2hlc$(PY_EXE)
+ $(SED_I) 's+from icebox+from $(subst -,_,$(PROGRAM_PREFIX))icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_asc2hlc$(PY_EXE)
+ $(SED_I) 's+import icebox+import $(subst -,_,$(PROGRAM_PREFIX))icebox as icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_hlc2asc$(PY_EXE)
+ $(SED_I) 's+from icebox+from $(subst -,_,$(PROGRAM_PREFIX))icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_hlc2asc$(PY_EXE)
+ $(SED_I) 's+import icebox+import $(subst -,_,$(PROGRAM_PREFIX))icebox as icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_colbuf$(PY_EXE)
+ $(SED_I) 's+from icebox+from $(subst -,_,$(PROGRAM_PREFIX))icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_colbuf$(PY_EXE)
+ $(SED_I) 's+import icebox+import $(subst -,_,$(PROGRAM_PREFIX))icebox as icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_html$(PY_EXE)
+ $(SED_I) 's+from icebox+from $(subst -,_,$(PROGRAM_PREFIX))icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_html$(PY_EXE)
+ $(SED_I) 's+import icebox+import $(subst -,_,$(PROGRAM_PREFIX))icebox as icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_maps$(PY_EXE)
+ $(SED_I) 's+from icebox+from $(subst -,_,$(PROGRAM_PREFIX))icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_maps$(PY_EXE)
+ $(SED_I) 's+import icebox+import $(subst -,_,$(PROGRAM_PREFIX))icebox as icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_vlog$(PY_EXE)
+ $(SED_I) 's+from icebox+from $(subst -,_,$(PROGRAM_PREFIX))icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_vlog$(PY_EXE)
+ $(SED_I) 's+/usr/local/share/icebox+$(PREFIX)/share/$(PROGRAM_PREFIX)icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_vlog$(PY_EXE)
+ $(SED_I) 's+import icebox+import $(subst -,_,$(PROGRAM_PREFIX))icebox as icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_stat$(PY_EXE)
+ $(SED_I) 's+from icebox+from $(subst -,_,$(PROGRAM_PREFIX))icebox+g' $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_stat$(PY_EXE)
uninstall:
- rm -f $(DESTDIR)$(PREFIX)/bin/icebox.py
- rm -f $(DESTDIR)$(PREFIX)/bin/iceboxdb.py
- rm -f $(DESTDIR)$(PREFIX)/bin/icebox_chipdb$(PY_EXE)
- rm -f $(DESTDIR)$(PREFIX)/bin/icebox_diff$(PY_EXE)
- rm -f $(DESTDIR)$(PREFIX)/bin/icebox_explain$(PY_EXE)
- rm -f $(DESTDIR)$(PREFIX)/bin/icebox_asc2hlc$(PY_EXE)
- rm -f $(DESTDIR)$(PREFIX)/bin/icebox_hlc2asc$(PY_EXE)
- rm -f $(DESTDIR)$(PREFIX)/bin/icebox_colbuf$(PY_EXE)
- rm -f $(DESTDIR)$(PREFIX)/bin/icebox_html$(PY_EXE)
- rm -f $(DESTDIR)$(PREFIX)/bin/icebox_maps$(PY_EXE)
- rm -f $(DESTDIR)$(PREFIX)/bin/icebox_vlog$(PY_EXE)
- rm -f $(DESTDIR)$(PREFIX)/bin/icebox_stat$(PY_EXE)
- rm -f $(DESTDIR)$(PREFIX)/share/icebox/chipdb-384.txt
- rm -f $(DESTDIR)$(PREFIX)/share/icebox/chipdb-1k.txt
- rm -f $(DESTDIR)$(PREFIX)/share/icebox/chipdb-8k.txt
- rm -f $(DESTDIR)$(PREFIX)/share/icebox/chipdb-lm4k.txt
- rm -f $(DESTDIR)$(PREFIX)/share/icebox/chipdb-u4k.txt
- -rmdir $(DESTDIR)$(PREFIX)/share/icebox
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(subst -,_,$(PROGRAM_PREFIX))cebox.py
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(subst -,_,$(PROGRAM_PREFIX))iceboxdb.py
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_chipdb$(PY_EXE)
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_diff$(PY_EXE)
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_explain$(PY_EXE)
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_asc2hlc$(PY_EXE)
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_hlc2asc$(PY_EXE)
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_colbuf$(PY_EXE)
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_html$(PY_EXE)
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_maps$(PY_EXE)
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_vlog$(PY_EXE)
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)icebox_stat$(PY_EXE)
+ rm -f $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox/chipdb-384.txt
+ rm -f $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox/chipdb-1k.txt
+ rm -f $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox/chipdb-8k.txt
+ rm -f $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox/chipdb-lm4k.txt
+ rm -f $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox/chipdb-u4k.txt
+ -rmdir $(DESTDIR)$(PREFIX)/share/$(PROGRAM_PREFIX)icebox
.PHONY: all check clean install uninstall
diff --git a/icebox/icebox.py b/icebox/icebox.py
index 0422f13..a7631a2 100644
--- a/icebox/icebox.py
+++ b/icebox/icebox.py
@@ -1954,7 +1954,8 @@ pllinfo_db = {
"PLLOUT_SELECT_B_1": (12, 31, "PLLCONFIG_3"),
# Numeric Parameters
- "SHIFTREG_DIV_MODE": (12, 31, "PLLCONFIG_4"),
+ "SHIFTREG_DIV_MODE_0": (12, 31, "PLLCONFIG_4"),
+ "SHIFTREG_DIV_MODE_1": (14, 31, "PLLCONFIG_6"),
"FDA_FEEDBACK_0": (12, 31, "PLLCONFIG_9"),
"FDA_FEEDBACK_1": (13, 31, "PLLCONFIG_1"),
"FDA_FEEDBACK_2": (13, 31, "PLLCONFIG_2"),
@@ -5785,6 +5786,198 @@ extra_cells_db = {
},
"u4k" : {
+ ("SPI", (0, 0, 0)): {
+ "MCSNO0": (0, 3, "slf_op_1"),
+ "MCSNO1": (0, 3, "slf_op_3"),
+ "MCSNO2": (0, 3, "slf_op_6"),
+ "MCSNO3": (0, 4, "slf_op_0"),
+ "MCSNOE0": (0, 3, "slf_op_2"),
+ "MCSNOE1": (0, 3, "slf_op_4"),
+ "MCSNOE2": (0, 3, "slf_op_7"),
+ "MCSNOE3": (0, 4, "slf_op_1"),
+ "MI": (0, 2, "lutff_0/in_1"),
+ "MO": (0, 2, "slf_op_5"),
+ "MOE": (0, 2, "slf_op_6"),
+ "SBACKO": (0, 2, "slf_op_0"),
+ "SBADRI0": (0, 1, "lutff_1/in_1"),
+ "SBADRI1": (0, 1, "lutff_2/in_1"),
+ "SBADRI2": (0, 2, "lutff_0/in_3"),
+ "SBADRI3": (0, 2, "lutff_1/in_3"),
+ "SBADRI4": (0, 2, "lutff_2/in_3"),
+ "SBADRI5": (0, 2, "lutff_3/in_3"),
+ "SBADRI6": (0, 2, "lutff_4/in_3"),
+ "SBADRI7": (0, 2, "lutff_5/in_3"),
+ "SBCLKI": (0, 1, "clk"),
+ "SBDATI0": (0, 1, "lutff_1/in_3"),
+ "SBDATI1": (0, 1, "lutff_2/in_3"),
+ "SBDATI2": (0, 1, "lutff_3/in_3"),
+ "SBDATI3": (0, 1, "lutff_4/in_3"),
+ "SBDATI4": (0, 1, "lutff_5/in_3"),
+ "SBDATI5": (0, 1, "lutff_6/in_3"),
+ "SBDATI6": (0, 1, "lutff_7/in_3"),
+ "SBDATI7": (0, 1, "lutff_0/in_1"),
+ "SBDATO0": (0, 1, "slf_op_0"),
+ "SBDATO1": (0, 1, "slf_op_1"),
+ "SBDATO2": (0, 1, "slf_op_2"),
+ "SBDATO3": (0, 1, "slf_op_3"),
+ "SBDATO4": (0, 1, "slf_op_4"),
+ "SBDATO5": (0, 1, "slf_op_5"),
+ "SBDATO6": (0, 1, "slf_op_6"),
+ "SBDATO7": (0, 1, "slf_op_7"),
+ "SBRWI": (0, 1, "lutff_0/in_3"),
+ "SBSTBI": (0, 2, "lutff_6/in_3"),
+ "SCKI": (0, 2, "lutff_1/in_1"),
+ "SCKO": (0, 2, "slf_op_7"),
+ "SCKOE": (0, 3, "slf_op_0"),
+ "SCSNI": (0, 2, "lutff_2/in_1"),
+ "SI": (0, 2, "lutff_7/in_3"),
+ "SO": (0, 2, "slf_op_3"),
+ "SOE": (0, 2, "slf_op_4"),
+ "SPIIRQ": (0, 2, "slf_op_1"),
+ "SPIWKUP": (0, 2, "slf_op_2"),
+ "SPI_ENABLE_0": (7, 0, "cbit2usealt_in_0"),
+ "SPI_ENABLE_1": (6, 0, "cbit2usealt_in_0"),
+ "SPI_ENABLE_2": (7, 0, "cbit2usealt_in_1"),
+ "SPI_ENABLE_3": (6, 0, "cbit2usealt_in_1"),
+ },
+ ("SPI", (25, 0, 1)): {
+ "MCSNO0": (25, 3, "slf_op_1"),
+ "MCSNO1": (25, 3, "slf_op_3"),
+ "MCSNO2": (25, 3, "slf_op_6"),
+ "MCSNO3": (25, 4, "slf_op_0"),
+ "MCSNOE0": (25, 3, "slf_op_2"),
+ "MCSNOE1": (25, 3, "slf_op_4"),
+ "MCSNOE2": (25, 3, "slf_op_7"),
+ "MCSNOE3": (25, 4, "slf_op_1"),
+ "MI": (25, 2, "lutff_0/in_1"),
+ "MO": (25, 2, "slf_op_5"),
+ "MOE": (25, 2, "slf_op_6"),
+ "SBACKO": (25, 2, "slf_op_0"),
+ "SBADRI0": (25, 1, "lutff_1/in_1"),
+ "SBADRI1": (25, 1, "lutff_2/in_1"),
+ "SBADRI2": (25, 2, "lutff_0/in_3"),
+ "SBADRI3": (25, 2, "lutff_1/in_3"),
+ "SBADRI4": (25, 2, "lutff_2/in_3"),
+ "SBADRI5": (25, 2, "lutff_3/in_3"),
+ "SBADRI6": (25, 2, "lutff_4/in_3"),
+ "SBADRI7": (25, 2, "lutff_5/in_3"),
+ "SBCLKI": (25, 1, "clk"),
+ "SBDATI0": (25, 1, "lutff_1/in_3"),
+ "SBDATI1": (25, 1, "lutff_2/in_3"),
+ "SBDATI2": (25, 1, "lutff_3/in_3"),
+ "SBDATI3": (25, 1, "lutff_4/in_3"),
+ "SBDATI4": (25, 1, "lutff_5/in_3"),
+ "SBDATI5": (25, 1, "lutff_6/in_3"),
+ "SBDATI6": (25, 1, "lutff_7/in_3"),
+ "SBDATI7": (25, 1, "lutff_0/in_1"),
+ "SBDATO0": (25, 1, "slf_op_0"),
+ "SBDATO1": (25, 1, "slf_op_1"),
+ "SBDATO2": (25, 1, "slf_op_2"),
+ "SBDATO3": (25, 1, "slf_op_3"),
+ "SBDATO4": (25, 1, "slf_op_4"),
+ "SBDATO5": (25, 1, "slf_op_5"),
+ "SBDATO6": (25, 1, "slf_op_6"),
+ "SBDATO7": (25, 1, "slf_op_7"),
+ "SBRWI": (25, 1, "lutff_0/in_3"),
+ "SBSTBI": (25, 2, "lutff_6/in_3"),
+ "SCKI": (25, 2, "lutff_1/in_1"),
+ "SCKO": (25, 2, "slf_op_7"),
+ "SCKOE": (25, 3, "slf_op_0"),
+ "SCSNI": (25, 2, "lutff_2/in_1"),
+ "SI": (25, 2, "lutff_7/in_3"),
+ "SO": (25, 2, "slf_op_3"),
+ "SOE": (25, 2, "slf_op_4"),
+ "SPIIRQ": (25, 2, "slf_op_1"),
+ "SPIWKUP": (25, 2, "slf_op_2"),
+ "SPI_ENABLE_0": (24, 0, "cbit2usealt_in_0"),
+ "SPI_ENABLE_1": (24, 0, "cbit2usealt_in_1"),
+ "SPI_ENABLE_2": (23, 0, "cbit2usealt_in_0"),
+ "SPI_ENABLE_3": (23, 0, "cbit2usealt_in_1"),
+ },
+ ("I2C", (0, 21, 0)): {
+ "I2CIRQ": (0, 20, "slf_op_7"),
+ "I2CWKUP": (0, 19, "slf_op_5"),
+ "I2C_ENABLE_0": (13, 21, "cbit2usealt_in_0"),
+ "I2C_ENABLE_1": (12, 21, "cbit2usealt_in_1"),
+ "SBACKO": (0, 20, "slf_op_6"),
+ "SBADRI0": (0, 20, "lutff_1/in_0"),
+ "SBADRI1": (0, 20, "lutff_2/in_0"),
+ "SBADRI2": (0, 20, "lutff_3/in_0"),
+ "SBADRI3": (0, 20, "lutff_4/in_0"),
+ "SBADRI4": (0, 20, "lutff_5/in_0"),
+ "SBADRI5": (0, 20, "lutff_6/in_0"),
+ "SBADRI6": (0, 20, "lutff_7/in_0"),
+ "SBADRI7": (0, 19, "lutff_2/in_0"),
+ "SBCLKI": (0, 20, "clk"),
+ "SBDATI0": (0, 19, "lutff_5/in_0"),
+ "SBDATI1": (0, 19, "lutff_6/in_0"),
+ "SBDATI2": (0, 19, "lutff_7/in_0"),
+ "SBDATI3": (0, 20, "lutff_0/in_3"),
+ "SBDATI4": (0, 20, "lutff_5/in_1"),
+ "SBDATI5": (0, 20, "lutff_6/in_1"),
+ "SBDATI6": (0, 20, "lutff_7/in_1"),
+ "SBDATI7": (0, 20, "lutff_0/in_0"),
+ "SBDATO0": (0, 19, "slf_op_6"),
+ "SBDATO1": (0, 19, "slf_op_7"),
+ "SBDATO2": (0, 20, "slf_op_0"),
+ "SBDATO3": (0, 20, "slf_op_1"),
+ "SBDATO4": (0, 20, "slf_op_2"),
+ "SBDATO5": (0, 20, "slf_op_3"),
+ "SBDATO6": (0, 20, "slf_op_4"),
+ "SBDATO7": (0, 20, "slf_op_5"),
+ "SBRWI": (0, 19, "lutff_4/in_0"),
+ "SBSTBI": (0, 19, "lutff_3/in_0"),
+ "SCLI": (0, 19, "lutff_2/in_1"),
+ "SCLO": (0, 19, "slf_op_3"),
+ "SCLOE": (0, 19, "slf_op_4"),
+ "SDAI": (0, 19, "lutff_1/in_1"),
+ "SDAO": (0, 19, "slf_op_1"),
+ "SDAOE": (0, 19, "slf_op_2"),
+ "SDA_INPUT_DELAYED": (12, 21, "SDA_input_delay"),
+ "SDA_OUTPUT_DELAYED": (12, 21, "SDA_output_delay"),
+ },
+ ("I2C", (25, 21, 0)): {
+ "I2CIRQ": (25, 20, "slf_op_7"),
+ "I2CWKUP": (25, 19, "slf_op_5"),
+ "I2C_ENABLE_0": (19, 21, "cbit2usealt_in_1"),
+ "I2C_ENABLE_1": (19, 21, "cbit2usealt_in_0"),
+ "SBACKO": (25, 20, "slf_op_6"),
+ "SBADRI0": (25, 20, "lutff_1/in_0"),
+ "SBADRI1": (25, 20, "lutff_2/in_0"),
+ "SBADRI2": (25, 20, "lutff_3/in_0"),
+ "SBADRI3": (25, 20, "lutff_4/in_0"),
+ "SBADRI4": (25, 20, "lutff_5/in_0"),
+ "SBADRI5": (25, 20, "lutff_6/in_0"),
+ "SBADRI6": (25, 20, "lutff_7/in_0"),
+ "SBADRI7": (25, 19, "lutff_2/in_0"),
+ "SBCLKI": (25, 20, "clk"),
+ "SBDATI0": (25, 19, "lutff_5/in_0"),
+ "SBDATI1": (25, 19, "lutff_6/in_0"),
+ "SBDATI2": (25, 19, "lutff_7/in_0"),
+ "SBDATI3": (25, 20, "lutff_0/in_3"),
+ "SBDATI4": (25, 20, "lutff_5/in_1"),
+ "SBDATI5": (25, 20, "lutff_6/in_1"),
+ "SBDATI6": (25, 20, "lutff_7/in_1"),
+ "SBDATI7": (25, 20, "lutff_0/in_0"),
+ "SBDATO0": (25, 19, "slf_op_6"),
+ "SBDATO1": (25, 19, "slf_op_7"),
+ "SBDATO2": (25, 20, "slf_op_0"),
+ "SBDATO3": (25, 20, "slf_op_1"),
+ "SBDATO4": (25, 20, "slf_op_2"),
+ "SBDATO5": (25, 20, "slf_op_3"),
+ "SBDATO6": (25, 20, "slf_op_4"),
+ "SBDATO7": (25, 20, "slf_op_5"),
+ "SBRWI": (25, 19, "lutff_4/in_0"),
+ "SBSTBI": (25, 19, "lutff_3/in_0"),
+ "SCLI": (25, 19, "lutff_2/in_1"),
+ "SCLO": (25, 19, "slf_op_3"),
+ "SCLOE": (25, 19, "slf_op_4"),
+ "SDAI": (25, 19, "lutff_1/in_1"),
+ "SDAO": (25, 19, "slf_op_1"),
+ "SDAOE": (25, 19, "slf_op_2"),
+ "SDA_INPUT_DELAYED": (19, 21, "SDA_input_delay"),
+ "SDA_OUTPUT_DELAYED": (19, 21, "SDA_output_delay"),
+ },
("HFOSC", (0, 21, 1)) : {
"CLKHFPU": (0, 19, "lutff_0/in_1"),
"CLKHFEN": (0, 19, "lutff_7/in_3"),
diff --git a/icebox/icebox_asc2hlc.py b/icebox/icebox_asc2hlc.py
index 003106f..8e64997 100755
--- a/icebox/icebox_asc2hlc.py
+++ b/icebox/icebox_asc2hlc.py
@@ -1068,7 +1068,7 @@ def main():
except getopt.GetoptError as e:
sys.stderr.write("%s: %s\n" % (program_short_name, e.msg))
sys.stderr.write("Try `%s --help' for more information.\n"
- % sys.argv[0])
+ % program_short_name)
sys.exit(1)
for opt, arg in opts:
@@ -1085,7 +1085,7 @@ Usage: %s [OPTION]... FILE
If you have a bug report, please file an issue on github:
https://github.com/rlutz/icestorm/issues
-""" % sys.argv[0])
+""" % program_short_name)
sys.exit(0)
if opt == '--version':
@@ -1113,13 +1113,13 @@ GNU General Public License for more details.
if not args:
sys.stderr.write("%s: missing argument\n" % (program_short_name))
sys.stderr.write("Try `%s --help' for more information.\n"
- % sys.argv[0])
+ % program_short_name)
sys.exit(1)
if len(args) != 1:
sys.stderr.write("%s: too many arguments\n" % (program_short_name))
sys.stderr.write("Try `%s --help' for more information.\n"
- % sys.argv[0])
+ % program_short_name)
sys.exit(1)
ic = icebox.iceconfig()
diff --git a/icebox/icebox_chipdb.py b/icebox/icebox_chipdb.py
index 9c8d6df..722ec37 100755
--- a/icebox/icebox_chipdb.py
+++ b/icebox/icebox_chipdb.py
@@ -16,7 +16,7 @@
#
import icebox
-import getopt, sys, re
+import getopt, sys, re, os
mode_384 = False
mode_lm4k = False
@@ -26,7 +26,7 @@ mode_8k = False
def usage():
print("""
-Usage: icebox_chipdb [options] [bitmap.asc]
+Usage: %s [options] [bitmap.asc]
-3
create chipdb for 384 device
@@ -42,7 +42,7 @@ Usage: icebox_chipdb [options] [bitmap.asc]
-u
create chipdb for u4k device
-""")
+""" % os.path.basename(sys.argv[0]))
sys.exit(0)
try:
diff --git a/icebox/icebox_colbuf.py b/icebox/icebox_colbuf.py
index ec6843e..3003a90 100755
--- a/icebox/icebox_colbuf.py
+++ b/icebox/icebox_colbuf.py
@@ -17,21 +17,21 @@
import icebox
from icebox import re_match_cached
-import getopt, sys, re
+import getopt, sys, re, os
check_mode = False
fixup_mode = False
def usage():
print("""
-Usage: icebox_colbuf [options] [input.asc [output.asc]]
+Usage: %s [options] [input.asc [output.asc]]
-c
check colbuf bits
-f
fix colbuf bits
-""")
+""" % os.path.basename(sys.argv[0]))
sys.exit(1)
try:
diff --git a/icebox/icebox_diff.py b/icebox/icebox_diff.py
index 5252fc4..f433bcf 100755
--- a/icebox/icebox_diff.py
+++ b/icebox/icebox_diff.py
@@ -17,13 +17,13 @@
import icebox
from icebox import re_match_cached
-import sys
+import sys, os
import re
if len(sys.argv) != 3:
print("""
-Usage: icebox_diff bitmap1.asc bitmap2.asc
-""")
+Usage: %s bitmap1.asc bitmap2.asc
+""" % os.path.basename(sys.argv[0]))
sys.exit(0)
print("Reading file '%s'.." % sys.argv[1])
diff --git a/icebox/icebox_explain.py b/icebox/icebox_explain.py
index f843c09..25061ab 100755
--- a/icebox/icebox_explain.py
+++ b/icebox/icebox_explain.py
@@ -17,7 +17,7 @@
import icebox
from icebox import re_match_cached, re_search_cached
-import getopt, sys, re
+import getopt, sys, re, os
print_bits = False
print_map = False
@@ -26,7 +26,7 @@ print_all = False
def usage():
print("""
-Usage: icebox_explain [options] [bitmap.asc]
+Usage: %s [options] [bitmap.asc]
-b
print config bit names for each config statement
@@ -39,7 +39,7 @@ Usage: icebox_explain [options] [bitmap.asc]
-t '<x-coordinate> <y-coordinate>'
print only the specified tile
-""")
+""" % os.path.basename(sys.argv[0]))
sys.exit(0)
try:
diff --git a/icebox/icebox_hlc2asc.py b/icebox/icebox_hlc2asc.py
index a95f610..59d2f69 100755
--- a/icebox/icebox_hlc2asc.py
+++ b/icebox/icebox_hlc2asc.py
@@ -1147,7 +1147,7 @@ def main():
except getopt.GetoptError as e:
sys.stderr.write("%s: %s\n" % (program_short_name, e.msg))
sys.stderr.write("Try `%s --help' for more information.\n"
- % sys.argv[0])
+ % program_short_name)
sys.exit(1)
for opt, arg in opts:
@@ -1161,7 +1161,7 @@ Usage: %s [OPTION]... FILE
If you have a bug report, please file an issue on github:
https://github.com/rlutz/icestorm/issues
-""" % sys.argv[0])
+""" % program_short_name)
sys.exit(0)
if opt == '--version':
@@ -1184,13 +1184,13 @@ GNU General Public License for more details.
if not args:
sys.stderr.write("%s: missing argument\n" % (program_short_name))
sys.stderr.write("Try `%s --help' for more information.\n"
- % sys.argv[0])
+ % program_short_name)
sys.exit(1)
if len(args) != 1:
sys.stderr.write("%s: too many arguments\n" % (program_short_name))
sys.stderr.write("Try `%s --help' for more information.\n"
- % sys.argv[0])
+ % program_short_name)
sys.exit(1)
if args[0] == '-':
diff --git a/icebox/icebox_html.py b/icebox/icebox_html.py
index b710f61..3785a45 100755
--- a/icebox/icebox_html.py
+++ b/icebox/icebox_html.py
@@ -27,7 +27,7 @@ mode384 = False
tx, ty = 0, 0
def usage():
- print("Usage: %s [options]" % sys.argv[0])
+ print("Usage: %s [options]" % os.path.basename(sys.argv[0]))
print(" -x tile_x_coordinate")
print(" -y tile_y_coordinate")
print(" -d outdir")
diff --git a/icebox/icebox_maps.py b/icebox/icebox_maps.py
index 35ff316..062335d 100755
--- a/icebox/icebox_maps.py
+++ b/icebox/icebox_maps.py
@@ -17,20 +17,21 @@
import icebox
from icebox import re_match_cached
-import getopt, sys, re
+import getopt, sys, re, os
mode = None
def usage():
+ program_short_name = os.path.basename(sys.argv[0])
print("Usage:")
- print(" icebox_maps -m bitmaps")
- print(" icebox_maps -m io_tile_nets_l")
- print(" icebox_maps -m io_tile_nets_r")
- print(" icebox_maps -m io_tile_nets_t")
- print(" icebox_maps -m io_tile_nets_b")
- print(" icebox_maps -m logic_tile_nets")
- print(" icebox_maps -m ramb_tile_nets")
- print(" icebox_maps -m ramt_tile_nets")
+ print(" %s -m bitmaps" % program_short_name)
+ print(" %s -m io_tile_nets_l" % program_short_name)
+ print(" %s -m io_tile_nets_r" % program_short_name)
+ print(" %s -m io_tile_nets_t" % program_short_name)
+ print(" %s -m io_tile_nets_b" % program_short_name)
+ print(" %s -m logic_tile_nets" % program_short_name)
+ print(" %s -m ramb_tile_nets" % program_short_name)
+ print(" %s -m ramt_tile_nets" % program_short_name)
sys.exit(0)
try:
diff --git a/icebox/icebox_stat.py b/icebox/icebox_stat.py
index ec404fb..5752267 100755
--- a/icebox/icebox_stat.py
+++ b/icebox/icebox_stat.py
@@ -17,18 +17,18 @@
import icebox
from icebox import re_match_cached
-import getopt, sys, re
+import getopt, sys, re, os
verbose = False
def usage():
print("""
-Usage: icebox_stat [options] [bitmap.asc]
+Usage: %s [options] [bitmap.asc]
-v
verbose output
-""")
+""" % os.path.basename(sys.argv[0]))
sys.exit(0)
try:
diff --git a/icebox/icebox_vlog.py b/icebox/icebox_vlog.py
index a2c7950..74ac3d3 100755
--- a/icebox/icebox_vlog.py
+++ b/icebox/icebox_vlog.py
@@ -17,7 +17,7 @@
import icebox
from icebox import re_match_cached, re_sub_cached, re_search_cached
-import getopt, sys, re
+import getopt, sys, re, os
strip_comments = False
strip_interconn = False
@@ -34,7 +34,7 @@ modname = "chip"
def usage():
print("""
-Usage: icebox_vlog [options] [bitmap.asc]
+Usage: %s [options] [bitmap.asc]
-s
strip comments from output
@@ -70,7 +70,7 @@ Usage: icebox_vlog [options] [bitmap.asc]
-D
enable exactly-one-driver checks
-""")
+""" % os.path.basename(sys.argv[0]))
sys.exit(0)
try:
@@ -477,7 +477,10 @@ for pllid in ic.pll_list():
if plltype != "100":
text_func.append(" .PLLOUT_SELECT_PORTA(\"%s\")," % get_pll_outsel(pllinfo, "PLLOUT_SELECT_A"))
text_func.append(" .PLLOUT_SELECT_PORTB(\"%s\")," % get_pll_outsel(pllinfo, "PLLOUT_SELECT_B"))
- text_func.append(" .SHIFTREG_DIV_MODE(1'b%s)," % get_pll_bit(pllinfo, "SHIFTREG_DIV_MODE"))
+ if ic.device == "5k":
+ text_func.append(" .SHIFTREG_DIV_MODE(2'b%s)," % get_pll_bits(pllinfo, "SHIFTREG_DIV_MODE", 2))
+ else:
+ text_func.append(" .SHIFTREG_DIV_MODE(1'b%s)," % get_pll_bit(pllinfo, "SHIFTREG_DIV_MODE"))
text_func.append(" .FDA_FEEDBACK(4'b%s)," % get_pll_bits(pllinfo, "FDA_FEEDBACK", 4))
text_func.append(" .FDA_RELATIVE(4'b%s)," % get_pll_bits(pllinfo, "FDA_RELATIVE", 4))
text_func.append(" .DIVR(4'b%s)," % get_pll_bits(pllinfo, "DIVR", 4))