Design Compiler知识整理
1 基本操作
- 在dc_shell下也可以使用unix命令诸如: pwd、 cd 、ls、history、alias等。
- 重复最后一条命令dc_shell> !!
- 执行第七条命令dc_shell> !7
- 执行最后一条report命令dc_shell> !rep
- 执行任何shell命令dc_shell> sh < UNIX_command >
- 得到unix变量值dc_shell> get_unix_variable
- 启动dc_shell后运行脚本:dc_shell> source example.tcl
- 在dc_shell>下查手册或者信息:man+command或者info+command
2 常用命令
- target_library:synthesis的map阶段需要的实际工艺库
- link_library:链接库,用于连接模块,“*”表示内存中所有的库
- link:读取完所要综合的模块之后,将读到的DCmemory中的模块连接起来(出现unresolved design reference的警告,需要重新读取模块)
- set_dont_touch:在当前设计和库单元上设置单元格、网格、引用和设计的dont_touch属性,以防止在优化期间修改和替换这些对象
- all_fanout:返回指定源扇出中的一组引脚、端口或者单元
- set_wire_load_mode:连线负载模式,模块之间的。有三种情况:enclosed、top和segmented。设置线载模型用于计算电容
- set_wire_load_model:模块内部连线模型
- compile_seqmap_propagate_constants:默认值为true。控制编译命令是否尝试识别和删除常量寄存器,并且在整个过程中传播常量值。
- hdlin_preserve_sequential:在设计中控制复杂的和读取的命令是否保留了卸载的顺序单元
- sh_continue_on_error:允许脚本出错时继续执行命令
- sh_source_emits_line_number:指示发出信息的错误消息严重级别,列出该消息发生时的脚本名和行号:E代表只报error;W代表报error和warning
- set_load:指定端口或者网络上设置的load属性
- load_of:返回指定端口cell的pin电容
- set_fix_multiple_port_nets:在当前的设计或设计列表设置固定多路网属性到指定的值
- report_timing -slack_lesser_than 1 报告小于1ns的时序路径
- max_path 指定每个路径组报告的路径数
- nworst 指定每个端点报告的最大路径数,默认为1,只会报告给定端点结束的最坏路径。
- delay max min 报告路径组中的建立时间和保持时间的关键路径,max为建立时间
- uniquify :为设计中的每一个模块产生一个名字唯一的拷贝,可根据每个模块本身特有的环境做优化和映射。
- 用group创建层次,ungroup解除层次关系:
- 设置面积约束:set_max_area 100 单位面积在不同的工艺库下所指的的一样:以二输入与非门的面积为单位面积、以单个管子所占面积为单位面积、以实际面积1um2为单位面积。在不知道的情况下可以综合一个二输入与非门来看数值,来确定具体所指。
- 定义时钟:create_clock -period 10 [get_ports clk]
set_dont_touch_network [get_clocks clk]
- 设置输入输出约束:set_input_delay -max 4 -clock clk [get_ports A]
set_output_delay -max 4 -clock clk [get_ports B]
- 检查约束:report_port -verbose 报告当前设计中定义的I/O端口属性和施加的约束
- report_clock:报告当前设计中定义的时钟及其属性情况
- reset_design:删除当前设计中所有的属性值和约束(该句命令一般位于脚本第一句)。移除设计remove_design -design
- list_libs:列出内存中所有可用的库
- check_timing:检查是否有路径没有加入约束
- check_design:检查设计中是否具有悬空的管脚或者输出短接的情况
- write_script:将施加的约束和属性写出到一个文件内
- 列出命令的开关选项:help -v set_input_delay
- 集合中删除元素:set all_except_clk [remove_from_collection
[all_inputs] [get_ports clk] ]
- 引入时钟偏差:set_clock_uncertainty 0.5 [get_clocks clk]
- 时钟源延时:set_clock_latency -source
- 网络时钟延时:set_clock_latency
- 布局后综合:set_propagated_clock
- 同步多时钟:虚拟时钟 creat_clock -period 20 -name CLKA 红色部分必须指定,没有端口或者管脚