icebox: Allow selecting package in icebox_vlog

Signed-off-by: David Shah <davey1576@gmail.com>
This commit is contained in:
David Shah 2018-05-30 11:24:40 +02:00
parent 816c47ce83
commit eee9aac2e1
2 changed files with 18 additions and 8 deletions

View File

@ -174,12 +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 == "lm4k": return pinloc_db["lm4k-cm49"]
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):

View File

@ -25,6 +25,7 @@ check_ieren = False
check_driver = False
lookup_symbols = False
do_collect = False
package = None
pcf_data = dict()
portnames = set()
unmatched_ports = set()
@ -56,6 +57,10 @@ Usage: icebox_vlog [options] [bitmap.asc]
like -p, enable some hacks for pcf files created
by the iCEcube2 placer.
-d <package>
use the given package to obtain chip pin numbers,
rather than the default for a device
-c
collect multi-bit ports
@ -68,7 +73,7 @@ Usage: icebox_vlog [options] [bitmap.asc]
sys.exit(0)
try:
opts, args = getopt.getopt(sys.argv[1:], "sSlLap:P:n:cRD")
opts, args = getopt.getopt(sys.argv[1:], "sSlLap:P:n:d:cRD")
except:
usage()
@ -111,6 +116,8 @@ for o, a in opts:
else:
pinloc = (line[2],)
pcf_data[pinloc] = p
elif o == "-d":
package = a
elif o == "-c":
do_collect = True
elif o == "-R":
@ -285,7 +292,7 @@ for segs in sorted(ic.group_segments(extra_connections=extra_connections, extra_
idx = (s[0], s[1], int(match.group(1)))
p = "io_%d_%d_%d" % idx
if lookup_pins or pcf_data:
for entry in ic.pinloc_db():
for entry in ic.pinloc_db(package):
if idx[0] == entry[1] and idx[1] == entry[2] and idx[2] == entry[3]:
if (entry[0],) in pcf_data:
p = pcf_data[(entry[0],)]