2
\$\begingroup\$

On most porotype boards there is a smaller FPGA which does fit the design but cannot fit a lot of signal tap tap to aid in debugging. Thus, I got a few boards modified with the largest pin compatible FPGA I could find. The modified boards work.

The problem now is that when I open the Quartus project and change the device to a larger pin compatible FPGA, all the pinout is removed by Quartus and I have to start from scratch. One way to do is to save the pinout in a .tcl file and run it to bring back the pinout when the FPGA is changed in the Quartus project.

Now this all results in a tedious work flow where I am having to manually select the two different FPGA parts in Quartus GUI and then run the compilation manually twice to get the programming files for use by me and other team members for these two different type of prototype boards. This just wastes time that is better spent on other things.

I have not been able to find a way to explicitly tell Quartus to always compile project for two different FPGAs. In this case, ideally it could run synthesis once and then fitter twice to fit design into two different FPGA parts.

Now my question, how do I tell Quartus to compile the FPGA project for two different FPGA parts and thus generate programming sof file for two different FPGA parts? Is writing bash script and using command-line the only way to do this?

\$\endgroup\$
2
\$\begingroup\$

The simplest option to do this in Quartus is to use "Project Revisions". You can create a new revision of the project which uses the other device, and that way to switch between the devices you simply need to switch revisions which will not affect any of your assignments.

From the Quartus documentation on revisions:

A revision is a group of settings and assignments for the design files in a design. You can use different revisions to determine how different settings and assignments affect the results of processing the design.

For example, you can use several revisions to compile a design for the same device but with different default logic options and timing analysis settings. Or, you can use two revisions to compile a design for two different devices while keeping all other settings and assignments constant.

When using the command line tools (e.g. quartus_cdb, etc.), one of the command line arguments you pass in is the revision name, so you can compile different revisions from the command line by simply changing the command line argument.

\$\endgroup\$
1
\$\begingroup\$

I don't think you can do that directly in Quartus. What I would recommend doing is automating the project creation and building, so you can simply have one script for each target device and the project for each can be created from a clean slate and configured identically, except for the selected target device. I have used makefiles for this, but it may also be possible to do the same thing with tcl.

\$\endgroup\$
2
  • \$\begingroup\$ What about the comment from Tom Carpenter? \$\endgroup\$
    – quantum231
    Jul 23 at 18:08
  • \$\begingroup\$ I have never heard of that feature before, probably because I automate the project creation and build and spend as little time in the GUI as possible. If that feature does what you want, then by all means use it. \$\endgroup\$ Jul 23 at 18:11
1
\$\begingroup\$

There is a feature called "Migration Devices" which allows you to compile for multiple target devices, but that generates a single bitstream that can be loaded on either device. You have a single pin definition and it is checked that this is compatible with all devices (some of the larger variants replace I/O pins with additional supply pins).

You can select this in the device selection dialog.

\$\endgroup\$
1
  • \$\begingroup\$ As far as I'm aware, the migration devices option does not produce a bitstream compatible with multiple devices. My understanding was that it simply checks that any pin assignments you make are compatible with all migration devices (i.e. you aren't using a pin that would not be available on a smaller device). \$\endgroup\$ Oct 1 at 8:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.