Output PIP form.

Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
This commit is contained in:
Keith Rothman 2019-02-09 22:50:15 -08:00
parent 6fd2cb4eec
commit f58cf6bbda
2 changed files with 61 additions and 1 deletions

View File

@ -12,7 +12,11 @@ build/segbits_clk_hrow.rdb: $(SPECIMENS_OK)
build/segbits_clk_hrow.db: build/segbits_clk_hrow.rdb
${XRAY_DBFIXUP} --db-root build --zero-db bits.dbf \
--seg-fn-in build/segbits_clk_hrow.rdb \
--seg-fn-out build/segbits_clk_hrow.db
--seg-fn-out build/segbits_clk_hrow_rc.db
python3 merge_gclk_entries.py \
build/segbits_clk_hrow_rc.db \
build/segbits_clk_hrow.db
${XRAY_MASKMERGE} build/mask_clk_hrow.db \
$(addsuffix /segdata_clk_hrow_top_r.txt,$(SPECIMENS)) \
$(addsuffix /segdata_clk_hrow_bot_r.txt,$(SPECIMENS))

View File

@ -0,0 +1,56 @@
import argparse
GCLKS = 32
def main():
parser = argparse.ArgumentParser(description="Convert GCLK ROW/COLUMN definitions into GCLK pips.")
parser.add_argument('in_segbit')
parser.add_argument('out_segbit')
args = parser.parse_args()
hrow_outs = {}
tile = None
with open(args.in_segbit) as f:
for l in f:
parts = l.strip().split(' ')
feature = parts[0]
bits = ' '.join(parts[1:])
tile1, dst, src = feature.split('.')
if tile is None:
tile = tile1
else:
assert tile == tile1
n = int(src[-1])
if dst not in hrow_outs:
hrow_outs[dst] = {
'rows': {},
'columns': {},
}
if src[-4:-1] == 'ROW':
hrow_outs[dst]['rows'][n] = bits
else:
assert src[-7:-1] == 'COLUMN', src
hrow_outs[dst]['columns'][n] = bits
with open(args.out_segbit, 'w') as f:
for dst in hrow_outs:
for gclk in range(GCLKS):
row = gclk % 8
column = int(gclk / 8)
print('{tile}.{dst}.CLK_HROW_R_CK_GCLK{gclk} {row_bits} {column_bits}'.format(
tile=tile,
dst=dst,
gclk=gclk,
row_bits=hrow_outs[dst]['rows'][row],
column_bits=hrow_outs[dst]['columns'][column],
), file=f)
if __name__ == "__main__":
main()