2.6.4. Using Entity-bound SDC Files
Normally, timing constraints that you specify in an .sdc file apply globally in your project, rather than to any particular design entity. However, you can use the Properties dialog box or SDC_ENTITY_FILE assignment to bind an .sdc file to a design entity. Entity-bound constraints make timing constraints more portable, and allow you to specify more targeted constraints.
- Timing constraint portability—all design partitions that contain the assigned entity automatically include entity-bound .sdc constraints. You can optionally specify export of these constraints with a partition you export with the Include entity-bound SDC files (--include_sdc_entity_in_partition) option. This allows you to hand-off synthesized or final design blocks or IP packaged with timing constraints.
- Timing constraint precision—Apply timing constraints only to specific entities rather than globally, simplifying constraint entry. This method avoids unintended side effects of global constraints that apply to more than you intend, especially when using wildcard (*) timing constraints. By default, entity-bound .sdc constraints apply automatically to all instances of the assigned entity in the project. Alternatively, you can apply all of the constraints globally by default, and choose which of its constraints target only the current entity, by using the get_current_instance command, as Entity-bound Constraint Scope describes.
Follow these steps to create or modify an entity-bound .sdc file:
- Create an .sdc file, click Project > Add/Remove files in project, and add the .sdc file. The .sdc file appears in the Files list.
- In the Files list, select the .sdc file and click the Properties button.
- For Type, select Synopsys Design Constraints File with entity binding.
Figure 86. Entity Rebinding
- For Entity, select the entity you want to bind to the .sdc.
- Click OK.
Alternatively, add the following assignment to the .qsf to bind the entity you specify to the .sdc file you specify:
QSF Assignment Syntax:
set_instance_assignment -entity <entity_name> -name \
SDC_ENTITY_FILE <sdc_file_name> [-no_sdc_promotion] [–no_auto_inst_discovery]
For an SDC_ENTITY_FILE assignment, you must specify a -library parameter that matches the -library argument of the referenced entity. If you specify no library, the software uses the default altera_work library.
Both the entity and the library must match the target RTL module for the SDC_ENTITY_FILE to be applied.
The following options apply to the SDC_ENTITY_FILE assignment:
- No options—enable automatic constraint scoping. The Timing Analyzer reads in entity .sdc files once for each bound instance, and get_current_instance returns a value. The collection filters (except for clock and top-level port filters) get prepended with the hierarchy path of the current instance (that is, the return value of get_current_instance).
- -no_sdc_promotion—turns on manual promotion. The Timing Analyzer reads in entity .sdc files once for each bound instance, and get_current_instance returns a value. The Timing Analyzer does not modify the collection filters.
- -no_sdc_promotion –no_auto_inst_discovery—turns off constraint scoping. The Timing Analyzer reads in each entity .sdc file once, and does not modify the collection filters. get_current_instance returns an empty string.