aboutsummaryrefslogtreecommitdiffstats
path: root/icebox/icebox.py
diff options
context:
space:
mode:
Diffstat (limited to 'icebox/icebox.py')
-rw-r--r--icebox/icebox.py495
1 files changed, 478 insertions, 17 deletions
diff --git a/icebox/icebox.py b/icebox/icebox.py
index 198b5f2..27bd243 100644
--- a/icebox/icebox.py
+++ b/icebox/icebox.py
@@ -79,6 +79,30 @@ class iceconfig:
self.io_tiles[(0, y)] = ["0" * 18 for i in range(16)]
self.io_tiles[(self.max_x, y)] = ["0" * 18 for i in range(16)]
+ def setup_empty_lm4k(self):
+ self.clear()
+ self.device = "lm4k"
+ self.max_x = 25
+ self.max_y = 21
+
+ for x in range(1, self.max_x):
+ for y in range(1, self.max_y):
+ if x in (6, 19):
+ if y % 2 == 1:
+ self.ramb_tiles[(x, y)] = ["0" * 42 for i in range(16)]
+ else:
+ self.ramt_tiles[(x, y)] = ["0" * 42 for i in range(16)]
+ else:
+ self.logic_tiles[(x, y)] = ["0" * 54 for i in range(16)]
+
+ for x in range(1, self.max_x):
+ self.io_tiles[(x, 0)] = ["0" * 18 for i in range(16)]
+ self.io_tiles[(x, self.max_y)] = ["0" * 18 for i in range(16)]
+
+ for y in range(1, self.max_y):
+ self.io_tiles[(0, y)] = ["0" * 18 for i in range(16)]
+ self.io_tiles[(self.max_x, y)] = ["0" * 18 for i in range(16)]
+
def setup_empty_5k(self):
self.clear()
self.device = "5k"
@@ -150,11 +174,15 @@ class iceconfig:
if (x, y) in self.ipcon_tiles: return self.ipcon_tiles[(x, y)]
return None
- def pinloc_db(self):
- if self.device == "384": return pinloc_db["384-qn32"]
- if self.device == "1k": return pinloc_db["1k-tq144"]
- if self.device == "5k": return pinloc_db["5k-sg48"]
- if self.device == "8k": return pinloc_db["8k-ct256"]
+ def pinloc_db(self, package = None):
+ if package is None:
+ if self.device == "384": return pinloc_db["384-qn32"]
+ if self.device == "1k": return pinloc_db["1k-tq144"]
+ if self.device == "lm4k": return pinloc_db["lm4k-cm49"]
+ if self.device == "5k": return pinloc_db["5k-sg48"]
+ if self.device == "8k": return pinloc_db["8k-ct256"]
+ else:
+ return pinloc_db[self.device + "-" + package]
assert False
def gbufin_db(self):
@@ -175,6 +203,8 @@ class iceconfig:
def pll_list(self):
if self.device == "1k":
return ["1k"]
+ if self.device == "lm4k":
+ return ["lm4k"]
if self.device == "5k":
return ["5k"]
if self.device == "8k":
@@ -203,6 +233,19 @@ class iceconfig:
entries.append((x, src_y, x, y))
return entries
+ # TODO(awygle) - actually capture 0 and 21 here
+ if self.device == "lm4k":
+ entries = list()
+ for x in range(self.max_x+1):
+ for y in range(self.max_y+1):
+ src_y = None
+ if 0 <= y <= 4: src_y = 4
+ if 5 <= y <= 10: src_y = 5
+ if 11 <= y <= 16: src_y = 16
+ if 17 <= y <= 21: src_y = 17
+ entries.append((x, src_y, x, y))
+ return entries
+
if self.device == "8k":
entries = list()
for x in range(self.max_x+1):
@@ -302,7 +345,7 @@ class iceconfig:
def tile_db(self, x, y):
# Only these devices have IO on the left and right sides.
- if self.device in ["384", "1k", "8k"]:
+ if self.device in ["384", "1k", "lm4k", "8k"]:
if x == 0: return iotile_l_db
if x == self.max_x: return iotile_r_db
# The 5k needs an IO db including the extra bits
@@ -326,7 +369,7 @@ class iceconfig:
if (x, y) in self.dsp_tiles[2]: return dsp2_5k_db
if (x, y) in self.dsp_tiles[3]: return dsp3_5k_db
- elif self.device == "8k":
+ elif self.device == "8k" or self.device == "lm4k":
if (x, y) in self.logic_tiles: return logictile_8k_db
if (x, y) in self.ramb_tiles: return rambtile_8k_db
if (x, y) in self.ramt_tiles: return ramttile_8k_db
@@ -449,7 +492,7 @@ class iceconfig:
return (nx, ny, "ram/RDATA_%d" % func)
elif self.device == "5k":
return (nx, ny, "ram/RDATA_%d" % (15-func))
- elif self.device == "8k":
+ elif self.device == "8k" or self.device == "lm4k":
return (nx, ny, "ram/RDATA_%d" % (15-func))
else:
assert False
@@ -458,7 +501,7 @@ class iceconfig:
return (nx, ny, "ram/RDATA_%d" % (8+func))
elif self.device == "5k":
return (nx, ny, "ram/RDATA_%d" % (7-func))
- elif self.device == "8k":
+ elif self.device == "8k" or self.device == "lm4k":
return (nx, ny, "ram/RDATA_%d" % (7-func))
else:
assert False
@@ -500,7 +543,7 @@ class iceconfig:
funcnets |= self.follow_funcnet(x, y, int(match.group(1)) % 8)
elif self.device == "5k":
funcnets |= self.follow_funcnet(x, y, 7 - int(match.group(1)) % 8)
- elif self.device == "8k":
+ elif self.device == "8k" or self.device == "lm4k":
funcnets |= self.follow_funcnet(x, y, 7 - int(match.group(1)) % 8)
else:
assert False
@@ -714,7 +757,7 @@ class iceconfig:
add_seed_segments(idx, tile, logictile_db)
elif self.device == "5k":
add_seed_segments(idx, tile, logictile_5k_db)
- elif self.device == "8k":
+ elif self.device == "8k" or self.device == "lm4k":
add_seed_segments(idx, tile, logictile_8k_db)
elif self.device == "384":
add_seed_segments(idx, tile, logictile_384_db)
@@ -726,7 +769,7 @@ class iceconfig:
add_seed_segments(idx, tile, rambtile_db)
elif self.device == "5k":
add_seed_segments(idx, tile, rambtile_8k_db)
- elif self.device == "8k":
+ elif self.device == "8k" or self.device == "lm4k":
add_seed_segments(idx, tile, rambtile_8k_db)
else:
assert False
@@ -736,7 +779,7 @@ class iceconfig:
add_seed_segments(idx, tile, ramttile_db)
elif self.device == "5k":
add_seed_segments(idx, tile, ramttile_8k_db)
- elif self.device == "8k":
+ elif self.device == "8k" or self.device == "lm4k":
add_seed_segments(idx, tile, ramttile_8k_db)
else:
assert False
@@ -881,7 +924,7 @@ class iceconfig:
self.extra_bits.add((int(line[1]), int(line[2]), int(line[3])))
continue
if line[0] == ".device":
- assert line[1] in ["1k", "5k", "8k", "384"]
+ assert line[1] in ["1k", "lm4k", "5k", "8k", "384"]
self.device = line[1]
continue
if line[0] == ".warmboot":
@@ -1303,7 +1346,8 @@ def run_checks_neigh():
print("Running consistency checks on neighbour finder..")
ic = iceconfig()
# ic.setup_empty_1k()
- ic.setup_empty_5k()
+ ic.setup_empty_lm4k()
+ # ic.setup_empty_5k()
# ic.setup_empty_8k()
# ic.setup_empty_384()
@@ -1353,7 +1397,8 @@ def parse_db(text, device="1k"):
continue
line = line_1k
elif line_8k != line:
- if device != "8k" and device != "5k": # global network is the same for 8k and 5k
+ # global network is the same for 8k, 5k, and lm4k
+ if device != "8k" and device != "5k" and device != "lm4k":
continue
line = line_8k
elif line_384 != line:
@@ -1378,6 +1423,16 @@ extra_bits_db = {
(0, 330, 143): ("padin_glb_netwk", "6"), # (0 0) (330 143) (330 143) routing T_0_0.padin_6 <X> T_0_0.glb_netwk_6
(0, 331, 143): ("padin_glb_netwk", "7"),
},
+ "lm4k": {
+ (0, 654, 174): ("padin_glb_netwk", "0"),
+ (0, 655, 174): ("padin_glb_netwk", "1"),
+ (1, 654, 175): ("padin_glb_netwk", "2"),
+ (1, 655, 175): ("padin_glb_netwk", "3"),
+ (1, 654, 174): ("padin_glb_netwk", "4"), # HSOSC
+ (1, 655, 174): ("padin_glb_netwk", "5"), # LSOSC
+ (0, 654, 175): ("padin_glb_netwk", "6"),
+ (0, 655, 175): ("padin_glb_netwk", "7"),
+ },
"5k": {
(0, 690, 334): ("padin_glb_netwk", "0"), # check
(0, 691, 334): ("padin_glb_netwk", "1"), # good
@@ -1431,6 +1486,16 @@ gbufin_db = {
(13, 31, 1), #checked
(19, 31, 2), #checked
],
+ "lm4k": [
+ ( 6, 0, 6),
+ (12, 0, 5),
+ (13, 0, 0),
+ (19, 0, 7),
+ ( 6, 21, 3),
+ (12, 21, 4),
+ (13, 21, 1),
+ (19, 21, 2),
+ ],
"8k": [
(33, 16, 7),
( 0, 16, 6),
@@ -1468,6 +1533,10 @@ iolatch_db = {
( 5, 0),
( 8, 17),
],
+ "lm4k": [
+ (14, 0),
+ (14, 21)
+ ],
"5k": [
(14, 0),
(14, 31),
@@ -1500,6 +1569,12 @@ warmbootinfo_db = {
"S0": ( 23, 0, "fabout" ),
"S1": ( 24, 0, "fabout" ),
},
+ "lm4k": {
+ # These are the right locations but may be the wrong order.
+ "BOOT": ( 23, 0, "fabout" ),
+ "S0": ( 24, 0, "fabout" ),
+ "S1": ( 25, 1, "fabout" ),
+ },
"8k": {
"BOOT": ( 31, 0, "fabout" ),
"S0": ( 33, 1, "fabout" ),
@@ -1619,6 +1694,99 @@ pllinfo_db = {
"SDI": ( 4, 0, "fabout"),
"SCLK": ( 3, 0, "fabout"),
},
+ "lm4k": {
+ "LOC" : (12, 0),
+
+ # 3'b000 = "DISABLED"
+ # 3'b010 = "SB_PLL40_PAD"
+ # 3'b100 = "SB_PLL40_2_PAD"
+ # 3'b110 = "SB_PLL40_2F_PAD"
+ # 3'b011 = "SB_PLL40_CORE"
+ # 3'b111 = "SB_PLL40_2F_CORE"
+ "PLLTYPE_0": (12, 0, "PLLCONFIG_5"),
+ "PLLTYPE_1": (14, 0, "PLLCONFIG_1"),
+ "PLLTYPE_2": (14, 0, "PLLCONFIG_3"),
+
+ # 3'b000 = "DELAY"
+ # 3'b001 = "SIMPLE"
+ # 3'b010 = "PHASE_AND_DELAY"
+ # 3'b110 = "EXTERNAL"
+ "FEEDBACK_PATH_0": (14, 0, "PLLCONFIG_5"),
+ "FEEDBACK_PATH_1": (11, 0, "PLLCONFIG_9"),
+ "FEEDBACK_PATH_2": (12, 0, "PLLCONFIG_1"),
+
+ # 1'b0 = "FIXED"
+ # 1'b1 = "DYNAMIC" (also set FDA_FEEDBACK=4'b1111)
+ "DELAY_ADJMODE_FB": (13, 0, "PLLCONFIG_4"),
+
+ # 1'b0 = "FIXED"
+ # 1'b1 = "DYNAMIC" (also set FDA_RELATIVE=4'b1111)
+ "DELAY_ADJMODE_REL": (13, 0, "PLLCONFIG_9"),
+
+ # 2'b00 = "GENCLK"
+ # 2'b01 = "GENCLK_HALF"
+ # 2'b10 = "SHIFTREG_90deg"
+ # 2'b11 = "SHIFTREG_0deg"
+ "PLLOUT_SELECT_A_0": (12, 0, "PLLCONFIG_6"),
+ "PLLOUT_SELECT_A_1": (12, 0, "PLLCONFIG_7"),
+ # 2'b00 = "GENCLK"
+ # 2'b01 = "GENCLK_HALF"
+ # 2'b10 = "SHIFTREG_90deg"
+ # 2'b11 = "SHIFTREG_0deg"
+ "PLLOUT_SELECT_B_0": (12, 0, "PLLCONFIG_2"),
+ "PLLOUT_SELECT_B_1": (12, 0, "PLLCONFIG_3"),
+
+ # Numeric Parameters
+ "SHIFTREG_DIV_MODE": (12, 0, "PLLCONFIG_4"),
+ "FDA_FEEDBACK_0": (12, 0, "PLLCONFIG_9"),
+ "FDA_FEEDBACK_1": (13, 0, "PLLCONFIG_1"),
+ "FDA_FEEDBACK_2": (13, 0, "PLLCONFIG_2"),
+ "FDA_FEEDBACK_3": (13, 0, "PLLCONFIG_3"),
+ "FDA_RELATIVE_0": (13, 0, "PLLCONFIG_5"),
+ "FDA_RELATIVE_1": (13, 0, "PLLCONFIG_6"),
+ "FDA_RELATIVE_2": (13, 0, "PLLCONFIG_7"),
+ "FDA_RELATIVE_3": (13, 0, "PLLCONFIG_8"),
+ "DIVR_0": (10, 0, "PLLCONFIG_1"),
+ "DIVR_1": (10, 0, "PLLCONFIG_2"),
+ "DIVR_2": (10, 0, "PLLCONFIG_3"),
+ "DIVR_3": (10, 0, "PLLCONFIG_4"),
+ "DIVF_0": (10, 0, "PLLCONFIG_5"),
+ "DIVF_1": (10, 0, "PLLCONFIG_6"),
+ "DIVF_2": (10, 0, "PLLCONFIG_7"),
+ "DIVF_3": (10, 0, "PLLCONFIG_8"),
+ "DIVF_4": (10, 0, "PLLCONFIG_9"),
+ "DIVF_5": (11, 0, "PLLCONFIG_1"),
+ "DIVF_6": (11, 0, "PLLCONFIG_2"),
+ "DIVQ_0": (11, 0, "PLLCONFIG_3"),
+ "DIVQ_1": (11, 0, "PLLCONFIG_4"),
+ "DIVQ_2": (11, 0, "PLLCONFIG_5"),
+ "FILTER_RANGE_0": (11, 0, "PLLCONFIG_6"),
+ "FILTER_RANGE_1": (11, 0, "PLLCONFIG_7"),
+ "FILTER_RANGE_2": (11, 0, "PLLCONFIG_8"),
+ "TEST_MODE": (12, 0, "PLLCONFIG_8"),
+
+ # PLL Ports
+ # TODO(awygle) confirm these
+ "PLLOUT_A": ( 12, 0, 1),
+ "PLLOUT_B": ( 13, 0, 0),
+ "REFERENCECLK": ( 10, 0, "fabout"),
+ "EXTFEEDBACK": ( 11, 0, "fabout"),
+ "DYNAMICDELAY_0": ( 1, 0, "fabout"),
+ "DYNAMICDELAY_1": ( 2, 0, "fabout"),
+ "DYNAMICDELAY_2": ( 3, 0, "fabout"),
+ "DYNAMICDELAY_3": ( 4, 0, "fabout"),
+ "DYNAMICDELAY_4": ( 5, 0, "fabout"),
+ "DYNAMICDELAY_5": ( 7, 0, "fabout"),
+ "DYNAMICDELAY_6": ( 8, 0, "fabout"),
+ "DYNAMICDELAY_7": ( 9, 0, "fabout"),
+ "LOCK": ( 1, 1, "neigh_op_bnl_1"), #check?
+ "BYPASS": ( 15, 0, "fabout"),
+ "RESETB": ( 16, 0, "fabout"),
+ "LATCHINPUTVALUE": ( 14, 0, "fabout"),
+ "SDO": ( 24, 1, "neigh_op_bnr_3"), #check?
+ "SDI": ( 18, 0, "fabout"),
+ "SCLK": ( 17, 0, "fabout"),
+ },
"5k": {
"LOC" : (12, 31),
@@ -1910,6 +2078,18 @@ padin_pio_db = {
( 6, 0, 1), # glb_netwk_6
( 6, 17, 1), # glb_netwk_7
],
+ "lm4k": [
+ (19, 0, 0), #0 fixed
+ ( 6, 0, 1), #1 fixed
+ (13, 21, 0), #2 fixed
+ (13, 0, 0), #3 fixed
+
+ (19, 21, 0), #These two are questionable, but keep the order correct
+ ( 6, 21, 0), #They may need to be fixed if other package options are added.
+
+ (12, 0, 1), #6 fixed
+ (12, 21, 1), #7 fixed
+ ],
"5k": [
(19, 0, 1), #0 fixed
( 6, 0, 1), #1 fixed
@@ -2308,6 +2488,45 @@ ieren_db = {
( 7, 6, 0, 7, 6, 1),
( 7, 6, 1, 7, 6, 0),
],
+ "lm4k": [
+ ( 6, 0, 0, 6, 0, 1),
+ ( 6, 0, 1, 6, 0, 0),
+ ( 7, 0, 0, 7, 0, 1),
+ ( 7, 0, 1, 7, 0, 0),
+ ( 8, 0, 0, 8, 0, 1),
+ ( 8, 0, 1, 8, 0, 0),
+ (10, 0, 0, 10, 0, 1),
+ (12, 0, 0, 12, 0, 1),
+ (12, 0, 1, 12, 0, 0),
+ (13, 0, 0, 13, 0, 1),
+ (13, 0, 1, 13, 0, 0),
+ (19, 0, 0, 19, 0, 1),
+ (19, 0, 1, 19, 0, 0),
+ (21, 0, 0, 21, 0, 1),
+ (21, 0, 1, 21, 0, 0),
+ (22, 0, 0, 22, 0, 1),
+ (23, 0, 0, 23, 0, 1),
+ (23, 0, 1, 23, 0, 0),
+ (24, 0, 0, 24, 0, 1),
+ (24, 0, 1, 24, 0, 0),
+ ( 4, 21, 0, 4, 21, 1),
+ ( 4, 21, 1, 4, 21, 0),
+ ( 5, 21, 1, 5, 21, 0),
+ ( 6, 21, 0, 6, 21, 1),
+ ( 7, 21, 1, 7, 21, 0),
+ ( 9, 21, 0, 9, 21, 1),
+ (12, 21, 1, 12, 21, 0),
+ (13, 21, 0, 13, 21, 1),
+ (15, 21, 0, 15, 21, 1),
+ (17, 21, 1, 17, 21, 0),
+ (18, 21, 0, 18, 21, 1),
+ (19, 21, 0, 19, 21, 1),
+ (19, 21, 1, 19, 21, 0),
+ (21, 21, 1, 21, 21, 0),
+ (22, 21, 1, 22, 21, 0),
+ (23, 21, 0, 23, 21, 1),
+ (23, 21, 1, 23, 21, 0),
+ ],
"5k": [
( 8, 0, 0, 8, 0, 1),
( 9, 0, 1, 9, 0, 0),
@@ -3459,6 +3678,101 @@ pinloc_db = {
( "L8", 29, 0, 0),
("L10", 31, 0, 0),
],
+ "8k-bg121:4k": [
+ ( "A1", 2, 33, 0),
+ ( "A2", 3, 33, 1),
+ ( "A3", 3, 33, 0),
+ ( "A4", 9, 33, 0),
+ ( "A5", 11, 33, 0),
+ ( "A6", 11, 33, 1),
+ ( "A7", 19, 33, 1),
+ ( "A8", 20, 33, 1),
+ ( "A9", 26, 33, 1),
+ ("A10", 30, 33, 1),
+ ("A11", 31, 33, 1),
+ ( "B1", 0, 30, 1),
+ ( "B2", 0, 30, 0),
+ ( "B3", 4, 33, 0),
+ ( "B4", 5, 33, 0),
+ ( "B5", 10, 33, 1),
+ ( "B6", 16, 33, 1),
+ ( "B7", 17, 33, 0),
+ ( "B8", 27, 33, 0),
+ ( "B9", 28, 33, 1),
+ ("B11", 33, 28, 0),
+ ( "C1", 0, 25, 0),
+ ( "C2", 0, 25, 1),
+ ( "C3", 0, 27, 0),
+ ( "C4", 0, 27, 1),
+ ( "C7", 20, 33, 0),
+ ( "C8", 26, 33, 0),
+ ( "C9", 29, 33, 1),
+ ("C11", 33, 27, 1),
+ ( "D1", 0, 22, 0),
+ ( "D2", 0, 21, 1),
+ ( "D3", 0, 21, 0),
+ ( "D5", 8, 33, 1),
+ ( "D7", 25, 33, 0),
+ ( "D9", 33, 21, 0),
+ ("D10", 33, 24, 1),
+ ("D11", 33, 23, 1),
+ ( "E1", 0, 22, 1),
+ ( "E2", 0, 20, 1),
+ ( "E3", 0, 20, 0),
+ ( "E8", 33, 20, 1),
+ ( "E9", 33, 19, 1),
+ ("E10", 33, 17, 0),
+ ("E11", 33, 21, 1),
+ ( "F1", 0, 18, 1),
+ ( "F2", 0, 18, 0),
+ ( "F3", 0, 17, 0),
+ ( "F4", 0, 17, 1),
+ ( "F9", 33, 15, 0),
+ ("F10", 33, 14, 1),
+ ("F11", 33, 16, 1),
+ ( "G1", 0, 16, 1),
+ ( "G2", 0, 16, 0),
+ ( "G3", 0, 12, 1),
+ ( "G8", 33, 5, 1),
+ ( "G9", 33, 10, 1),
+ ("G10", 33, 6, 1),
+ ("G11", 33, 11, 0),
+ ( "H1", 0, 11, 1),
+ ( "H2", 0, 11, 0),
+ ( "H3", 0, 12, 0),
+ ( "H7", 20, 0, 1),
+ ( "H9", 29, 0, 1),
+ ("H10", 33, 4, 1),
+ ("H11", 33, 6, 0),
+ ( "J1", 0, 6, 1),
+ ( "J2", 0, 4, 0),
+ ( "J3", 4, 0, 1),
+ ( "J4", 8, 0, 0),
+ ( "J5", 15, 0, 0),
+ ( "J7", 20, 0, 0),
+ ( "J8", 22, 0, 1),
+ ( "J9", 30, 0, 1),
+ ("J10", 33, 5, 0),
+ ("J11", 33, 3, 1),
+ ( "K1", 0, 6, 0),
+ ( "K2", 0, 4, 1),
+ ( "K3", 7, 0, 1),
+ ( "K4", 12, 0, 1),
+ ( "K5", 15, 0, 1),
+ ( "K6", 17, 0, 0),
+ ( "K7", 21, 0, 1),
+ ( "K9", 30, 0, 0),
+ ("K10", 31, 0, 1),
+ ("K11", 33, 4, 0),
+ ( "L1", 4, 0, 0),
+ ( "L2", 6, 0, 1),
+ ( "L3", 11, 0, 1),
+ ( "L4", 12, 0, 0),
+ ( "L5", 16, 0, 1),
+ ( "L7", 24, 0, 0),
+ ( "L8", 29, 0, 0),
+ ("L10", 31, 0, 0),
+ ],
"8k-cm225:4k": [
( "A1", 1, 33, 1),
( "A2", 3, 33, 1),
@@ -3788,6 +4102,101 @@ pinloc_db = {
( "L8", 29, 0, 0),
("L10", 31, 0, 0),
],
+ "8k-bg121": [
+ ( "A1", 2, 33, 0),
+ ( "A2", 3, 33, 1),
+ ( "A3", 3, 33, 0),
+ ( "A4", 9, 33, 0),
+ ( "A5", 11, 33, 0),
+ ( "A6", 11, 33, 1),
+ ( "A7", 19, 33, 1),
+ ( "A8", 20, 33, 1),
+ ( "A9", 26, 33, 1),
+ ("A10", 30, 33, 1),
+ ("A11", 31, 33, 1),
+ ( "B1", 0, 30, 1),
+ ( "B2", 0, 30, 0),
+ ( "B3", 4, 33, 0),
+ ( "B4", 5, 33, 0),
+ ( "B5", 10, 33, 1),
+ ( "B6", 16, 33, 1),
+ ( "B7", 17, 33, 0),
+ ( "B8", 27, 33, 0),
+ ( "B9", 28, 33, 1),
+ ("B11", 33, 28, 0),
+ ( "C1", 0, 25, 0),
+ ( "C2", 0, 25, 1),
+ ( "C3", 0, 27, 0),
+ ( "C4", 0, 27, 1),
+ ( "C7", 20, 33, 0),
+ ( "C8", 26, 33, 0),
+ ( "C9", 29, 33, 1),
+ ("C11", 33, 27, 1),
+ ( "D1", 0, 22, 0),
+ ( "D2", 0, 21, 1),
+ ( "D3", 0, 21, 0),
+ ( "D5", 8, 33, 1),
+ ( "D7", 25, 33, 0),
+ ( "D9", 33, 21, 0),
+ ("D10", 33, 24, 1),
+ ("D11", 33, 23, 1),
+ ( "E1", 0, 22, 1),
+ ( "E2", 0, 20, 1),
+ ( "E3", 0, 20, 0),
+ ( "E8", 33, 20, 1),
+ ( "E9", 33, 19, 1),
+ ("E10", 33, 17, 0),
+ ("E11", 33, 21, 1),
+ ( "F1", 0, 18, 1),
+ ( "F2", 0, 18, 0),
+ ( "F3", 0, 17, 0),
+ ( "F4", 0, 17, 1),
+ ( "F9", 33, 15, 0),
+ ("F10", 33, 14, 1),
+ ("F11", 33, 16, 1),
+ ( "G1", 0, 16, 1),
+ ( "G2", 0, 16, 0),
+ ( "G3", 0, 12, 1),
+ ( "G8", 33, 5, 1),
+ ( "G9", 33, 10, 1),
+ ("G10", 33, 6, 1),
+ ("G11", 33, 11, 0),
+ ( "H1", 0, 11, 1),
+ ( "H2", 0, 11, 0),
+ ( "H3", 0, 12, 0),
+ ( "H7", 20, 0, 1),
+ ( "H9", 29, 0, 1),
+ ("H10", 33, 4, 1),
+ ("H11", 33, 6, 0),
+ ( "J1", 0, 6, 1),
+ ( "J2", 0, 4, 0),
+ ( "J3", 4, 0, 1),
+ ( "J4", 8, 0, 0),
+ ( "J5", 15, 0, 0),
+ ( "J7", 20, 0, 0),
+ ( "J8", 22, 0, 1),
+ ( "J9", 30, 0, 1),
+ ("J10", 33, 5, 0),
+ ("J11", 33, 3, 1),
+ ( "K1", 0, 6, 0),
+ ( "K2", 0, 4, 1),
+ ( "K3", 7, 0, 1),
+ ( "K4", 12, 0, 1),
+ ( "K5", 15, 0, 1),
+ ( "K6", 17, 0, 0),
+ ( "K7", 21, 0, 1),
+ ( "K9", 30, 0, 0),
+ ("K10", 31, 0, 1),
+ ("K11", 33, 4, 0),
+ ( "L1", 4, 0, 0),
+ ( "L2", 6, 0, 1),
+ ( "L3", 11, 0, 1),
+ ( "L4", 12, 0, 0),
+ ( "L5", 16, 0, 1),
+ ( "L7", 24, 0, 0),
+ ( "L8", 29, 0, 0),
+ ("L10", 31, 0, 0),
+ ],
"8k-cm225": [
( "A1", 1, 33, 1),
( "A2", 3, 33, 1),
@@ -4425,6 +4834,45 @@ pinloc_db = {
( "F2", 19, 0, 1),
( "F4", 12, 0, 1),
( "F5", 6, 0, 1),
+ ],
+ "lm4k-cm49": [
+ ( "A1", 5, 21, 1),
+ ( "A2", 6, 21, 0),
+ ( "A3", 12, 21, 1),
+ ( "A4", 13, 21, 0),
+ ( "A5", 17, 21, 1),
+ ( "A6", 19, 21, 1),
+ ( "A7", 22, 21, 1),
+ ( "B1", 4, 21, 1),
+ ( "B2", 7, 21, 1),
+ ( "B4", 15, 21, 0),
+ ( "B6", 18, 21, 0),
+ ( "B7", 23, 21, 1),
+ ( "C1", 4, 21, 0),
+ ( "C3", 9, 21, 0),
+ ( "C4", 19, 21, 0),
+ ( "C6", 21, 21, 1),
+ ( "C7", 23, 21, 0),
+ ( "D1", 7, 0, 1),
+ ( "D2", 6, 0, 1),
+ ( "D3", 10, 0, 0),
+ ( "D6", 19, 0, 1),
+ ( "D7", 21, 0, 0),
+ ( "E1", 6, 0, 0),
+ ( "E2", 12, 0, 1),
+ ( "E3", 7, 0, 0),
+ ( "E4", 12, 0, 0),
+ ( "E5", 19, 0, 0),
+ ( "E6", 24, 0, 1),
+ ( "E7", 22, 0, 0),
+ ( "F2", 8, 0, 1),
+ ( "F3", 8, 0, 0),
+ ( "F4", 13, 0, 1),
+ ( "F5", 23, 0, 0),
+ ( "F6", 24, 0, 0),
+ ( "F7", 21, 0, 1),
+ ( "G3", 13, 0, 0),
+ ( "G6", 23, 0, 1),
]
}
@@ -4769,6 +5217,10 @@ extra_cells_db = {
"RGB2_CURRENT_5": (0, 30, "CBIT_7"),
"CURRENT_MODE": (0, 28, "CBIT_4"),
+ "RGB0": (4, 31, 0),
+ "RGB1": (5, 31, 0),
+ "RGB2": (6, 31, 0),
+
},
("I2C", (0, 31, 0)): {
"I2CIRQ": (0, 30, "slf_op_7"),
@@ -4984,7 +5436,16 @@ extra_cells_db = {
"PWMOUT1": (0, 28, "slf_op_5"),
"PWMOUT2": (0, 28, "slf_op_6"),
},
-
+ ("IO_I3C", (25, 27, 0)): {
+ "PU_ENB": (25, 27, "lutff_6/in_0"),
+ "WEAK_PU_ENB": (25, 27, "lutff_4/in_0"),
+ "PACKAGE_PIN": (19, 31, 0)
+ },
+ ("IO_I3C", (25, 27, 1)): {
+ "PU_ENB": (25, 27, "lutff_7/in_0"),
+ "WEAK_PU_ENB": (25, 27, "lutff_5/in_0"),
+ "PACKAGE_PIN": (19, 31, 1)
+ }
}
}