0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简单介绍optimize的内容以及它的一些实际运用

数字后端IC芯片设计 来源:未知 作者:李倩 2018-05-07 15:46 次阅读

前面主要介绍了Optimize的一些基本概念,那么今天就来讲解一下它的一些实际运用,以及我们怎么才能用好这个强大的命令!!

说到Optimize,那和它联系最紧密的就是Timing了。在做实际design中,从place到signoff,Timing violation是伴随着整个流程挥之不去的阴影。那P&R中,Timing violation的趋势是怎么样的呢?

很多人脑海里浮现的是左边呈倒金字塔形的这张吧,认为每前进一步就会修掉一些violation。其实则不然,右边那张才是更合理化的趋势图。工具P&R的核心,placement和routing,其实都不是那么的timing aware。Routing以后甚至会出现violation path的增多(因为Route之前都不care DRC)。那其实整个Timing closure的过程中,出力最大的就是Optimize。因此,我们非常有必要来了解一些传统的Optimize的注意点

1Before Optimize

正所谓"临阵磨枪,不亮也光",Optimize可是个超级命令,通常运行时间都在几个小时,甚至几十个小时以上。耗费这么大的财力物力,我们可不希望它跑得毫无价值。在开始运行place_opt之前,对design的基本情况进行一些基本检查真的是非常有必要的。整理了一下,以下几点是比较有用的:

1)跑一遍check_design,检查一下design中包括(netlist,Timing library,Floorplan)

2)检查sdc文件是否clean。是否有一些定义不合理的约束。

3)报一遍zero wireload model的timing,如果zwl timing的结果都不理想的话,试着要去调整下sdc文件等等

4)采用get_attribute [get_lib_cell *] dont_use或者report_dont_use报出当前设计中的dont use cell,一些特别weak的cell我们需要禁用。

5)检查一下有没有打开需要的active scenarios

set_scenario_status -active true

6)检查所需要的Optimize mode。

Performance(opt.timing.effort)

Power(opt.power.effort)

Density(-max_density)

2During Optimize

这个期间,是Optimize自己后台运行的过程。我们也做不了什么操作,正好来复习一下Optimize的transform。我们知道它可以做很多的动作,而工具中可以让它操作的object又有很多,这两者之间的关系在下面这张表中可以体现出来:

3After Optimize

当Optmize做完,结果不理想该肿么办呢?

Debug呗~~

提供以下几点建议:

1)从log入手:

1.查看下各个Path Group的WNS/TNS的收敛趋势。

2.查看下DRV的收敛趋势。

3.查看下Optimize过程中各个transform的detail report。包括move的instance数目,距离。包括routing conestion等等,检查下有没有异常值。

2)分析Timing情况

1. 总体概括性地检查一下critical path,而不是去看最差的一条,通常Path Group的timing变差具有共性

2. 分析一下path上的cell/net delay, 看看有没有“bad buffering,bad sizing,weak cell”这些情况

3. 检查一下Placement结果吧,看看某些区域的density是不是较大,可以采用keepout margin或者cell spacing constraint来增大cell之间的距离

4. macro是否摆放不合理,channel留太少,或者macro上的routing过差,可以采用添加合适的blockage,或者重新摆放macro位置来解决

5. 可以自己创建Path Group来优化timing,Optimize默认创建的Path Group是reg2reg, reg2cgate. 我们可以采用group_path来自己创建需要重点优化的Path。

3)通过report相关的命令来检查一些潜在的误操作或者工具的bug

report_dont_use可以报出当前design中的dont use cell

report_dont_touch可以报出当前design中的dont touch cell

4)运行incremental的optimize

它会基于当前Placement的结果来优化density,以及基于Optimize的结果来继续优化WNS和TNS

optimize的介绍就到此为止了,看似简单的一个命令其实要用好他却不容易。如何挖掘工具潜能,取得较好的优化结果,这是一个反复迭代,反复分析设计的过程。总之,多尝试,多跑跑设计,才能对工具愈发熟练。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • design
    +关注

    关注

    0

    文章

    152

    浏览量

    45531
  • timing
    +关注

    关注

    0

    文章

    7

    浏览量

    10165

原文标题:芯片诚可贵,时序价更高——Optimize(二)

文章出处:【微信号:IC_Physical_Design,微信公众号:数字后端IC芯片设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一些简单资料

    一些简单资料,共享,希望大家共同进步!
    发表于 11-24 09:40

    一些简单的ARM资料

    一些简单的!!!!!!!!!...
    发表于 03-01 22:34

    介绍一些简单的项目

    学51单片机已经个多月,简单的操作感觉还好。 想找一些简单的项目做下,在项目中学习,求介绍
    发表于 08-18 12:35

    FPGA的一些简单设计资料

    FPGA的一些简单设计资料
    发表于 06-10 11:04

    一些简单、实用的Protel元器件

    一些简单、实用的Protel元器件
    发表于 05-07 09:41

    高效进行手机测试面临的一些挑战介绍

    质量和效率,相对于正确的仪器,维修中心需要更多地注重可靠测试。另个难点是选择组件建立完整的测试系统–或选择适用的解决方案。下面介绍实际情况下面临的一些挑战。
    发表于 06-05 06:13

    介绍蓝牙的一些概念

    . 声明本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:第篇:蓝牙综合介绍 ,主要介绍蓝牙的
    发表于 07-22 06:03

    总线的简单介绍

    设备)以及一些方法使程序执行结果得以看见(输出设备)。RAM是易失性的,当断电时,内容就会丢失。所以计算机中另个有用的部件是永久存储设
    发表于 08-05 07:25

    介绍一些常用的LDO相关术语

    低压差稳压器(LDO)看似简单,但可提供重要功能,例如将负载与不干净的电源隔离开来或者构建低噪声电源来为敏感电路供电。本简短教程介绍一些常用的LDO 相关术语,以及
    发表于 11-12 06:07

    介绍下UPS的一些基础知识

    机房UPS电源实际负载容量与负载量是怎么计算的?2018-09-16正文:、首先介绍下UPS的一些基础知识1、为什么用UPS?UPS的作
    发表于 11-16 07:16

    分享一些学习STM32的内容

    这里大概的罗列了一些学习STM32的内容以及学习顺序。如果是新手的话,建议边看中文手册和学习视频(般都看原子的,视频的话百度就可以了,如果实在是找不到的话,我给大家推荐
    发表于 11-22 08:19

    介绍一些常见的汇编语句

    即使使用C/C++或者其他高级语言编程,最后也会被编译工具转换为汇编代码,并最终作为机器码存储在内存、硬盘或者其他存储器上。在调试程序时,经常需要阅读的汇编代码.这里介绍一些自己常见的汇编语句
    发表于 12-20 06:05

    介绍一些MOV与ADD指令的简单例子

    因为嵌入式系统学习需要,开始学习汇编语言学习资料是B站的视频:汇编语言程序 P9目录一些简单的指令例子二、个练习
    发表于 01-07 06:39

    罗列一些学习STM32的内容以及学习顺序

    罗列一些学习STM32的内容以及学习顺序
    发表于 01-19 07:04

    关于stm32的一些简单介绍

    #序言本文章是关于stm的一些简单介绍,全部都是个人学习的一些经验总结,分享给想要自学stm32的朋友们用于入门。其中部分内容借鉴于《st
    发表于 02-24 06:30