Quartus® Prime Standard Edition User Guide: Design Compilation

ID 683283
Date 10/22/2021
Document Table of Contents

2.7.1. Creating an .sdc File with Project-Wide Constraints

The .sdc with project-wide constraints for the separate Quartus® Prime project should contain all constraints that are not completely localized to the partition. The .sdc should be maintained by the project lead. The project lead must ensure that these timing constraints are delivered to the individual partition owners and that they are syntactically correct for each of the separate Quartus® Prime projects. This communication can be challenging when the design is in flux and hierarchies change. The project lead can use design partition scripts to automatically pass some of these constraints to the separate Quartus® Prime projects.

The .sdc with project-wide constraints is used in the partition, but is not exported back to the top-level design. The partition designer should not modify this file. If changes are necessary, they should be communicated to the project lead, who can then update the SDC constraints and distribute new files to all partition designers as required.

The .sdc should include clock creation and clock constraints for any clock used by more than one partition. These constraints are particularly important when working with complex clocking structures, such as the following:

  • Cascaded clock multiplexers
  • Cascaded PLLs
  • Multiple independent clocks on the same clock pin
  • Redundant clocking structures required for secure applications
  • Virtual clocks and generated clocks that are consistently used for source synchronous interfaces
  • Clock uncertainties

Additionally, the .sdc with project-wide constraints should contain all project-wide timing exception assignments, such as the following:

  • Multicycle assignments, set_multicycle_path
  • False path assignments, set_false_path
  • Maximum delay assignments, set_max_delay
  • Minimum delay assignments, set_min_delay

The project-wide .sdc can also contain any set_input_delay or set_output_delay constraints that are used for ports in separate Quartus® Prime projects, because these represent delays external to a given partition. If the partition designer wants to set these constraints within the separate Quartus® Prime projects, the team must ensure that the I/O port names are identical in all projects so that the assignments can be integrated successfully without changes.

Similarly, a constraint on a path that crosses a partition boundary should be in the project-wide .sdc, because it is not completely localized in a separate Quartus® Prime project.