checkdb: print in standard address format

Signed-off-by: John McMaster <johndmcmaster@gmail.com>
This commit is contained in:
John McMaster 2018-12-10 14:54:40 -08:00
parent 96ee4ac449
commit 77c5261130
2 changed files with 23 additions and 3 deletions

View File

@ -111,6 +111,19 @@ def parse_tagbit(x):
return (isset, (int(frame, 10), int(word, 10)))
def addr_bit2word(bitaddr):
word = bitaddr // 32
bit = bitaddr % 32
return word, bit
def addr2str(addr, word, bit):
# Make like .bits file: bit_00020b14_073_05
# also similar to .db file: CLBLL_L.SLICEL_X0.CEUSEDMUX 01_39
assert 0 <= bit <= 31
return "%08x_%03u_%02u" % (addr, word, bit)
def gen_tile_bits(db_root, tilej, strict=False, verbose=False):
'''
For given tile yield

View File

@ -66,8 +66,14 @@ def check_tile_overlap(db, db_root, strict=False, verbose=False):
mall = dict()
tiles_checked = 0
def subtiles(tile_names):
for tile_name in tile_names:
yield tile_name, db.tilegrid[tile_name]
for tile_name, tilej in db.tilegrid.items():
#for tile_name, tilej in [("CLBLL_L_X12Y138", db.tilegrid["CLBLL_L_X12Y138"])]:
# for tile_name, tilej in subtiles(["CLBLL_L_X14Y112", "INT_L_X14Y112"]):
mtile = make_tile_mask(
db_root, tile_name, tilej, strict=strict, verbose=verbose)
verbose and print(
@ -81,9 +87,10 @@ def check_tile_overlap(db, db_root, strict=False, verbose=False):
print("ERROR: %s collisions" % len(collisions))
for ck in sorted(collisions):
addr, bitaddr = ck
word, bit = util.addr_bit2word(bitaddr)
print(
" %08X_%04X: had %s, got %s" %
(addr, bitaddr, mall[ck], mtile[ck]))
" %s: had %s, got %s" %
(util.addr2str(addr, word, bit), mall[ck], mtile[ck]))
raise ValueError("%s collisions" % len(collisions))
mall.update(mtile)
tiles_checked += 1