Synopsys Design Compiler(DC)


target_library 是综合的目标,用于逻辑综合和优化,直接影响综合结果的性能、面积和功耗。
link_library 用于解决模块之间的引用关系,确保设计的完整性。
LIB_CORNER_SEL 用于选择特定工艺角的库文件,以满足不同工艺条件下的设计要求。

1. target_library

定义:目标库是在综合过程中,用于将 RTL(寄存器传输级)代码映射为门级网表的标准单元库。它包含了各种标准单元(如与门、或门、触发器等)的物理信息和时序信息。
功能:DC 依据目标库中的单元特性,对设计进行逻辑综合和优化,以满足设计的性能、面积和功耗要求。例如,DC 会根据目标库中单元的延迟信息,调整电路的时序,使设计满足时钟约束。

2. link_library

定义:链接库用于在综合过程中解决模块之间的引用关系。它包含了设计中所使用的所有模块的定义和接口信息,这些模块可以是标准单元、宏单元、IP 核等。
功能:当设计中包含多个模块时,DC 会通过链接库来查找和解析这些模块的定义和接口,确保设计的完整性。链接库主要用于模块的链接和解析,不直接参与逻辑综合和优化。

3. 工艺库角

在 Synopsys Design Compiler(DC)中,​LIB_CORNER_SEL 是用于管理多工艺角(PVT: Process, Voltage, Temperature)库文件选择的环境变量或配置机制。它允许用户在综合过程中根据不同的工艺条件(如慢速-慢速(SS)、快速-快速(FF)、典型(TT)等)动态切换目标工艺库,以确保设计在不同物理条件下的时序和功耗符合要求
LIB_CORNER_SEL 主要用于多工艺角(Multi-Corner)设计环境下的库条件选择。以下是其关键点解析:

1. 工艺库角(Library Corner)的定义

工艺角:在集成电路制造过程中,由于光刻、掺杂等工艺步骤存在一定的偏差,会导致实际制造出来的晶体管参数(如阈值电压、载流子迁移率等)与设计值存在差异。为了确保芯片在不同的工艺条件下都能正常工作,通常会定义几种典型的工艺条件组合,即工艺角。常见的工艺角包括 FF(Fast - Fast,快速工艺、高电压、低温)、SS(Slow - Slow,慢速工艺、低电压、高温)等。

工艺库角是Foundry提供的工艺库中定义的一组操作条件(Operating Conditions),包括工艺(Process)、电压(Voltage)和温度(Temperature)的极端组合(PVT)。常见的库角包括:

WC(Worst-Case):慢工艺、低电压、高温(最差性能条件)。

BC(Best-Case):快工艺、高电压、低温(最佳性能条件)。

TT(Typical):典型工艺、标称电压和温度38。

set LIB_CORNER_SEL "wc"  # 选择最差工艺角库
set target_library "tsmc65_${LIB_CORNER_SEL}.db"

这里选择了慢速工艺角的库文件,DC 在综合过程中会使用该工艺角的库文件进行分析和优化

2. LIB_CORNER_SEL的作用

是用于选择特定工艺角库的参数或设置选项。不同的工艺角对应不同的标准单元库(.lib 文件),这些库文件中包含了在该工艺角下标准单元的时序、功耗等信息。通过 LIB_CORNER_SEL 可以指定 DC 在综合过程中使用哪个工艺角的库文件进行分析和优化。

与多模式(Multi-Mode)结合:支持同时分析不同工作模式(如高性能模式、低功耗模式)下的时序和功耗。

3. 相关命令与操作

在Design Compiler中,库角通常通过以下方式管理:

set_operating_conditions:显式设置当前设计的操作条件(如set_operating_conditions -max WCCOM)8。

report_lib:查看工艺库中定义的可用操作条件8。

多角优化:通过set_scenario和set_active_scenario支持多角多模式(MCMM)分析8。

4. 实际应用场景

静态时序分析(STA):需覆盖所有关键库角以确保设计鲁棒性。

功耗优化:在BC角下优化漏电功耗,在WC角下优化动态功耗。

4. 命令

check_design

check_design -summary 命令的主要作用是对当前设计进行全面检查,并输出检查结果的摘要信息。
这些检查涵盖设计的多个方面,像连接性、时序约束、逻辑完整性等,有助于快速发现设计中存在的问题。

输出信息
执行 check_design -summary 命令后,会输出一系列检查结果的摘要信息,主要包含以下几类:

  • 端口连接问题:显示设计中端口连接不正确的情况,比如悬空的输入端口、未驱动的输出端口等。
  • 时序约束问题:指出时序约束方面存在的问题,像缺少时钟定义、约束冲突等。
  • 逻辑完整性问题:检查设计的逻辑是否完整,有无未使用的逻辑单元、逻辑错误等。
  • 其他问题:还可能包括其他类型的问题,如层次结构错误、库文件缺失等。

输出示例

Check Design Summary:
---------------------
- Number of unconnected inputs: 2
- Number of undriven outputs: 1
- Number of missing clock definitions: 0
- Number of logic errors detected: 1

read_verilog

功能:用于读取 Verilog 格式的设计文件
read_vhdl 用于读取 VHDL 格式的设计文件

read_sdc

功能:读取 Synopsys Design Constraints(SDC)文件,该文件包含了设计的时序约束信息。

set_clock_period

功能:设置时钟信号的周期

compile

功能:对设计进行综合,将 RTL 代码转换为门级网表,并根据约束条件进行优化

compile_ultra

功能:比 compile 命令更高级的综合优化命令,能提供更深入的优化。

report_checks

功能:生成设计的检查报告,包括时序检查、面积检查等。

report_checks -all_violators

解释:生成包含所有违反约束情况的检查报告。

report_area

功能:生成设计的面积报告,显示设计的总面积、各模块的面积等信息。

report_timing

功能:生成时序报告,分析设计的时序性能,包括最大延迟路径、建立时间和保持时间等信息。

report_power

功能:生成功耗报告,估算设计的功耗情况,涵盖动态功耗、静态功耗等。

库管理命令

  • set_target_library
    功能:指定综合时使用的目标库,该库包含了标准单元的信息。
    示例:
set_target_library "lib/standard_cell.lib"

解释:将 lib/standard_cell.lib 设置为目标库。

  • set_link_library
    功能:指定链接库,用于解决模块之间的引用关系。
    示例:
set_link_library "* $target_library"

解释:设置链接库,* 表示搜索当前工作目录和环境变量中指定的路径,$target_library 表示将目标库也包含在链接库中。

设计检查

check_timing
功能:检查设计的时序约束是否满足要求,列出违反时序的路径。

check_physical
功能:检查设计的物理规则是否符合要求,如布局布线规则等

Other

命令类别命令名称功能示例解释
库和环境设置set_search_path设置文件搜索路径,DC读取文件时会在这些路径查找set_search_path [list ./lib ./design_files]将当前目录下的 libdesign_files 文件夹添加到搜索路径
库和环境设置set_liberty_behavior控制DC处理Liberty库文件信息的方式,可设置对库中某些属性的解释方式set_liberty_behavior -max_delay_check设置为最大延迟检查模式
设计处理ungroup将已分组的设计模块解组,便于对单个模块操作和分析ungroup [get_cells group_name]对名为 group_name 的模块进行解组
设计处理flatten_design将设计的层次结构扁平化,把所有子模块展开为单层结构,简化设计分析和优化flatten_design-
约束操作set_false_path设置虚假路径,告知DC某些路径无需进行时序分析,排除实际工作中不会出现的路径set_false_path -from [get_pins start_pin] -to [get_pins end_pin]将从 start_pinend_pin 的路径设置为虚假路径
约束操作set_multicycle_path设置多周期路径,处理信号在多个时钟周期内有效的情况set_multicycle_path 2 -setup -from [get_pins src_pin] -to [get_pins dst_pin]将从 src_pindst_pin 的建立时间设置为多周期路径,周期数为2
优化与综合optimize_design对设计进行优化,可在综合前后使用,改善设计的性能、面积和功耗optimize_design-
优化与综合map_design将设计映射到目标库中的标准单元,是综合过程重要步骤map_design-
报告生成与分析report_checks -verbose生成详细的设计检查报告,比 check_design -summary 信息更丰富,便于深入排查问题report_checks -verbose-
报告生成与分析report_constraint生成约束报告,展示当前设计应用的所有约束信息,检查约束设置是否正确report_constraint-
报告生成与分析report_worst_paths报告设计中最差的时序路径,帮助定位影响设计性能的关键路径report_worst_paths 5报告最差的5条时序路径
调试与监控show_lib显示库文件信息,如库中的单元、端口等,用于调试和确认库内容show_lib my_library.lib显示 my_library.lib 文件的详细信息
调试与监控watchpoint设置监控点,跟踪设计中特定信号或节点的变化,辅助调试设计问题watchpoint [get_nets signal_name]对名为 signal_name 的网络设置监控点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值