diff options
-rw-r--r-- | icebox/icebox.py | 145 | ||||
-rw-r--r-- | icefuzz/pinloc/pinloc-384-cm36.sh | 44 | ||||
-rw-r--r-- | icefuzz/pinloc/pinloc-384-cm49.sh | 46 | ||||
-rw-r--r-- | icefuzz/pinloc/pinloc-384-qn32.sh | 2 |
4 files changed, 196 insertions, 41 deletions
diff --git a/icebox/icebox.py b/icebox/icebox.py index a39fa53..791a5a7 100644 --- a/icebox/icebox.py +++ b/icebox/icebox.py @@ -250,7 +250,7 @@ class iceconfig: if x == 0: return True return False - + if not 0 <= x <= self.max_x: return False if not 0 <= y <= self.max_y: return False return pos_has_net(self.tile_pos(x, y), netname) @@ -1807,44 +1807,43 @@ ieren_db = { (33, 31, 0, 33, 31, 0), ], "384": [ - # IO-block (X, Y, Z) <-> IeRen-block (X, Y, Z) - ( 0, 1, 0, 0, 0, 0), #384? - ( 0, 1, 1, 0, 1, 0), #384? - ( 0, 2, 0, 0, 2, 0), #384? - ( 0, 2, 1, 0, 2, 0), #384? - ( 0, 4, 0, 0, 4, 0), #384? - ( 0, 4, 1, 0, 4, 0), #384? - ( 0, 5, 0, 0, 5, 0), #384? - ( 0, 5, 1, 0, 5, 0), #384? - ( 0, 6, 0, 0, 6, 0), #384? - ( 0, 6, 1, 0, 6, 0), #384? - ( 0, 7, 0, 0, 7, 0), #384? - ( 0, 7, 1, 0, 7, 0), #384? - ( 2, 9, 0, 2, 9, 0), #384? - ( 2, 9, 1, 2, 9, 0), #384? - ( 3, 0, 0, 3, 0, 0), #384? - ( 3, 0, 1, 3, 0, 0), #384? - ( 3, 9, 0, 3, 9, 0), #384? - ( 3, 9, 1, 3, 9, 0), #384? - ( 4, 0, 0, 4, 0, 0), #384? - ( 4, 0, 1, 4, 0, 0), #384? - ( 4, 9, 0, 4, 9, 0), #384? - ( 4, 9, 1, 4, 9, 0), #384? - ( 5, 0, 0, 5, 0, 0), #384? - ( 5, 0, 1, 5, 0, 0), #384? - ( 5, 9, 0, 5, 9, 0), #384? - ( 5, 9, 1, 5, 9, 0), #384? - ( 6, 0, 0, 6, 0, 0), #384? - ( 6, 0, 1, 6, 0, 0), #384? - ( 6, 9, 0, 6, 9, 0), #384? - ( 6, 9, 1, 6, 9, 0), #384? - ( 7, 3, 1, 7, 3, 0), #384? - ( 7, 4, 0, 7, 4, 0), #384? - ( 7, 4, 1, 7, 4, 0), #384? - ( 7, 5, 0, 7, 5, 0), #384? - ( 7, 5, 1, 7, 5, 0), #384? - ( 7, 6, 0, 7, 6, 0), #384? - ( 7, 6, 1, 7, 6, 0), #384? + ( 0, 1, 0, 0, 1, 1), + ( 0, 1, 1, 0, 1, 0), + ( 0, 2, 0, 0, 2, 1), + ( 0, 2, 1, 0, 2, 0), + ( 0, 4, 0, 0, 4, 1), + ( 0, 4, 1, 0, 4, 0), + ( 0, 5, 0, 0, 5, 1), + ( 0, 5, 1, 0, 5, 0), + ( 0, 6, 0, 0, 6, 1), + ( 0, 6, 1, 0, 6, 0), + ( 0, 7, 0, 0, 7, 1), + ( 0, 7, 1, 0, 7, 0), + ( 2, 9, 0, 2, 9, 1), + ( 2, 9, 1, 2, 9, 0), + ( 3, 0, 0, 3, 0, 1), + ( 3, 0, 1, 3, 0, 0), + ( 3, 9, 0, 3, 9, 1), + ( 3, 9, 1, 3, 9, 0), + ( 4, 0, 0, 4, 0, 1), + ( 4, 0, 1, 4, 0, 0), + ( 4, 9, 0, 4, 9, 1), + ( 4, 9, 1, 4, 9, 0), + ( 5, 0, 0, 5, 0, 1), + ( 5, 0, 1, 5, 0, 0), + ( 5, 9, 0, 5, 9, 1), + ( 5, 9, 1, 5, 9, 0), + ( 6, 0, 0, 6, 0, 1), + ( 6, 0, 1, 6, 0, 0), + ( 6, 9, 0, 6, 9, 1), + ( 6, 9, 1, 6, 9, 0), + ( 7, 3, 1, 7, 3, 0), + ( 7, 4, 0, 7, 4, 1), + ( 7, 4, 1, 7, 4, 0), + ( 7, 5, 0, 7, 5, 1), + ( 7, 5, 1, 7, 5, 0), + ( 7, 6, 0, 7, 6, 1), + ( 7, 6, 1, 7, 6, 0), ], } @@ -3785,6 +3784,72 @@ pinloc_db = { ( "30", 3, 9, 1), ( "31", 2, 9, 0), ( "32", 2, 9, 1), + ], + "384-cm36": [ + ( "A1", 0, 7, 0), + ( "A2", 2, 9, 1), + ( "A3", 3, 9, 1), + ( "B1", 0, 7, 1), + ( "B3", 4, 9, 0), + ( "B4", 7, 5, 0), + ( "B5", 7, 5, 1), + ( "B6", 7, 6, 0), + ( "C1", 0, 5, 0), + ( "C2", 0, 5, 1), + ( "C3", 2, 9, 0), + ( "C5", 7, 4, 1), + ( "C6", 7, 6, 1), + ( "D1", 0, 4, 1), + ( "D5", 6, 0, 1), + ( "D6", 7, 4, 0), + ( "E1", 0, 4, 0), + ( "E2", 3, 0, 1), + ( "E3", 4, 0, 0), + ( "E4", 5, 0, 0), + ( "E5", 6, 0, 0), + ( "E6", 7, 3, 1), + ( "F2", 3, 0, 0), + ( "F3", 4, 0, 1), + ( "F5", 5, 0, 1), + ], + "384-cm49": [ + ( "A1", 0, 7, 1), + ( "A2", 2, 9, 1), + ( "A3", 3, 9, 0), + ( "A4", 4, 9, 1), + ( "A5", 5, 9, 0), + ( "A6", 6, 9, 0), + ( "A7", 6, 9, 1), + ( "B1", 0, 7, 0), + ( "B2", 0, 6, 0), + ( "B3", 2, 9, 0), + ( "B4", 4, 9, 0), + ( "C1", 0, 5, 1), + ( "C2", 0, 6, 1), + ( "C4", 3, 9, 1), + ( "C5", 7, 6, 1), + ( "C6", 7, 5, 1), + ( "C7", 7, 6, 0), + ( "D1", 0, 4, 0), + ( "D2", 0, 5, 0), + ( "D3", 0, 2, 0), + ( "D4", 5, 9, 1), + ( "D6", 7, 4, 1), + ( "D7", 7, 5, 0), + ( "E2", 0, 4, 1), + ( "E6", 6, 0, 1), + ( "E7", 7, 4, 0), + ( "F1", 0, 2, 1), + ( "F2", 0, 1, 0), + ( "F3", 3, 0, 1), + ( "F4", 4, 0, 0), + ( "F5", 5, 0, 0), + ( "F6", 6, 0, 0), + ( "F7", 7, 3, 1), + ( "G1", 0, 1, 1), + ( "G3", 3, 0, 0), + ( "G4", 4, 0, 1), + ( "G6", 5, 0, 1), ] } @@ -3831,7 +3896,7 @@ logictile_db.append([["B1[50]"], "CarryInSet"]) logictile_8k_db.append([["B1[49]"], "buffer", "carry_in", "carry_in_mux"]) logictile_8k_db.append([["B1[50]"], "CarryInSet"]) -logictile_384_db.append([["B1[49]"], "buffer", "carry_in", "carry_in_mux"]) #384? +logictile_384_db.append([["B1[49]"], "buffer", "carry_in", "carry_in_mux"]) logictile_384_db.append([["B1[50]"], "CarryInSet"]) for db in [iotile_l_db, iotile_r_db, iotile_t_db, iotile_b_db, logictile_db, logictile_8k_db, logictile_384_db, rambtile_db, ramttile_db, rambtile_8k_db, ramttile_8k_db]: diff --git a/icefuzz/pinloc/pinloc-384-cm36.sh b/icefuzz/pinloc/pinloc-384-cm36.sh new file mode 100644 index 0000000..b950e28 --- /dev/null +++ b/icefuzz/pinloc/pinloc-384-cm36.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +mkdir -p pinloc-384-cm36 +cd pinloc-384-cm36 + +pins=" + A1 A2 A3 + B1 B3 B4 B5 B6 + C1 C2 C3 C5 C6 + D1 D5 D6 + E1 E2 E3 E4 E5 E6 + F2 F3 F5 +" + +if [ $(echo $pins | wc -w) -ne 25 ]; then + echo "Incorrect number of pins:" $(echo $pins | wc -w) + exit 1 +fi + +{ + echo -n "all:" + for pin in $pins; do + id="pinloc-384-cm36_${pin}" + echo -n " ${id}.exp" + done + echo + + for pin in $pins; do + id="pinloc-384-cm36_${pin}" + echo "module top(output y); assign y = 0; endmodule" > ${id}.v + echo "set_io y ${pin}" >> ${id}.pcf + echo; echo "${id}.exp:" + echo " ICEDEV=lp384-cm36 bash ../../icecube.sh ${id} > ${id}.log 2>&1" + echo " ../../../icebox/icebox_explain.py ${id}.asc > ${id}.exp.new" + echo " ! grep '^Warning: pin' ${id}.log" + echo " rm -rf ${id}.tmp" + echo " mv ${id}.exp.new ${id}.exp" + done +} > pinloc-384-cm36.mk + +set -ex +make -f pinloc-384-cm36.mk -j4 +python3 ../pinlocdb.py pinloc-384-cm36_*.exp > ../pinloc-384-cm36.txt + diff --git a/icefuzz/pinloc/pinloc-384-cm49.sh b/icefuzz/pinloc/pinloc-384-cm49.sh new file mode 100644 index 0000000..ea81bd0 --- /dev/null +++ b/icefuzz/pinloc/pinloc-384-cm49.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +mkdir -p pinloc-384-cm49 +cd pinloc-384-cm49 + +pins=" + A1 A2 A3 A4 A5 A6 A7 + B1 B2 B3 B4 + C1 C2 C4 C5 C6 C7 + D1 D2 D3 D4 D6 D7 + E2 E6 E7 + F1 F2 F3 F4 F5 F6 F7 + G1 G3 G4 G6 +" + + +if [ $(echo $pins | wc -w) -ne 37 ]; then + echo "Incorrect number of pins:" $(echo $pins | wc -w) + exit 1 +fi + +{ + echo -n "all:" + for pin in $pins; do + id="pinloc-384-cm49_${pin}" + echo -n " ${id}.exp" + done + echo + + for pin in $pins; do + id="pinloc-384-cm49_${pin}" + echo "module top(output y); assign y = 0; endmodule" > ${id}.v + echo "set_io y ${pin}" >> ${id}.pcf + echo; echo "${id}.exp:" + echo " ICEDEV=lp384-cm49 bash ../../icecube.sh ${id} > ${id}.log 2>&1" + echo " ../../../icebox/icebox_explain.py ${id}.asc > ${id}.exp.new" + echo " ! grep '^Warning: pin' ${id}.log" + echo " rm -rf ${id}.tmp" + echo " mv ${id}.exp.new ${id}.exp" + done +} > pinloc-384-cm49.mk + +set -ex +make -f pinloc-384-cm49.mk -j4 +python3 ../pinlocdb.py pinloc-384-cm49_*.exp > ../pinloc-384-cm49.txt + diff --git a/icefuzz/pinloc/pinloc-384-qn32.sh b/icefuzz/pinloc/pinloc-384-qn32.sh index a3d91e4..da8c63d 100644 --- a/icefuzz/pinloc/pinloc-384-qn32.sh +++ b/icefuzz/pinloc/pinloc-384-qn32.sh @@ -28,7 +28,7 @@ fi echo "module top(output y); assign y = 0; endmodule" > ${id}.v echo "set_io y ${pin}" >> ${id}.pcf echo; echo "${id}.exp:" - echo " ICEDEV=384-qn32 bash ../../icecube.sh ${id} > ${id}.log 2>&1" + echo " ICEDEV=lp384-qn32 bash ../../icecube.sh ${id} > ${id}.log 2>&1" echo " ../../../icebox/icebox_explain.py ${id}.asc > ${id}.exp.new" echo " ! grep '^Warning: pin' ${id}.log" echo " rm -rf ${id}.tmp" |