blob: 5c8dda7f6b82ab46462cbe6b759912754aca52e0 [file] [log] [blame]
import pytrellis
"""
Database copy utilities
This is used where there are several tiles with different types but the same or similar bit databases - such as all the
CIB tiles, some IO tiles, etc.
"""
def dbcopy(family, device, source, dest, copy_muxes=True, copy_words=True, copy_enums=True, copy_conns=True):
"""
Copy the bit database from one tile type to another
:param family: database family
:param device: database device
:param source: tiletype to copy from
:param dest: tiletype to copy to
:param copy_muxes: include muxes in copy
:param copy_words: include settings words in copy
:param copy_enums: include settings enums in copy
:param copy_conns: include fixed connections in copy
"""
srcdb = pytrellis.get_tile_bitdata(
pytrellis.TileLocator(family, device, source))
dstdb = pytrellis.get_tile_bitdata(
pytrellis.TileLocator(family, device, dest))
if copy_muxes:
sinks = srcdb.get_sinks()
for sink in sinks:
mux = srcdb.get_mux_data_for_sink(sink)
for src in mux.get_sources():
dstdb.add_mux_arc(mux.arcs[src])
if copy_words:
cwords = srcdb.get_settings_words()
for cword in cwords:
wd = srcdb.get_data_for_setword(cword)
dstdb.add_setting_word(wd)
if copy_enums:
cenums = srcdb.get_settings_enums()
for cenum in cenums:
ed = srcdb.get_data_for_enum(cenum)
dstdb.add_setting_enum(ed)
if copy_conns:
fcs = srcdb.get_fixed_conns()
for conn in fcs:
dstdb.add_fixed_conn(conn)