前言
Synopsys公司设计约束演化成行业标准,又名Synopsys Design Constraints(SDC)用于描述对时序、功率和面积的设计要求,是EDA工具中用于综合、静态时序分析和布局布线最常用的格式。一、时序约束
时序约束用于指定HDL中无法捕获的设计特性和用于驱动综合。
SDC基于Tcl语言(Tool Command Language),是一种非常流行的脚本语言。
- 现今,大多数实现和STA工具使用SDC作为标准格式以捕获对面积、功率和性能的设计意图。
二、Tcl基础知识
Tcl是一种解释性语言,不同于C语言这种编译性语言,编译语言是在执行前将语言解析并翻译成机器代码,而Tcl每条语句被解析并立即执行。
Tcl中,如果一条语句跨越多行,然后在下一行继续执行,则应在行尾加‘\’。
注释符是‘#’。
Tcl有多种语言结构,和大部分语言都类似:
- 变量
- 列表(数组)
- 表达式与运算符
- 控制流语句
- 过程(function)
1.Tcl变量
Tcl变量是ASCII字符串,变量用set分配,用puts获取,例如:
set a “1234”
puts $a
对应输出就是1234.
- 如果打印的字符是内置符号,如set,则需要在变量前加‘\’
puts {\$set something}
2.列表
Tcl中用多种方式可以创建列表,如:
set gates [list AND OR NOT NAND]
set gates {{AND}{OR}{NOT}{NAND}}
set gates [split "AND.OR.NOT.NAND" ","]
用lappend 可以向列表中添加元素,用lsearch 可以从列表中获得元素对应的索引。
和SV类似,Tcl也用foreach完成列表循环,并且可以同时对多个列表循环。
3.Tcl表达式和运算符
大部分和verilog的运算符都一致
但是用rxpr命令来对表达式求值,如
set x 5
expr $x+10
- Tcl中用**表达指数
- eq比较两数相等,ne比较两数不相等
- in检查列表中是否有指定元素,ni表示没有指定元素
三、Tcl常用约束
常用的约束有
- 时序约束
- 面积与功率约束
- 设计规则约束
- 接口约束
- 特定模式和配置约束
- 设计约束异常
- 其它命令
在此列举一些常用的命令,具体如何应用可以查询文档,如:
create_clock
set_clock_groups
set_clock_transition
set_max_area
set_max_fanout
set_drive
set_input_transition
set_false_path
搜索关注我的微信公众号【IC墨鱼仔】,获取我的更多IC干货分享!