综合优化策略介绍-Design Compiler(五)


系列学习介绍DC相关知识,包括ASIC基本单元相关,DC指令工艺库脚本相关,后端综合实现相关等总结。本节包括DC综合时的一些优化策略,内容有一些个人理解和各地方论坛总结学习,有不同认识欢迎探讨,fighting。

Synthesis Optimization Techniques

5.1 综合优化策略

level主要集中在gate_level,调用compilecompile_ultra

5.1.1 Boundary optimization边界优化

在编辑时,Design Compiler会对传输常数,没有连接的引脚和补码信息进行优化,也就是说边界优化会把边界引脚一些固定的电平,固定的逻辑进行优化。但是在formility(形式验证),需要告诉formility电路结构发生了改变。这个改变存放在DC的生成文件里。

img

 set_boundary_optimization<cells_designs> false #可设置某些cell不做边界优化
  compile_ultra -no_boundary  #批量设置不进行边界优化
5.1.2 Auto-ungrouping及其取消

compile默认不打散,compile_ultra会自动将模块打散,打散后只能看到top层和具体实现

set compile_ultre_ungroup_dw true ;#允许打散,取消desigware层次。也就是说,调用的一个加法器和一个乘法器,本来他们是以IP核的形式,或者说是以模块的形式进行综合的,但是设置了上面那么变量之后,综合后那个模块的界面就没有了

为了使设计的结果最优化,建议将compile_ultra命令和DesignWare library一起使用。也就是说不打散较好。

  set_ungroup <reference_or_cells> false  ;#禁止cell打散
  set_app_var compile_ultra_ungroup_dw false  ;#禁止打散,使用designware层次
  compile_ultra -no autoungroup ;#全部都不打散

论坛引用:全部ungroup打散后,没有boundary,一般功能是不会影响的,LEC来保证。但是function层次就没有了,比如对网表做一些verification,如STA时一些重要的点可能找不到了,如果还要debug的话几乎做不下去。

5.1.3 timing_high_effort_script

对时序做最好的优化,会把时序的优先级提升到超过DRC(Design Rule Check)的优先级,DRC是工艺厂商的要求,不满足DRC可能会出错。

compile_ultra -timing_high_effort_script
5.1.4 -timing 和 -retime
compile_ultra -timing #采用register replication的方法修复critical path时序
compile_ultra -retime #把时序不满足部分组合逻辑转移到有余量地方,前一级就得到很大的改善。后面的violation可以通过把时钟稍微往后挪一点来改善掉。
#Retiming的基本思想:这几种结构在功能和时序上是等效的
5.1.5 group_path划分原理

设计的时序路径分组,叫做path groups。默认每个时钟域对应一个path group,只有一个时钟情况下,划分为4个path_group:InputToReg、RegToReg、RegToOutput、InputToOutput

==DC综合时序优化,每个path group,先优化关键路径(即最差的时序路径),然后才会优化接下来最差的时序路径。==这也是为什么区分不同path_group,如果最差的时序路径不满足,其余也不会优化,但有时优化次差路径有利于最差路径优化。

关键路径找不到优化解决方案,就会报告时序违反;也就是说关键路径没有达到时序满足,不会优化其它违反的时序路径。

group_path -name INREG -from [all_inputs]
group_path -name REGOUT -to [all_outputs]
group_path -name INOUT -from [all_inputs] -to [all_outputs]
group_path -name CLK -critical_range 0.2 #相比于critical_path差0.2ns的路径都可以得到优化,数值设置不能超过时钟周期的10%,过多的话需优化路径过多,效果未必更好
group_path -name CLK -critical 0.2 -weight 5 #权重为5优先优化RegToReg
名词解释

TNS: total negative slack总的负时序时间之和,即小于0的slack之和

WNS: worst negative slack最差的负时序

THS: total hold slack总的保持时间的负时序之和

WHS: worst hold slack最差的保持时间的负时序

参考文档

【1】DC学习(8)综合与优化

【2】[求助]ungroup使用

【3】数字逻辑综合工具-DC-06——综合优化过程

【4】综合约束命令group_path的理解

【5】后端基础概念—TNS&WNS

【6】数字IC设计之综合工具Synopsys DC(3)

  • 5
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
综合Design Compiler是EDA(电子设计自动化)领域中使用频率很高的两个工具,对于设计电路的综合优化都发挥着重要的作用。 综合是将高级语言(如Verilog或VHDL)描述的电路转化为门级(即逻辑门)的过程。在综合过程中,除了将电路级描述转化成门级,还包括优化电路的面积、功耗和时序等方面。综合工具通常会根据综合约束和目标进行优化,通过重构逻辑、删除冗余逻辑、优化时序路径等方法,提高电路性能并满足设计目标。 Design Compiler综合工具中使用广泛的一种,它具有很好的性能和灵活性。首先,Design Compiler具备先进的综合算法,能够生成高质量的电路。其次,Design Compiler提供了多种优化选项和约束设置,可以根据设计需求进行针对性的优化和限制。此外,Design Compiler还支持处理不同抽象级别的设计,包括RTL级、门级和物理级,可以在不同阶段进行综合优化Design Compiler在工艺库及特定环境下的综合优化能力得到广泛认可,可提供高效、低功耗和高性能的设计解决方案。其具备的功能还包括报告设计的体积、功耗、时序等性能指标,辅助设计工程师快速评估和优化设计。此外,Design Compiler还可以与其他EDA工具集成,形成完整的设计流程,提高设计效率。 综合Design Compiler的发展使得电路设计从传统的手工设计向自动化设计迈进了一大步。通过将高级设计语言转化为优化的门级描述,设计工程师可以更简便且高效地完成电路设计。综合Design Compiler的不断发展和创新,将进一步推动EDA技术的进步和电路设计的发展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Paul安

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

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

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

打赏作者

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

抵扣说明:

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

余额充值