mirror of https://github.com/openXC7/prjxray.git
Add support for non-canonical sorted output.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
This commit is contained in:
parent
f7c6f76bb3
commit
310d197b8e
|
|
@ -96,3 +96,10 @@ class Grid(object):
|
|||
|
||||
def get_segment_map(self):
|
||||
return segment_map.SegmentMap(self)
|
||||
|
||||
def tile_key(self, tilename):
|
||||
gridinfo = self.gridinfo_at_tilename(tilename)
|
||||
loc = self.loc_of_tilename(tilename)
|
||||
tile_type = gridinfo.tile_type
|
||||
|
||||
return (tile_type, loc.grid_x, -loc.grid_y)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,8 @@ Take bitstream .bit files and decode them to FASM.
|
|||
|
||||
import os
|
||||
import fasm
|
||||
from prjxray import db
|
||||
import fasm.output
|
||||
from prjxray.db import Database
|
||||
from prjxray import fasm_disassembler
|
||||
from prjxray import bitstream
|
||||
import subprocess
|
||||
|
|
@ -26,15 +27,39 @@ def bit_to_bits(bitread, part_yaml, bit_file, bits_file, frame_range=None):
|
|||
|
||||
|
||||
def bits_to_fasm(db_root, bits_file, verbose, canonical):
|
||||
disassembler = fasm_disassembler.FasmDisassembler(db.Database(db_root))
|
||||
db = Database(db_root)
|
||||
grid = db.grid()
|
||||
disassembler = fasm_disassembler.FasmDisassembler(db)
|
||||
|
||||
with open(bits_file) as f:
|
||||
bitdata = bitstream.load_bitdata(f)
|
||||
|
||||
def is_zero_feature(feature):
|
||||
parts = feature.split('.')
|
||||
tile = parts[0]
|
||||
gridinfo = grid.gridinfo_at_tilename(tile)
|
||||
feature = '.'.join(parts[1:])
|
||||
|
||||
db_k = '%s.%s' % (gridinfo.tile_type, feature)
|
||||
segbits = db.get_tile_segbits(gridinfo.tile_type)
|
||||
any_bits = False
|
||||
for bit in segbits.feature_to_bits(db_k):
|
||||
if bit.isset:
|
||||
any_bits = True
|
||||
|
||||
return not any_bits
|
||||
|
||||
model = fasm.output.merge_and_sort(
|
||||
disassembler.find_features_in_bitstream(bitdata, verbose=verbose),
|
||||
zero_function=is_zero_feature,
|
||||
sort_key=grid.tile_key,
|
||||
)
|
||||
|
||||
print(
|
||||
fasm.fasm_tuple_to_string(
|
||||
disassembler.find_features_in_bitstream(bitdata, verbose=verbose),
|
||||
canonical=canonical))
|
||||
model,
|
||||
canonical=canonical),
|
||||
end='')
|
||||
|
||||
|
||||
def main():
|
||||
|
|
|
|||
Loading…
Reference in New Issue