Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
16556 Discussions

22.1 pro: set_instance_assignment not accepting wildcard?

alexislms
Valued Contributor I
1,051 Views

Instead of doing:

set_instance_assignment -name IO_STANDARD "HSSI DIFFERENTIAL I/O" -to sfp0
set_instance_assignment -name IO_STANDARD "HSSI DIFFERENTIAL I/O" -to sfp1
set_instance_assignment -name IO_STANDARD "HSSI DIFFERENTIAL I/O" -to sfp2

 

I'd like to do:

set_instance_assignment -name IO_STANDARD "HSSI DIFFERENTIAL I/O" -to sfp*

 

But this doesn't work in either .sdc, .qsf, the IO_STANDARD isn't set in any of the sfp* ports/signals.

 

I read in the documentation, set_instance_assignment supports wildcard, what's wrong?

 

 

 

0 Kudos
1 Solution
sstrell
Honored Contributor III
999 Views

Actually, you don't have to do a full compilation, just Analysis & Elaboration.

But as mentioned, when you edit the .qsf manually and the design has not been compiled yet, when you use the wildcard, Quartus does not know about that object yet.

If you were to use the GUI instead, you always have to perform at least Analysis & Elaboration first so signals and objects appear in the Pin Planner or the Assignment Editor.  It's the same situation here.

View solution in original post

11 Replies
ShengN_Intel
Employee
1,037 Views

Hi,


The wildcard feature tested and works well in Quartus Pro v22.1. Have you do recompilation after making changes in .qsf file? After recompilation eventually will get something like below in .qsf file.

set_instance_assignment -name IO_STANDARD "HSSI DIFFERENTIAL I/O" -to sfp* -entity <your_entity_name>


Best Regards,

Sheng

p/s: If any answer from community or Intel support are helpful, please feel free to mark as solution and give Kudos.


0 Kudos
alexislms
Valued Contributor I
1,030 Views

Hi ShengN,

 

Tested, doesn't work:

 

1. .qsf:

alexislms_0-1653444595050.png

2. Open the project and the Pin Planner

alexislms_1-1653444619492.png

3. Close the project, change the .qsf, save

alexislms_2-1653444650266.png

4. Open the project, open Pin Planner:

alexislms_3-1653444705304.png

 

Quartus version:

alexislms_4-1653444744370.png

 

There is no compilation, it's even before synthesis.

 

Regards,

0 Kudos
ShengN_Intel
Employee
1,023 Views

Hi,


Then you have to open the project again and do compilation so Quartus can read the settings changes in .qsf file.


Best Regards,

Sheng

p/s: If any answer from community or Intel support are helpful, please feel free to mark as solution and give Kudos.


0 Kudos
alexislms
Valued Contributor I
1,018 Views

This has nothing to do with any compilation, it's a project setup step.
Also the .qsf is loaded when the project is opened, not at the compilation. (this is a .qsf not .sdc)

I can clearly see it by doing 1. and 2. after 4., the pin planner is still able to set the property without any compilation step.

 

Please raise a ticket to have this bug fixed.

 

Regards,

 

0 Kudos
ShengN_Intel
Employee
1,012 Views

Hi,

 

Sorry for confusion. I think there are some misunderstandings. After you make changes in .qsf file, you should see the settings loaded in Assignment Editor. However in order to make the settings appear in pin planner you have to do the compilation. Hopefully it helps answering your problem.

**Check the file below.

 

Best Regards,

Sheng

p/s: If any answer from community or Intel support are helpful, please feel free to mark as solution and give Kudos.

 

0 Kudos
sstrell
Honored Contributor III
1,000 Views

Actually, you don't have to do a full compilation, just Analysis & Elaboration.

But as mentioned, when you edit the .qsf manually and the design has not been compiled yet, when you use the wildcard, Quartus does not know about that object yet.

If you were to use the GUI instead, you always have to perform at least Analysis & Elaboration first so signals and objects appear in the Pin Planner or the Assignment Editor.  It's the same situation here.

alexislms
Valued Contributor I
990 Views

That's now clear, Quartus doesn't automatically detect the ports of the top. I was tricked by the Pin Planner showing the IO STD of the pins without running any compilation step.

I haven't tested to add a location assignment to a port that doesn't exist in the top but I guess it'd have given me errors only after a compilation step.

Thanks @sstrell !

And thanks @ShengN_Intel for the help!

0 Kudos
ShengN_Intel
Employee
983 Views

Thanks sstrell for clarification!

Since the issue addressed had been resolved. I'll now transition this thread to community support. If you have a new question, feel free to open a new thread to get the support from Intel experts.


0 Kudos
alexislms
Valued Contributor I
974 Views

@ShengN_Intel Sorry, I have one more question:

I want to keep Quartus away from my files. I still don't understand why HW vendors think it's a good idea to let the tool modifying the user's files.

I don't want to have anything I can store somewhere else in the .qsf. The pin locations with its constraints is a good example.

I come from Xilinx and Vivado accepts a tcl file containing pin assignments and constraints. I try that with Quartus, the set_location_assignment aren't detected...

Please tell me the way I can keep a single tcl/sdc file containing all the pins and their constraints in a single file that will never be modified by Quartus and loaded when I open the project.

0 Kudos
sstrell
Honored Contributor III
966 Views

You have to source the separate file from the .qsf:

source io_assignments.tcl

0 Kudos
ShengN_Intel
Employee
950 Views

Hi @alexislms ,

 

Sure. You can have the pins in external tcl files. Check out this: 

https://www.intel.com/content/www/us/en/docs/programmable/683143/21-3/entering-pin-assignments-with-tcl-commands.html 

 

There are a few methods for this:

1. Go to View -> Tcl Console then entering individual Tcl commands in the Tcl Console, or creating a .tcl script and typing source <my_tcl_script>.tcl

2. Go to Tools -> Tcl Scripts then plugging in the .tcl script.

3. Using command line quartus_sh -t <my_tcl_script>.tcl

4. Set global assignment in .qsf file like this set_global_assignment -name POST_FLOW_SCRIPT_FILE "quartus_sh:<tcl_file_name>.tcl" then compile the project.

 

** Can also go to Project -> Generate Tcl File for Project.

 

Best Regards,

Sheng

p/s: If any answer from community or Intel support are helpful, please feel free to mark as solution and give Kudos.

0 Kudos
Reply