chipsalliance / f4pga-xc-fasm2bels

Library to convert a FASM file into BELs importable into Vivado.
Apache License 2.0
10 stars 12 forks source link

Assertion error on Symbiflow-produced `.fasm` file #76

Open gergoerdi opened 2 years ago

gergoerdi commented 2 years ago

The attached Top.fasm file was created from https://github.com/gergoerdi/symbiflow-sevensegment-bug/tree/e73584b7b35e8cfa7d0f2a21f1fd7f60285d7bd9 as input. fasm2bels version 6630e43652ff8c6aba335a939b834a083d864eaa fails to process it with an assertion error:

$ python3 -m fasm2bels --fasm_file _build/Top.fasm --db_root ~/.conda/envs/xc7/share/symbiflow/prjxray-db/artix7/  --part xc7a50tcsg324-1 --connection_database ~/prog/fpga/symbiflow/symbiflow-xc-fasm2bels/channels.s3db 

Traceback (most recent call last):
  File "runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "fasm2bels-0.0.1-py3.7.egg/fasm2bels/__main__.py", line 15, in <module>
    main()
  File "fasm2bels-0.0.1-py3.7.egg/fasm2bels/fasm2bels.py", line 475, in main
    process_tile(top, tile, tile_features)
  File "fasm2bels-0.0.1-py3.7.egg/fasm2bels/fasm2bels.py", line 139, in process_tile
    PROCESS_TILE[tile_type](top.conn, top, tile, tile_features)
  File "fasm2bels-0.0.1-py3.7.egg/fasm2bels/models/clb_models.py", line 2079, in process_clb
    process_slice(top, slices[s])
  File "fasm2bels-0.0.1-py3.7.egg/fasm2bels/models/clb_models.py", line 1840, in process_slice
    assert False
AssertionError
gergoerdi commented 2 years ago

At the offending point, site.features is:

{'BLUT.INIT', 'D5FF.ZINI', 'C5FF.ZRST', 'CFFMUX.O5', 'COUTMUX.C5Q', 
'D5FFMUX.IN_B', 'CLUT.INIT', 'CFF.ZINI', 'BOUTMUX.O6', 'DOUTMUX.D5Q', 
'FFSYNC', 'C5FFMUX.IN_B', 'ALUT.INIT', 'DFF.ZRST', 'SRUSEDMUX', 'CFF.ZRST',
'DLUT.INIT', 'DFF.ZINI', 'DFFMUX.O5', 'AOUTMUX.O6', 'C5FF.ZINI', 'D5FF.ZRST'}
gergoerdi commented 2 years ago

Simplified Top.fasm.gz

{'CLUT.INIT', 'D5FFMUX.IN_B', 'AOUTMUX.O6', 'DLUT.INIT', 'BLUT.INIT', 'BFFMUX.BX', 'CFFMUX.O5',
'BFF.ZRST', 'COUTMUX.C5Q', 'C5FF.ZINI', 'BFF.ZINI', 'C5FFMUX.IN_B', 'BOUTMUX.O5', 'D5FF.ZINI',
'DFF.ZINI', 'CFF.ZINI', 'DOUTMUX.D5Q', 'DFF.ZRST', 'FFSYNC', 'C5FF.ZRST', 'DFFMUX.O5', 
'CFF.ZRST', 'ALUT.INIT', 'D5FF.ZRST'}
gergoerdi commented 2 years ago

Even further simplified Top.fasm.gz

{'CLUT.INIT', 'BLUT.INIT', 'ALUT.INIT', 'BOUTMUX.O6', 'DLUT.INIT', 'COUTMUX.O6',
'D5FFMUX.IN_A', 'CEUSEDMUX', 'D5FF.ZINI', 'FFSYNC', 'D5FF.ZRST', 'DOUTMUX.D5Q',
'AOUTMUX.O6'}