SDC文件详解

2023-11-09 13:20
文章标签 详解 sdc

本文主要是介绍SDC文件详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SDC是Synopsys设计约束“Synopsys Design Constraint”的缩写,是一种常用的约束设计的格式。SDC对电路的时序、功耗、面积等进行约束,从而使芯片满足设计要求的规范。SDC文件语法基于TCL格式,所有命令都遵循TCL语法。

下图显示了一些重要的值得关注的约束

01、SDC Version

它表明了sdc当前的版本,目前有2.1,2.0,1.9或者更老的版本。

set sdc_version 2.1

02、Units

我们可以用set_unit命令去指定各种变量的单位,如:time、resistance、capacitance、voltage、current、power等。我们也可以单个set_unit命令去设置倍数单位。

set_unit -time ns -resistance kohm -capacitance of -voltage V -current mA

03、Set driving cells

规定了由Tech库中的cell驱动的输入输出端口的drive特性。这些命令将库引脚与输入端口相关联,以便可以准确地建模计算delay。

语法:

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}

04、Set_load

设置当前设计中指定的port和net的load属性。load值的单位是本文件中定义的电容单位。

语法:set_load value objects [-subtract_pin_load] [-min] [-max] [[-pin_load] [-wire_load]]

例:set_load -pin_load 0.001 [get_ports {port[10]}]

05、Set maximum fanout

为特定的输入端口和/或设计设置最大扇出。

如:set_max_fanout 5 [get_ports {port[10]}]

06、Set maximum transition

设置最大转换时间。

如:set_max_transition 2.5 [get_ports IN]

07、Create clock

在当前设计中创建一个时钟对象,将指定的source_objects定义为时钟源。

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

例:

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

create_clock -name “PH12” -period 10 -waveform {0.0 5.0}

08、Create generated clock

创建一个generated clock,可以为generated clock对象指定pin或port。generated clock跟随master clock变化而自动变化。生成的时钟可以创建为分频时钟、倍频时钟、边缘分频时钟或反相时钟。

例:

create_generated_clock -multiplied_by 3 -source CLK [get_pins div3/Q]

上面的例子将生成一个时钟,该时钟是从名为CLK的原始时钟导出的。生成的时钟的频率将是原始时钟的3倍,时间周期将为原始时钟的三分之一(15ns –> 5ns)。

09、Group path

设置一组path或endpoints为group,有针对性地进行优化。指定endpoint后,所有通向这些endpoint的路径都在这组group里。

group_path -name “group1” -weight 2.0 -to {CLK1A CLK1B}group_path -name GROUP1 -from [get_ports ABC/in3] -to [get-ports FF1/D]

10、Clock uncertainty

在定义了时钟后,要注意在时钟网络中设置时钟的不确定性。时钟不确定性为设计留出了一定的margin,用来cover时钟网络和时钟源本身的非理想性导致的变化。它将不确定性的值设置为endpoint或时钟域之间预期的最差偏差。

语法:set_clock_uncertainity [object_list | -from from_clock | -rise_from rise_from_clock | -fall_from fall_from_clock -to to_clock | -rise_to rise_to_clock | -fall_to fall_to_clock] [rise] [-fall] [-setup] [-hold] uncertainty

例:

set_clock_uncertainty -setup 0.5 [get_clocks clk1]

set_clock_uncertainty -hold 0.2 [get_clocks clk1]

时钟的rise和fall time也可以设置clock uncertainty,如下所示,

set_clock_uncertainty -max_rise 0.12 [get_clocks clk1]

set_clock_uncertainty -max_fall 0.12 [get_clocks clk1]

set_clock_uncertainty -min_rise 0.12 [get_clocks clk1]

set_clock_uncertainty -min_fall 0.12 [get_clocks clk1]

11、Clock latency

时钟延迟指定从时钟源引脚到达时序元件的时钟引脚的时钟信号的latency。clock latency有两种类型,一种是net latency(默认),另一种是source latency(使用-source选项)

语法:set_clock_latency [-rise] [-fall] [-min] [-max] [-source] [-early] [-late] [-dynamic jitter] [-clock clock_list] delay object_list

例:set_clock_latency 2.35 [get_pins ABC/XYZ/CP]

12、Input delay

输入延迟定义了input port相对于时钟边缘的时序要求。如果未指定,则假定input port具有零输入延迟。delay值是起始点和设置set_input_delay的对象之间相对于时钟边缘的延迟决定的。

例:set_input_delay -max 1.35 -clock clk1 {ain bin}

13、Output delay

set_output_delay设置output 端口上相对于时钟边缘的输出延迟要求。如果未指定,则假定输出端口具有零输出延迟。

例:set_output_delay 1.7 -clock [get_clocks CLK1] [all_outputs]

14、Multicycle paths

多周期路径是不能满足单周期时序要求路径的例外。在多周期路径中,信号需要一个以上的单个时钟周期才能从路径的起点传播到终点。此命令指定了data path必须进行setup或hold检查的周期数。以下命令设置了从A到B的两个周期的约束。

set_multicycle_path 2 -from A -to B

15、False paths

false path是指不能传播信号的路径。时序分析时应排除false path。SDC命令set_false_path用于定义false path。

set_false_path -from U1/G -to U1/D

SUMMARY

以上描述了SDC中非常重要的常用的15个约束命令,实际上在一个复杂的design中还有很多重要的约束需要用到,这里不再提及。以下是15个约束的总结:

1. SDC Version

2. Units

System Interface

3. Set driving cells

4. Set load

Design rule constraints

5. Set maximum fanout

6. Set maximum Transition

Timing constraints

7. Create Clock

8. Create Generated Clock

9. Group Path

10. Clock Uncertainty

11. Clock Latency

12. Input Delay

13. Output Delay

Timing Exception

14. Multicycle Path

15. False Path

想查看更多后端知识和文章,请关注微信公众号:houduanxinjihui。

这篇关于SDC文件详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/376355

相关文章

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技