Replies: 2 comments 10 replies
-
We have run the design on Xilinx FPGA before fabrication. I believe you treat the eFPGA as a normal RTL design and synthesise it with Vivado with all the usual Xilinx flow. I have not done it myself, @IAmMarcelJung will have a better idea. |
Beta Was this translation helpful? Give feedback.
-
Hi @Guha37, what is described there as "Emulation" in this case means that the Bitstream is hard-annotated to the Fabric, essentially resulting in an FPGA that is "configured" during synthesis/implementation and cannot be configured at runtime (so technically not an FPGA anymore). You can read a bit more about it in #219. As you mentioned, you want to do an actual emulation on a commercial FPGA and as Kelvin said, this can be done by just using the generated RTL (directories Sidenote: I also tried it using open source tools (Yosys, nextpnr, openxc7), but I was not successful since nextpnr-xilinx could not place LDCE cells. If you want to give it a try, I would like to here how it went! Since the design by definition results in many combinatorial loops, I had to add the following constraints (not guaranteed to be optimal/perfect, but works for me): Synthesis & Implementation (not sure if its actually needed for both):set_property ALLOW_COMBINATORIAL_LOOPS true [get_nets -hierarchical -filter {NAME =~ *BEG*}] Implementation only:set_disable_timing [get_pins -hierarchical *Q_reg*]
set_disable_timing [get_pins -hierarchical *inferred_i_1__*]
set_disable_timing [get_pins -filter {REF_PIN_NAME =~ "*BEG*"} -of_objects [get_cells -hierarchical -quiet -filter {NAME =~ "*switch_matrix*"}]] I would also advise to set all tiles as Out-of-Context modules to reduce the runtime. Be aware that this needs a good amount of RAM (10-16GiB) if you run them in parallel. Then you have to instantiate For uploading the FABulous bitstream to the Fabric running on the FPGA the most practical way is to use a USB serial adapter and e.g. create a small python script to just transmit the bitstream. Make sure to use the correct baudrate! The current setting in There also is this, which contains some software to upload a bitstream, but its still WIP and a bit broken. To summarize, you have three flows: One for generating the fabric using FABulous, one for creating a bitstream for a commercial FPGA using e.g. Vivado and one for generating the bitstream for the emulated FABulous fabric FABulous, although the latter is also run when using the I hope this helps a bit! If you have more questions, always feel free to ask :) |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello,
I came across the emulation setup webpage, which mentions that the bitstream for Verilog emulation is generated. I’d like to confirm whether the emulation is performed on a commercially available FPGA and could you provide any recommendations on which FPGA would be suitable for this purpose?
Moreover, my understanding is that for programming an FPGA, the bitstream must also include IO constraints specific to the target FPGA. Could you clarify how to incorporate these constraints into the bitstream?
Any guidance on the tool and procedure to be followed to incorporate these constraints into the bitstream would be greatly appreciated.
Thanks!
Beta Was this translation helpful? Give feedback.
All reactions