【附录A SDC】静态时序分析圣经翻译计划

本文详细介绍了SDC(Static Timing Analysis Description Commands)格式,主要针对1.7版本,用于指定设计时序约束。内容涵盖基本命令、对象访问、时序约束、环境命令等方面,通过各种示例解析了如create_clock、set_input_delay、set_output_delay等关键命令的用法,帮助读者深入理解时序分析和设计约束设定。
摘要由CSDN通过智能技术生成

本文由知乎赵俊军授权转载,知乎主页为https://www.zhihu.com/people/zhao-jun-jun-19

本附录将介绍1.7版本的SDC格式,此格式主要用于指定设计的时序约束。它不包含任何特定工具的命令,例如链接(link)和编译(compile)。它是一个文本文件,可以手写或由程序创建,并由程序读取。某些SDC命令仅适用于实现(implementation)或综合(synthesis),但是本附录会列出所有SDC命令。

SDC语法是基于TCL的格式,即所有命令都遵循TCL语法。一个SDC文件会在文件开头包含SDC版本号,其次是设计约束,注释(注释以字符#开始,并在行尾处结束)在SDC文件中可以散布在设计约束中。设计约束中较长的命令行可以使用反斜杠(\)字符分成多行。

A.1 基本命令

以下是SDC中的基本命令:

  • current_instance [instance_pathname]

上述命令设置了设计的当前实例,这允许其它命令从该实例中设置或获取属性(attribute)。如果未提供任何参数,则当前实例将成为顶层(top-level)。

例子:

  • current_instance /core/U2/UPLL

  • current_instance .. (向上一层)

  • current_instance (设为顶层)

  • expr arg1 arg2 ... argn

  • list arg1 arg2 ... argn

  • set variable_name value

  • set_hierarchy_separator separator

上述命令指定了SDC文件中使用的默认层次结构分隔符。在允许的情况下,可以通过在各个SDC命令中使用-hsc选项来覆盖此设置。

例子:

  • set_hierarchy_separator /

  • set_hierarchy_separator .

  • set_units [-capacitance cap_unit] [-resistance res_units] [-time time_unit] [-voltage voltage_unit] [-current current_unit] [-power power_unit]

上述命令指定了SDC文件中使用的单位。

例子:

  • set_units -capacitance pf -time ps

A.2 对象访问命令

以下命令指定了如何访问设计实例中的对象。

all_clocks命令会返回一个所有时钟的集合:

  • foreach_in_collection clkvar [all_clocks]

  • set_clock_transition 0.150 [all_clocks]

all_inputs [-level_sensitive] [-edge_triggered] [-clock clock_name] 命令会返回一个设计中所有输入端口的集合:

  • set_input_delay -clock VCLK 0.6 -min [all_inputs]

all_outputs [-level_sensitive] [-edge_triggered] [-clock clock_name] 命令会返回一个设计中所有输出端口的集合:

  • set_load 0.5 [all_outputs]

all_registers [-no_hierarchy] [-clock clock_name] [-rise_clock clock_name] [-fall_clock clock_name] [-cells] [-data_pins] [-clock_pins] [-slave_clock_pins] [-async_pins] [-output_pins] [-level_sensitive] [-edge_triggered] [-master_slave] 命令会返回一个具有指定属性的寄存器的集合:

  • all_registers -clock DAC_CLK

上述这个命令返回的集合中为所有由时钟DAC_CLK触发的寄存器。

current_design [design name] 命令会返回当前设计的名称。如果使用参数指定,则将会设置当前设计为指定的名称:

  • current_design FADD

  • current_design

get_cells [-hierarchical] [-hsc separator] [-regexp] [-nocase] [-of_objects objects] patterns 命令会返回一个设计中与指定模型(pattern)匹配的单元的集合,通配符可用于匹配多个单元:

  • get_cells RegEdge*

  • foreach_in_collection cvar [get_cells -hierarchical *]

get_clocks [-regexp] [-nocase] patterns 命令会返回一个设计中与指定模型匹配的时钟的集合。当在-from或-to等上下文中使用时,它将返回一个由指定时钟驱动的所有触发器的集合:

  • set_propagated_clock [get_clocks SYS_CLK]

  • set_multicycle_path -to [get_clocks jtag*]

get_lib_cells [-hsc separator] [-regexp] [-nocase] patterns 命令会创建一个当前正在加载的库中并且与指定模型匹配的库单元的集合:

  • get_lib_cells cmos131v/AOI3*

get_lib_pins [-hsc separator] [-regexp] [-nocase] patterns 命令会返回一个与指定模型匹配的库单元引脚的集合。

get_libs [-regexp] [-nocase] patterns 命令会返回一个设计中当前加载的库的集合。

get_nets [-hierarchical] [-hsc separator] [-regexp] [-nocase] [-of_objects objects] patterns 命令会返回一个与指定模型匹配的网络的集合:

  • get_nets -hie

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值