mirror of https://github.com/openXC7/prjxray.git
64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
|
|
from prjxray import util
|
|
'''
|
|
Local utils script to hold shared code of the 005-tilegrid fuzzer scripts
|
|
'''
|
|
|
|
|
|
def add_tile_bits(
|
|
tile_name,
|
|
tile_db,
|
|
baseaddr,
|
|
offset,
|
|
frames,
|
|
words,
|
|
height=None,
|
|
verbose=False):
|
|
'''
|
|
Record data structure geometry for the given tile baseaddr
|
|
For most tiles there is only one baseaddr, but some like BRAM have multiple
|
|
Notes on multiple block types:
|
|
https://github.com/SymbiFlow/prjxray/issues/145
|
|
'''
|
|
|
|
bits = tile_db['bits']
|
|
block_type = util.addr2btype(baseaddr)
|
|
|
|
assert offset <= 100, (tile_name, offset)
|
|
# Few rare cases at X=0 for double width tiles split in half => small negative offset
|
|
assert offset >= 0 or "IOB" in tile_name, (tile_name, offset)
|
|
assert 1 <= words <= 101
|
|
assert offset + words <= 101, (
|
|
tile_name, offset + words, offset, words, block_type)
|
|
|
|
baseaddr_str = '0x%08X' % baseaddr
|
|
block = bits.get(block_type, None)
|
|
if block is not None:
|
|
verbose and print(
|
|
"%s: existing defintion for %s" % (tile_name, block_type))
|
|
assert block["baseaddr"] == baseaddr_str
|
|
assert block["frames"] == frames
|
|
assert block["offset"] == offset, "%s; orig offset %s, new %s" % (
|
|
tile_name, block["offset"], offset)
|
|
assert block["words"] == words
|
|
|
|
block = bits.setdefault(block_type, {})
|
|
|
|
# FDRI address
|
|
block["baseaddr"] = baseaddr_str
|
|
# Number of frames this entry is sretched across
|
|
# that is the following FDRI addresses are used: range(baseaddr, baseaddr + frames)
|
|
block["frames"] = frames
|
|
|
|
# Index of first word used within each frame
|
|
block["offset"] = offset
|
|
|
|
# related to words...
|
|
# deprecated field? Don't worry about for now
|
|
# DSP has some differences between height and words
|
|
block["words"] = words
|
|
if height is None:
|
|
height = words
|
|
block["height"] = height
|