Intel® Quartus® Prime Pro Edition用户指南: Timing Analyzer

ID 683243
日期 4/13/2020
Public

本文档可提供新的版本。客户应 单击此处 前往查看最新版本。

文档目录

2.2.4. 使用实体绑定的SDC文件(Using Entity-bound SDC Files)

Intel® Quartus® Prime Pro Edition Timing Analyzer支持将一个Synopsys Design Constraints (.sdc)文件约束成工程中的一个特定的设计实体(模块)。

通常,在一个.sdc文件中指定的时序约束应用于整个工程中,而不是只应用于特定的设计实体。然而,您可以使用Properties对话框或者SDC_ENTITY_FILE assignment将一个.sdc文件绑定到一个设计实体。实体绑定约束支持更精准地指定时序约束,以及设计模块或者IP的时序约束的可移植性。

  • 时序约束可移植性—包含已分配实体的所有设计分区都自动包含实体绑定的.sdc约束。您可以选择使用Include entity-bound SDC files (--include_sdc_entity_in_partition)选项,通过导出的分区指定这些约束的导出。这使您能够切换(hand-off)综合的设计模块或者最终设计模块,或者封装时序约束的IP。
  • 时序约束精度—仅将时序约束应用于特定实体而不是应用于所有实体,从而简化约束入口。此方法避免了全局约束的意外副作用,尤其是在使用通配符(*)时序约束时。默认情况下,实体绑定的.sdc约束自动应用于工程中已分配实体的所有实例。或者,可以默认全局应用所有约束,并使用get_current_instance命令选择其中哪个约束仅用于对当前实体,如实体绑定的约束范围(Entity-bound Constraint Scope)所描述。
  • 注: 所有的 Intel® Stratix® 10 FPGA IP core都自动使用实体绑定的.sdc约束。

请按照以下步骤来创建或者修改一个实体绑定的.sdc文件:

  1. 创建一个.sdc文件,然后点击Project > Add/Remove files in project,添加.sdc文件。.sdc文件出现在Files列表中。
  2. Files列表中,选择.sdc文件,然后点击Properties按钮。
  3. 对于Type,请选择Synopsys Design Constraints File with entity binding
    图 59. 实体重新绑定(Entity Rebinding)
  4. 对于Entity,请选择想要绑定到.sdc的实体。
  5. 点击OK

或者,将以下assignment添加到.qsf,将指定的实体绑定到指定的.sdc文件:

QSF赋值语句(QSF Assignment Syntax):

set_instance_assignment -entity <entity_name> -name \
    SDC_ENTITY_FILE <sdc_file_name> -no_sdc_promotion –no_auto_inst_discovery

对于SDC_ENTITY_FILE assignment,必须指定一个 -library参数, 此参数与所引用的实体的-library argument相匹配。如果没有指定库(library),那么软件将使用默认的altera_work library。

实体(entity)和库(library)都必须与目标RTL模块匹配,以便应用SDC_ENTITY_FILE

以下选项应用于SDC_ENTITY_FILE assignment:

  • No options—使能自动约束范围(constraint scoping)。Timing Analyzer对每个绑定实体读入实体.sdc文件一次,get_current_instance返回一个值。集合过滤器(时钟和顶层过滤器除外)前面加上当前实例的层次结构路径(即get_current_instance的返回值)。
  • -no_sdc_promotion—开启手动提升(manual promotion)。Timing Analyzer对每个绑定实例读入实体.sdc文件一次,get_current_instance返回一个值。Timing Analyzer不会修改集合过滤器。
  • -no_sdc_promotion –no_auto_inst_discovery—关闭约束范围(constraint scoping)。Timing Analyzer读入每个实体.sdc文件一次,不会修改集合过滤器。get_current_instance返回一个空字符串。