Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add combinatorial examples #531

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

kboronski-ant
Copy link
Collaborator

@kboronski-ant kboronski-ant commented Dec 8, 2022

This PR adds two combinatorial examples. One with 2000 LUTs (LUT4, LUT5 and LUT6),, 16 inputs and 16 outputs and another similar one, but with 3000 LUTs.

These examples have been generated with utils/generate_design.py script, which I also include in this PR.
The workflow used to generated these designs consists of the following steps:

  1. run utils/generate_design.py -c <number of luts> -I number of input ports> -o <number of output ports>
  2. run Vivado in tcl mode (vivado -mode tcl)
  3. Load the generated netlist:
Vivado% link_design -part <part name>
Vivado% source <path to tcl file generated with utils/generate_design.py>
  1. Export EDIF (must have the same name as top module which in this case is netlist_EMPTY - a default value)
Vivado% write_edif netlist_EMPTY.edif
  1. Constrain ports
Vivado% place_ports
Vivado% write_xdc <path to xdc> -no_fixed_only -type physical
  1. For the use with nextpnr-fpga-interchange, you can convert the EDIF to LogicalNetlist
    1. You will need a modified version of RapidWright to do that: EDIF -> LogicalNetlist converter Xilinx/RapidWright#589
    2. Invoke Rapidwright's EdifToLogicalNetlist class, which performs the conversion:
    ${RAPIDWRIGHT_PATH}/scripts/invoke_rapidwright.sh com.xilinx.rapidwright.interchange.EdifToLogicalNetlist <path to edif> <path to netlist>
    

NOTE 1: The constraint files have been manually edited to include IOSTANDARDs and allow Vivado to accept combinatorial loops.

NOTE 2: The designs include both .netlist and .edif files. Those should contain equivalent data. The .netlist files were created from the .edif netlists.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant