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

ID 683243
日期 10/02/2023
Public
文档目录

2.6.4.1. 实体绑定的约束作用域(Entity-bound Constraint Scope)

实体绑定的SDC方法为您的约束提供了多种作用域界定的可能性,每种可能性都决定了它们的影响程度。
表 20.  实体绑定的约束作用域(Entity-bound Constraint Scope)
约束作用域类型(Constraint Scope Type) 特性 使能实例绑定的作用域(To Enable Instance-bound Scoping)
Automatic
  • 应用于 Intel® Quartus® Prime Pro Edition GUI中定义的实体绑定SDC文件的默认模式
  • 在自动作用域下,约束应用于工程中分配的实体的每个实例。
  • SDC文件中任何get命令(例如,get_pinsget_ports等)的每个结果的前面都加上实例的路径。
  • 所有的get命令都限制于与SDC文件关联的绑定实例内的目标单元。
SDC_ENTITY_FILE的默认模式。无需额外步骤。
Manual
  • 仅通过QSF assignment进行访问。
  • -no_sdc_promotion设置禁止自动作用域,需要完整的分层路径来定位节点。
  • 赋予定位实体边界之外的节点的灵活性。
  • get_current_instance命令提供当前实例的顶层路径,使您能够将定位当前实例中的单元的过滤器与定位实体边界之外的单元的命令进行合并。
使用-no_sdc_promotion。在每个集合过滤器后面附加get_current_instance以定位实体边界内的节点。
例如:
get_registers [get_current_instance]|reg[*]
Disabled
  • 仅通过QSF assignment进行访问。
  • -no_sdc_promotion-no_auto_inst_discovery参数一起禁用作用域,将实体绑定SDC文件视作全局SDC文件。SDC文件在整个编译工程中仅被读取一次,而不是对与其链接的每个实例进行重复读取。
  • 在将一个SDC与要导出为qdb文件的实体捆绑在一起时,此模式非常理想,同时保留了SDC集合过滤器能够指定其 get命令中的全局,顶层路径的能力。
使用-no_sdc_promotion-no_auto_inst_discovery参数。

当通过图形界面或QSF assignment (不包括-no_sdc_promotion-no_auto_inst_discovery参数)定义实体绑定的SDC文件时,将使用自动作用域界定对约束进行应用。自动作用域界定包括在过滤器前添加实例的路径。为了清楚起见,下表说明了由于约束的自动作用域界定而在各种Tcl命令中路径是如何解释的:

表 21.  自动作用域示例(Automatic Scope Example)
约束示例(Constraint Example) 实例X|Y的自动作用域约束解释
set_false_path -from [get_keepers a] set_false_path -from [get_keepers X|Y|a]
set_false_path -from [get_registers a] -to [get_registers b] set_false_path -from [get_registers X|Y|a] -to [get_registers X|Y|b]
set_false_path –from [get_clocks clk_1] –to [get_clocks clk_2] set_false_path –from [get_clocks clk_1] –to [get_clocks clk_2]
set_max_delay –from [get_ports in] -to [get_registers A] 2.0 set_max_delay –from [get_ports in] -to [get_registers X|Y|A] 2.0
get_ports * get_ports *
get_clocks * get_clocks *
get_ports a get_ports a
get_clocks a get_clocks a

当通过QSF assignment (包括-no_sdc_promotion参数的使用)禁用自动作用域(automatic scoping)时,您必须手动添加顶级路径以实现与自动作用域相同的行为。若要简化此过程,您可以使用-get_current_instance命令,因为它返回当前实例的顶级路径。下表说明了当使用-get_current_instance命令将顶级路径添加到某些Tcl命令时路径是如何解释的:

表 22.  约束的手动作用域(Manual Scope of Constraints)
约束示例(Constraint Example) 手动作用域约束解释(Manual Scope Constraint Interpretation)
set_false_path –from [get_current_instance]|d\ 
     –to [get_current_instance]|e
set_false_path –from i1|inner|d –to i1|inner|e 
set_false_path –from i2|inner|d –to i2|inner|e 
set_false_path –from i3|d –to i3|e
create_generated_clock –divide_by 2 –source \
   [get_ports inclk] –name \
   [get_current_instance]_divclk \
   [get_current_instance]|div 
set_multicycle_path –from [get_current_instance]|a \ 
   –to [get_current_instance]|b 2 
create_generated_clock –divide_by 2 –source \ 
    [get_ports inclk] –name “i1_divclk” i1|div 
set_multicycle_path –from i1|a –to i1|b 2 \ 
    create_generated_clock –divide_by 2 –source \ 
    [get_ports inclk] –name “i2_divclk” i2|div 
set_multicycle_path –from i2|a –to i2|b 2