DC综合入门【待完善】

一、文件说明

  • 工艺库

1、.db 格式:二进制工艺库文件;. lib 格式:可读工艺库文件(包含 operating _ conditions ).

二、. synopsys _ dc . setup

  • 搜索路径定义

1、set_search _ path [ list ./ home xxx(路径)]
2、多个地址可用\符号换行

  • 设计环境( PVT :工艺角、电压和温度)

1、库设置

1). 目标工艺库(标准单元综合库): set target_library {/home/xxx/PDK/typical.db}
2). 符号库: set symbol _ library {/ home / xxx/ PDK / typical . sdb}
3). 设置 IP 库:set synthetic_library [list dw_foundation.sldb]
4). 链接库(上一层调用底层已综合模块时的链接库,可以与 target library 相同,包含所有用到的库):set link_library {* ./home/xxx/PDK/typical.db}
5). 其他环境设置(不在link library内):set_min_library {slow.db} -min_version {fast.db}
6). 设置不同工作条件下对应库:set_operating_conditions -analysis_type on_chip_variation -max ss_v1p08_125c -min ff_v1p32_-40c

1)). ss_v1p08_125c和 ff_v1p32_-40c为最差和最好工作条件名,在 lib 中查找;
2)). slow 和 fast 分别为最差和最好 lib 名,在 search_path 中设置。

2、设置线负载模型、模式

1). set_wire_load_model -name ForQA

1)). model名在 lib 中查找
2)). slope:斜率(长度/扇出)

2). set_wire_load_mode top

top 顶层模式:适合扁平化设计、 enclosed 包围模式、 segmented 分段模式:

3、系统接口特性

1). set_drive XXX [list XXX]

用于输入端口输入电阻设置(单位与工艺库中一致,典型为0.05),端口列表可为"[ all _ inputs ]“或”{分别列举}"。

2). set_driving_cell -lib_cell XXX -pin XXX -no_design_rule [get_ports XXX]

设置端口驱动单元

3). set_input_transition XXX [get_ports XXXX ]

设置端口固定转换时间(单位与工艺库中一致)

  • 命名规则

1、 大写字母替换小写字母:define_name_rules BORG -restricted "A-Z" -replacement_char "a-z"

三、 TCL

  • 路径设置

1、 set REPORT "../report":使用时用 “$REPORT” 代替 “…/report”

  • 读取设计

1、读入 design:analyze -format verilog ./WORK/temp.v
2、建立 design,后面跟 module 名: elaborate temp

一般最顶层模块最后读入,作为Current Design

  • 设计规则约束

1、设置最大转换时间:set_max_transition XXX [XXX]

一般设置为周期的10%;all_inputs / all_outputs / find design

2、设置最大扇出负载(通过插入 buffer 以符合约束):set_max_fanout XXX [XXX]

  • 设计优化约束

1、时钟约束

1).时钟约束:create_clock -name CLK -period 5 -waveform {0 2.5} [get_ports CLK ]
2).时钟抖动: set_clock_uncertainty -setup xxx [get_clocks CLK]
/ set_clock_uncertainty -hold xxx [get_clocks CLK]【可以设置为10% ClockPeriod】
3).内部产生时钟约束:create_generated_clock -name CLKdiv2 -edges{2 4 6} -source CLK [get_pins Udiv/Q]
4).对于时钟禁止加入缓冲,时钟树在布局布线时加入:set_dont_touch_network [get_clocks CLK]
5).输入端口驱动: set_drive 0 [get_clocks CLK]【设置驱动阻抗】

参考:时钟的约束方法

2、复位信号约束

1). set_dont_touch_network [get_ports reset]:【不加buffer】
2). set_dont_touch_network [get_pins -hierarchical reset_ int]:【不加buffer】
3). set_drive 0 [get_ports reset]
4). set_ideal_network [get_nets -hierarchical reset_int] -no_propagate :【不做时序分析】

3、输入输出延迟

1). set_input_delay:【可以设置为40% ClockPeriod 】
2). set_output_delay:【同步设计寄存器输出可以不加】

4、时序例外

1). set_false_path -from [get_ports reset]
2). set_false_path -from [get_clocks CLK1] -to [get_clocks CLK2]

5、面积约束

set_max_area 0【获得最小面积】

  • 编译(映射+优化)

1、compile -no_autoungroup
2、compile ultra

参考:DC学习综合与优化

  • 返回报告、保存结果

1、输出综合后网表文件:write_file -f verilog -hierarchy -output /home/working_design.v
2、输出延迟文件:write_sdf -version 1.0 /home/working_design.sdf
3、输出面积报告:report_area -hierarchy > /home/area_hier.rpt
4、输出时序违例文件:report_constraints -all_violators -verbose > /home/constraints.rpt

在这里插入图片描述

微信公众号:通信随笔XIDIAN

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xidian_hxc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值