SDC(Synopsys Design Constraint)文件简介

SDC(Synopsys Design Constraint)文件是集成电路设计中一种常见的设计约束格式,几乎所有综合、布局布线(PnR)及其他工具都支持。通常通过SDC文件提供设计的时序、功耗和面积约束,文件扩展名为.sdc。

SDC 文件语法

SDC文件的语法基于TCL格式,所有命令遵循TCL语法。在SDC文件中,’#’用于注释一行,'”‘用于换行。综合工具可以生成sdc文件,并用于P&R工具中。

SDC 文件中的约束

在SDC文件中,一些重要的约束包括:

1. SDC 版本:指定SDC文件的版本,例如2.1、2.0、1.9等。

set sdc_version 2.1

2. 单位设置:使用set_units命令指定时间、电阻、电容、电压、电流和功率等数量的单位。不同的单位可以通过一个 set_units命令实现。

set_units -time ns -resistance Kohm -capacitance pF -voltage V -current mA

3. 命令分类:根据使用条件,sdc的命令可以分为几大部分:

A. Operating Conditions
B. Wire Load Models
C. System Interface
D.  Design Rule Constraints
E. Timing Constraints
E. Timing Exceptions

C:定义接口位置约束:

1. 设置驱动单元:
指定由技术库中的单元驱动的输入或双向端口的驱动特性。这些命令将库引脚与输入端口关联,以便能够准确地建模延迟计算

set_driving_load [-lib_cell lib_cell_name] [-library lib_name] [-rise] [-fall] [-min] [-max] [-pin pin_name] [-from_pin from_pin_name] [-dont_scale] [-no_design_rule] [-input_transition_rise rtrans] [-input_transition_fall ftrans] [-multiply_by_facrtor] [-clock clock_name] [-clock_fall] port_list

比如对于下面的设计,可以定义驱动单元:

set_driving_cell -lib_cell IV {I1}
set_driving_cell -lib_cell AND2 -pin Z -from_pin B {I2} 

2. 设置指定端口和网络的负载。负载值的单位在文件表头有定义。

语法:set_load value objects [-subtract_pin_load] [-min] [-max] [[-pin_load] [-wire_load]]
示例:
set_load -pin_load 0.001 [get_ports {port[10]}]

D:定义drv约束

设置最大扇出、最大和最小电容以及最大过渡时间。

1.设置最大扇出:

语法:set_max_fanout fanout_value object_list
示例: set_max_fanout 5 [get_ports {port[10]}]

2.设置最大过渡时间:

适用于时钟端口或特定输入端口和/或设计。

语法:set_max_transition transition_value [-data_path] [-clock_path] object_list
示例:set_max_transition 2.5 [get_ports IN]

E.  时间约束

这一部分相关的命令最多,主要有时钟定义、时钟组、时钟延迟、时钟不确定性、时钟过渡、输入延迟、输出延迟、时序衰减等内容。

1.创建时钟:

语法:create_clock [-name clock_name] [clock_sources] [-period value] [-waveform edge_list] [-add] [-comment]

示例:

对于上面的时钟,周期为30ns,12~27ns之间为1

create_clock “u13/z” -name “CLK” -period 30 -waveform {12.0 27.0}
create_clock -name “PH12” -period 10 -waveform {0.0 5.0}

2. 创建生成时钟

语法:create_generated_clock [-name clock_name] [-add] source_objects -source master_pin [-master_clock clock] [-divide_by divide_factor | -multiply_by multiply_factor ] [-duty_cycle percent] [-invert] [-preinvert] [-edges edge_list] [-edge_shift edge_shift_list] [-combinational]
示例:

上面的示例将生成一个源自主时钟 CLK 的时钟。生成的时钟频率为原始时钟的三倍,时间周期为原始时钟的三分之一(15ns -> 5ns)。

  • 说明: create_generated_clock 命令创建一个生成的时钟对象。可以为生成的时钟对象指定一个引脚或端口。生成的时钟遵循主时钟,因此每当主时钟变化时,生成的时钟也会自动变化。生成的时钟可以是频率缩小、频率放大、边沿分频或反向时钟。

发表评论

公司信息

我们的芯片设计网站为读者提供芯片设计知识,公司兴趣广泛,内容涵盖芯片设计基础,到回片后的测试。也关注行业八卦。

最新文章

  • All Post
  • 综合
  • EDA工具使用
  • 芯片设计基础
  • 静态时序分析
  • 行业动态
  • 功耗分析
  • 数字电路基础
  • 数字后端
    •   Back
    • Placement
    • ECO
    • CTS
    • Routing
    • DRC&LVS
    • Floorplan

分类

Company

FAQs

Contact Us

Terms & Conditions

Privacy Policy

Features

Copyright Notice

Mailing List

Social Media Links

Help Center

Products

Sitemap

New Releases

Best Sellers

Newsletter

Help

Copyright

Privacy Policy

Mailing List

© 2024 learn-chip-design版权所有

了解 Start Learning Chip Design Here 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读