Priorities with Multiple Wildcard Logic Lock Region Membership Assignments
While the relative priority of node assignments and entity assignments is clear (node assignments take precedence), the relative priority between multiple wildcard assignments can be ambiguous.
Consider the node a:inst1|mynode .
An assignment made to a:inst1 applies to the above node, same as an assignment made to a:inst1|mynode; however, the a:inst1|mynode assignment takes priority, because it is the more specific assignment.
If you make a wildcard assignment to a*, the order of precedence is as follows:
- Highest priority— a:inst1|mynode
- Second priority— a*
- Lowest priority— a:inst1
However, if you make a second wildcard assignment, * mynode, the intended order of priority is ambiguous, as the two wildcard assignments seem to have equal priority:
- Highest priority— a:inst1|mynode
- Second priority— a* or * mynode
- Lowest priority— a:inst1
The Intel® Quartus® Prime software manages such potential conflicts by applying the Logic Lock Region Priority parameter when you create wildcard or path-based assignments. The Logic Lock Region Priority parameter automatically assigns a number, establishing the wildcard or path-based assignment's relative priority. The Intel® Quartus® Prime software automatically assigns the highest priority to the most recently created assignment.
In the example, * mynode takes precedence over a*, resulting in the following order of precedence:
- Highest priority— a:inst1|mynode
- Second priority— * mynode
- Third priority— a*
- Lowest priority— a:inst1
The Intel® Quartus® Prime software inserts the Logic Lock Region Priority parameter when you create assignments with the set_logiclock_contents Tcl command, with the Logic Lock Region Properties dialog box, or by dragging a resource into a Logic Lock region.
The Intel® Quartus® Prime software does not insert the Logic Lock Region Priority parameter for assignments created with the Assignment Editor.
Do not apply Logic Lock Region Priority parameters manually, such as with a set_instance_assignment statement.