Constraints Editor GuideChapter 4: Using the Constraints Editor
Creating and Modifying Constraints
This section tells you how to create and modify constraints from the Global tab window, from the Ports tab window, and from the Advanced tab window.
Note: When a constraint is created or modified, it appears syntactically in the Editable Constraints window the same way it appears in the UCF (refer to the UCF Syntax appendix). Constraints can be modified by double-clicking on the constraint syntax in the Editable Constraints window.
The following sections explain how to create and modify constraints.
From the Global Tab Window
Global constraints specify timing requirements for all inputs/outputs that are clocked by the clock net you identify. Constraints created from the Ports tab window and the Advanced tab window take precedence over ones created from the Global tab window.
You can create and modify the following constraints from the Global tab window.
On the Global tab window, the Constraints Editor allows you to modify existing constraints directly on the grid (without opening a dialog box).
To modify a constraint directly on the grid
- Position the cursor in the grid row and column containing the constraint and click the left mouse button.
- Highlight the value and enter a new one.
- Change the focus by moving the cursor to another row or column and click the left mouse button.
Note: To change a time unit to anything but nanoseconds, you must use a dialog box.
The following sections describe creating and modifying constraints using dialog boxes.
Clock Period
To define a clock period constraint, open the Global tab window (see the Global Tab Window figure). Follow the steps below.
- In the Period column and in the row associated with the appropriate clock net name, double-click the left mouse button to open the Clock Period dialog box.
Note: An alternate way to invoke the Clock Period dialog box is to right click anywhere in the grid row containing the desired clock net name, then select Period from the pop-up window.
By default, a timing specification name for the clock period is displayed in the TIMESPEC Name text box. The name consists of the characters TS and an identifier in the form of the clock net name; for example, TS_CLK1_IN as shown in the figure above.
Note: You are allowed to change the timespec name, but the name must begin with the characters TS. The name that you selected from the Clock Net Name column is displayed in the Clock Net Name box.
- In the Clock Signal Definition field, you must select either Specific Time or the Relative to other PERIOD TIMESPEC. Specific Time indicates an explicit time for clock period. Relative to other PERIOD TIMESPEC indicates a time that is relative to a period specified in another timespec.
If you select Specific Time, provide the following information.
- Fill in a time in the Time box and select a time unit from the Units pull-down list.
- Click on either Start HIGH or Start LOW, depending on whether you want the initial clock state to be high or low.
- Fill in a time in the Time HIGH (or Time LOW) box and select a time unit from the Units pull-down list.
- If you select Relative to other PERIOD TIMESPEC, provide the following information.
- Select a reference timespec from the pull-down list.
- Click on either Multiply by or Divide by and provide a value in the Factor box.
- Click OK.
Pad to Setup
Pad to Setup creates a constraint that allows you to specify the timing relationship between an external clock and data at the pins of a device, specifically the arrival of data before the arrival of a clock edge. The Global tab window generates a dialog box from which you can specify a pad to setup requirement for all inputs that are clocked by the net you identify.
- In the Pad to Setup column and in the row associated with the appropriate clock net name, double-click the left mouse button to open the Pad to Setup dialog box.
Note: An alternate way to invoke the Pad to Setup dialog box is to right click anywhere in the grid row containing the desired clock net name, then click Pad to Setup from the pop-up window.
- Enter a value for time in the Time Requirement text box and the desired unit from the Units pull-down list.
Note: The Relative to Clock Net field contains the name that you selected in Step 1. You are not allowed to change this field.
- Click OK.
Clock to Pad
This constraint specifies the timing relationship between an external clock and data at the pins of a device, specifically the availability of the data after the arrival of the clock. The Global tab window generates a dialog box from which you can specify a clock to pad requirement for all output that are clocked by the clock net you identify.
- In the Clock to Pad column and in the row associated with the appropriate clock net name, double-click the left mouse button to open the Clock to Pad dialog box.
Note: An alternate way to invoke the Clock to Pad dialog box is to right click anywhere in the grid row containing the desired clock net name, then click Clock to Pad from the pop-up window.
- Enter a time requirement in the Time Requirement text box and the desired unit from the Units pull-down list.
Note: The Relative to Clock Pad Net field contains the name that you selected in Step 1. You are not allowed to change this field.
- Click OK.
Pad to Pad
This constraint specifies a maximum allowable time for the data to enter the chip, travel through logic and routing, and leave the chip.
- If you wish to change the default time spec name, replace "P2P" with the name of your choice. Remember that all time specs must begin with the characters TS.
- Enter a time value in the Time text box and select the desired unit from the Units pull-down list.
- Click OK.
From the Ports Tab Window
Constraints created from the Ports tab window apply only to specified ports. They override constraints created from the Global and Advanced tab windows. See the Using Timing Constraints chapter in the Development System Reference Guide for constraints precedence.
You can create and modify the following constraints from the Ports tab window.
On the Ports tab window, the Constraints Editor allows you to modify I/O Configuration Options directly on the grid (without opening a dialog box).
To modify a constraint directly on the grid, place the cursor in the grid row and column containing the constraint, click the down arrow to open a pull-down menu and drag the cursor to your selection.
The following sections describe creating and modifying constraints using dialog boxes.
Location
This constraint locks a user-defined port to a specific device pin.
- In the Location column and in the row associated with the Port Name, double-click the left mouse button to open the Location dialog box.
Note: An alternate way to invoke the Location dialog box is to right click anywhere in the grid row containing the desired port name, then click Location from the pop-up window.
- In the Location text box, enter a valid pin name for the part you are using.
- Click OK.
Pad to Setup
Creating a pad to setup constraint from the Ports tab window is similar to creating one from the Global tab window, except it is for a specific port. The Ports tab window generates a dialog box with which you can specify a time requirement for individual pad nets (as opposed to the Global tab window where you are specifying all inputs clocked by the clock pad net you select). To create this constraint, follow the steps below.
- In the Pad to Setup column and in the row associated with the appropriate port name, double-click the left mouse button to open the Pad to Setup dialog box.
Note: An alternate way to invoke the Pad to Setup dialog box is to right click anywhere in the grid row containing the desired port name, then click Pad to Setup from the pop-up window.
The port name that you selected from the Ports tab window appears in the Pad Net box.
- Enter a time requirement in the Time Requirement text box and the desired unit from the Units pull-down list.
- Select the clock that clocks this input from the Relative to Clock Net pull-down list.
Note: If you fail to specify the correct clock, NGDBuild (translation) will error out.
- Click OK.
Clock to Pad
Creating a clock to pad constraint from the Ports tab window is similar to creating one from the Global tab window, except it is for a specific port. The Ports tab window generates a dialog box with which you can specify a time requirement for individual pad nets (as opposed to the Global tab window where you are specifying all output clocked by the clock pad net you select). To create this constraint, follow the steps below.
- In the Clock to Pad column and in the row associated with the appropriate port name, double-click the left mouse button to open the Clock to Pad dialog box.
Note: An alternate way to invoke the Clock to Pad dialog box is to right click anywhere in the grid row containing the desired port name, then click Clock to Pad from the pop-up window.
- Enter a time requirement in the Time Requirement text box and the desired unit from the Units pull-down list.
- Select the clock that clocks this input from the Relative to Clock Net pull-down list.
Note: In the next step, if you fail to specify the correct clock, NGDBuild (translation) will error out.
- Click OK.
I/O Configuration Options
Clicking the I/O Configuration Options box adds a number of columns to the grid on the Ports tab window. There are two ways to create I/O configuration constraints.The procedures are the same for all options.
- Place the cursor anywhere in the row associated with the port name and click the right mouse button. In the pop-up window, rest the cursor on the desired option name, then make your selection from the sub-menu.
- Click the left mouse button in any option column (options are listed below). Click the down arrow and make your selection from the sub-menu.
FAST/SLOW This option determines the output slew rate (transition time) for output and bidirectional I/O signals. A fast slew rate has a quicker transition time and a slow rate a longer one. Limiting the slew rate reduces output switching surges in a device.
PULLUP/PULLDOWN This option places a pullup or pulldown resistor on the selected port. KEEPER, an option for Virtex devices only, keeps the input level of tri-state buffers on a pad net. For example, if a logic 1 is driven onto the net and the net driver is tri-stated, KEEPER drives a week/resistive 1 onto the pad net.
DRIVE This option determines signal strength in milli-amps.
IOSTANDARD (Virtex devices only) This option specifies an input/output standard; for example, low voltage TTL (LVTTL), low voltage CMOS (LVCMOS2), and so forth.
Prohibit I/O Locations
This constraint disallows the use of an I/O site by PAR (Place and Route) and FPGA Editor.
- Click Prohibit I/O Locations to open the Prohibit I/O Locations dialog box.
- In the I/O Locations text box enter a valid pin name for the part you are using.
- Click Add to add the pin name to the Prohibit I/O Locations box.
- Click OK.
Pad Grouping
This field enables you to create pad groups, allowing you to apply a constraint to the group rather than applying it separately to a number of pads.
- Select the members of the pad group from the Port Name column on the grid.
- Type the name of the group in the Pad Groups box.
- Click Create Group.
- To select a pad group, click on the group name in the box next to the Select Group button, then click Select Group.
From the Advanced Tab Window
Constraints created from the Advanced window take precedence over ones created from the Global window.When there is contention between the Ports window and the Advanced window, the constraint created from the Ports tab window takes precedence.
You can create and modify the following constraints from the Advanced tab window.
Group Elements Associated by Nets (TNM_NET)
A Time Name (TNM_Net) is an attribute used to identify elements that compose a group. This group can be used in a timing specification. A Time Name can be created using elements associated by nets (All Nets, Clock Nets, and Clock Enable Nets). If you use Clock Nets, all valid elements fed by all paths that fan forward from the net belong to the group. Forward tracing stops at any RAM, PAD, FF, or LATCH.
- Click Create next to "Group elements associated by Nets (TNM_NET)" to open the Time Name dialog box.
- In the Time Name text box, enter the new time name. The name can consist of any combination of letters, numbers, or underscores. Keep the name short for convenience and clarity.
- Make a selection from the Design Element Type pull-down list.
- (Optional) If you want to limit the number of selections in the Available box, use the Filter text box. For example, if you want as your time name targets only nets containing the string "counter," type counter in the Filter box. Names are not case-sensitive. (See the above figure).
- In the Available list box, click on the net names that you want in the time name targets.
- To move a selected element from the Available list into the Time Name Targets list, click Add (or to add all elements, Add All). Click Remove to remove an element from the Time Name Targets list (or Remove All to remove all elements).
Group Elements by Instance Name (TNM)
This constraint creates groups consisting of instance names of an element. Elements are FFs, Pads, RAMs, and Latches.
- Click Create next to "Group elements by instance name (TNM)" to open the Time Name dialog box (see the Time Group Dialog Box figure.
- Enter a name in the Time Name text box. The name can consist of any combination of letters, numbers, or underscores. Keep the name short for convenience and clarity.
- Select a design element from the Design Element Type pull-down list.
- (Optional) If you want to limit the number of selections in the Available box, use the Filter text box. For example, if you want as your time name targets only input pads containing the string "test " type test in the Filter box. Names are not case-sensitive. See the Time Name Dialog Box figure as an example.
- From the Available list, select the instance names for the group.
- To move a selected element from the Available list into the Time Name Targets list, click Add (or to add all elements, Add All).
- When you have completed your selections, click OK.
Group Elements by Element Output Net Name, Schematic Users (TIMEGRP)
Time groups are common elements to which a timing constraint applies. This time group is made up of an element's output net names. Elements are FFs, Pads, Input, Output, Bi-directional, Tri-stated, RAMs, or Latches.
Note: This constraint applies only to schematic entry designs.
- Click Create next to "Group elements by element output net name, schematic users (TIMEGRP)" to open the Time Group dialog box.
- In the Time Group Name text box, enter a name for the timing group.The name can consist of any combination of letters, numbers, or underscores. Keep the name short for convenience and clarity.
- Make a selection from the Design Element Type pull-down list.
- (Optional) If you want to limit the number of selections in the Available box, use the Filter text box. For example, if you want as your time name targets only pads containing the string "ce_test," type ce_test in the Filter box. Names are not case-sensitive. See the above figure as an example.
- In the Available pull-down list, click on the output net names that you wish to be members of the time group.
- To move a selected element from the Available list into the Time Name Targets list, click Add (or to add all elements, Add All). Click Remove to remove an element from the Time Name Targets list (or to remove all elements, Remove.)
- After you have placed all of the desired members in the Time Group Members list, click OK.
Timing THRU Points (TPTHRU)
This constraint applies when it is convenient to define intermediate points on a path to which a specification applies. TPTHRU identifies the intermediate point(s).
- Click Create next to "Timing THRU Points (TPTHRU) to open the Timing THRU Point dialog box.
- Enter a name in the TPTHRU Name text box. The name can consist of any combination of letters, numbers, or underscores. Keep the name short for convenience and clarity.
- Select All Nets or TBUFs from the Design Element Type pull-down list.
- (Optional) If you want to limit the number of selections in the Available box, use the Filter text box. For example, if you want as your TPTHRU target members only nets containing the string "clk," type clk in the Filter box. Names are not case-sensitive. See the above figure as an example.
- In the Available list box, select the names of the nets or TBUFs that will identify the intermediate points on your path.
- To move a selected element from the Available list into the TPTHRU Targets list, click Add (or to add all elements, Add All).
- When you have completed your selections, click OK.
Pad to Setup Requirement(s) for Groups of Pads and/or Registers (OFFSET IN BEFORE)
Creating a pad to setup constraint from the Advanced tab window is similar to creating one from the Global or Ports tab windows. The major difference is that with the Advanced tab window you are dealing with groups of pads or registers.
The Advanced tab window opens a dialog box from which you can specify a pad group, register time group (or both), and a time requirement relative to a specified clock net. The register time group allows you to limit the paths.
To create a pad to setup constraint from the Advanced tab window, follow the steps below.
- Click Specify next to "Pad to Setup Requirement(s) for Groups of Pads and/or Registers (OFFSET IN BEFORE)" to open the Pad to Setup dialog box.
- Select a pad group from the Pad Group list.
- Enter a time requirement in the Time Requirement text box and the desired unit from the Units pull-down list.
- Select the clock that clocks this input from the Relative to Clock Pad Net pull-down list.
- (Optional) Select a register timegroup from the Register Timegroup pull-down window. Make sure that this window is clear if you don't want a register timegroup.
- Click OK.
Clock to Pad Requirement(s) for Groups of Pads and/or Registers (OFFSET OUT AFTER)
Creating a clock to pad constraint from the Advanced tab window is similar to creating one from the Global or Ports tab windows. The major difference is that with the Advanced tab window you are dealing with groups of pads or registers.
The Advanced tab window opens a dialog box from which you can specify a pad group, register time group (or both) and a time requirement relative to a specified clock net. The register time group allows you to limit the paths.
To create a clock to pad constraint from the Advanced tab window, follow the steps below.
- Click Specify next to "Clock to Pad Requirement(s) for Groups of Pads and/or Registers (OFFSET OUT AFTER)" to open the Clock to Pad dialog box.
- Select a pad group from the Pad Group pull-down list. (Pad Group identifies a predefined group of pads.)
- Enter a time requirement in the Time Requirement text box and the desired unit from the pull-down list.
- Select the clock that clocks this input from the Relative to Clock Net pull-down list.
- (Optional) Select a register timegroup from the Register Timegroup pull-down window. Make sure that this window is clear if you don't want a register timegroup.
- Click OK.
Slow/Fast Path Exceptions (FROM TO)
This generates the FROM/THRU/TO dialog box, which allows you to specify an explicit maximum delay between groups of elements and through intermediate points.
- Click Specify next to "Slow/Fast Path Exceptions (FROM TO)" to open the FROM/THRU/TO dialog box.
- In the Time Spec Name text box enter a time specification name. The name should be entered in the form TSid, where id is a unique name. The name can consist of letters, numbers, and the underscore character (_), but it must be preceded by the letters TS.
- In the Groups field, make a selection from the From Group and To Group pull-down lists.
- If applicable, make a selection from the THRU Points list.
- Enter a value for time in the Time text box and select the appropriate unit from the Units pull-down list. No other entries for this constraint are required on this dialog box.
- Click OK.
Multicycle Paths (FROM TO)
This constraint allows you to specify a maximum delay (between groups of elements and through intermediate points) that is relative to another timing specification.
- Click Specify next to "Multicycle Paths (FROM TO)" to open the FROM/THRU/TO dialog box.
- In the Time Spec Name text box enter a time specification name. The name should be entered in the form TSid, where id is a unique name. The name can consist of letters, numbers, and the underscore character (_) but it must be preceded by the letters TS.
- In the Groups field, make a selection from the From Group and To Group pull-down lists.
- If applicable, make a selection from the THRU Points (optional) list.
- Select a reference time specification from the Reference TIMESPEC pull-down list.
- Click Multiply by or Divide by.
- Enter a value in the Factor text box.
- Click OK.
False Paths (FROM TO TIG)
This constraint allows you to specify paths between groups (and intermediate points between those groups) as ones that will be ignored by timing.
- Click Specify next to "False Paths (FROM TO TIG)" to open the FROM/THRU/TO dialog box.
- In the Time Spec Name text box enter a time specification name. The name should be entered in the form TSid, where id is a unique name. The name can consist of letters, numbers, and the underscore character but it must be preceded by the letters TS.
- In the Groups field, make a selection from the From Group and To Group pull-down lists.
- If applicable, make a selection from the THRU Points (optional) list.
- Click OK.
False Paths by Nets (NET TIG)
This constraint allows you to mark nets used in timing specifications as ones that will be ignored by timing. To create this constraint, follow the steps below.
- Click Specify next to "False Paths by Nets (Net TIG") to open the Timing Ignore dialog box.
- From the Net pull-down list, select the name of the net that you wish to be ignored for timing purposes.
- From the TIMESPECs Available pull-down list, select the desired timespecs that contain the net you selected in step 2. If you do not select a timespec, the constraint will apply to all the applicable timepsecs in the list.
- Click Add to add a selected time spec to the Ignored TIMESPECs box.
- Click OK.
Prorating Voltage
This is the operating voltage for the chip. Voltage ranges vary from device to device.
Note: Prorating is not supported for all families and is not intended for military or industrial use. The supported ranges are commercial ranges only.
- Click Specify next to "Voltage."
- Enter a value for your device.
Note: If you specify a voltage that is out of range for the part, you will receive a message giving you the acceptable range.
Prorating Temperature
This is the junction temperature for the device. This varies from device to device.
Note: Prorating is not supported for all families and is not intended for military or industrial use. The supported ranges are commercial ranges only.Click Specify next to "Temperature."
Enter a value in the Celsius text box and click OK.
Note: If you specify a temperature that is out of range for the part, you will receive a message giving you the acceptable range.
From the Constraints Window
You can open a dialog box to modify a constraint by double clicking on the constraint syntax that appears in the Editable Constraints window. See the Constraints Window and Output Window figure.