数字IC后端小白学习日志---007 day(04脚本与实战-place)

        脚本与实战系列断更了几天,今天来补上一篇。04脚本--placeopt.tcl

        正如脚本的名字那样,这是std cell的摆放。同样的,先展示一下运行脚本后的结果。

然后细看一下std cell的摆放

看到这些有动力了吗?有动力了就来学习吧

还是一项一项分析

一。准备工作

仍然是Source 00脚本和procs脚本。source的脚本同03脚本一样,00脚本不懂得可以去看:数字IC后端小白学习日志---000 day(介绍00脚本)-CSDN博客

procs脚本在接下来本文后部分也会介绍。其他的也很简单,不懂的可以看之前的文章。

restoreDesign之后的界面:

二。一些配置

        一些配置工作,这些配置工作的目的都只有一个,为了保证place能够达到一个预期的,比较好的效果。

(2.1)优化的基本设置

基本常用的一些设置:

setDesignMode

        -node,别称“超级开关”,是比较重要的一个设置,可以针对某一种特定的工艺做一些基础的设置。它的选项很多,分别对应不同Foundary的不同工艺的区别,N系列就是台积电的,S系列就是三星的。。。

        -process,相比于-node,-process是更通用的设置,因为可以看到-node里面的都是20以下的,此处用到的工艺是45,所以使用更为通用的-process 45。在成熟的工艺中,都有特定的数字去代替,比如40,28等等。

setAnalysisMode

这里面主要是关于一些timing的设置

        -analysisType {single | bcwc  | onChipVariation}

        其中OCV(onChipVariation)模拟的PVT条件的偏差会更接近实际情况,会减少一些不必要的悲观量。

        -cppr 是关于clock line上的common path的一个处理方式。

setOptMode

        工具在优化的过程中会增加很多新的Cell,对于这些Cell,我们希望他们都带一个我们能快速辨别他们的名字。也就是Prefix(前缀)。当然,可以给Instance加Prefix,那么也可以给Net加Prefix。

        -addInstancePrefix “PRECTS_”

        -addNetPrefix “PRECTS_NET_”

我们在做PR和Signoff的时候其实是不太在意这些的。而其他的一些工具在读入网表的时候会规定Instance的name和Net的name是不能一样的。

        -powerEffort none

 此项目此处不太关心Power,所以使用-powerEffort none给关掉。

        还有一些[-maxDensity <density>] [-maxLength <length>]等等在实际应用中根据需要去调。

setTieHiLoMode

这条命令本身只是去控制那些加的Tie-high和Tie-low的Cell,也就是说在电路中某些地方电平需要拉高和拉低,就需要专门的Cell去做这些连接。

        -maxFanout 2 ,就是设置一个Tie cell可以连接几个Fanout。若设置的太大,可能出现的问题:需要拉高的时候拉不高,需要拉低的时候拉不低。若是设置的太小,可能导致Tie Cell最后局部的density会出现问题。

        -honorDontTouch true ,就是设置为honorDontTouch的情况下到底要不要加Tie,一般加的DontTouch都是工程师自己加的,也就是真的不希望动的地方,所以设置为true

        -honorDontUse true,同上一样,是工程师真的不需要用到的,所以设置为true。

        -prefix “PRECTS_TIE_” ,给加的Tie cell加一个Prefix(前缀)。便于识别。

        -cell {TIEHI TIELO} 就是指定我们需要加的Tie Cell的类型

这样Common的一些设置就完成了

(2.2)Routing(绕线)的一些设置

setDesignMode

也是在setDesignMode里面,设置Top和Bottom层的绕线层,就是告诉工具只能用哪些层进行绕线,此处就是告诉工具只能用Metal1-Metal9进行绕线。

        -topRoutingLayer Metal9

        -bottomRoutingLayer Metal1

setNanoRouteMode

注意这里的绕线是globalroute,它不是真正的绕线。

        -routeWithTimingDriven -true 也就是告诉工具在绕线的时候考虑时序。

(2.3)macro和ports的设置

这里关于macros和ports的设置就是把他们都 fix 住,否则工具在place的过程中可能会挪动macro和port。

macro:

ports:

关于dbGet和dbSet后续会出一个专题,专门进行练习。

(2.4)path groups

工具在优化的时候会对timing path根据它的特点分成不同的path group

常见的path groups就是以下四种。

group_path

        -name     设置的名字而已

        -from        pathGroup的开头

        -to            pathGroup的结尾

setPathGroupOptions

        -effortLevel  对不同的path group的关注不一样,如此处,我们关心erg2reg,所以把reg2reg的effortLevel设置为high

(2.5)set_dont_use_cells

就是设置一些不用的cell。此处很简单,不再介绍

 (2.5)drv

设置一些drv的约束

set_max_transition

        -clock_path 200 [all_clocks] -override

        -data_path 400 [all_clocks] -override

        一般可以按照clock_cycle的比例来定,对clock上面的transition一般定为5%-8%,对data上面的transition一般定为15%-20%

输入命令后报错:

因为我们的viewDefinition文件已经读进去了,已经读好了,这个时候想要去该里面的设置,timing constraint的话是不能直接改的。

提示我们 man TCLCMD-1048,那我们去man一下

告诉我们需要set_interactive_constraint_modes

set_interactive_constraint_modes

        all_constraint_modes -active  此处需要记住

然后最后需要set_interactive_constraint_modes {},即修改后又设为默认值

(2.7)set_clock_uncertainty

可以理解为加margin的过程,在不同的阶段加的margin都不一样,此处了解即可

三。procs.tcl

这个脚本主要的作用就是

把所有的叫si的term(si_term)给Get出来。分别对它们:

        (1)set inst_name

        (2)set net_name

        (3)把Instance的terminal 通过detachTerm的命令把连在一起的net给断掉

四。跑place_opt

执行place的命令就是place_opt_design

place_opt_design

        -expanded_views 就是告诉工具不要做view的merge

        -out_dir 就是告诉工具输出的path放在哪个地方

        -prefix ”innovus_placeopt“

输入此命令。发现了有error。

在设计中有scan chain但是没有scan def。

这个error解决的办法:把scan的连接断掉再去跑,这里就需要讲到前文中提到的procs.tcl脚本了。

然后运行

报错

让source这个脚本,我们source一下

source成功,然后就可以再次运行palce_opt_design进行place了

五。查看place的过程中的一些log(不全部)

(5.1)User setting

一开始的log是User setting,这也是检查自己设置的一些方法。不管前面怎样设置,此处打印的值若和前面不一样,就是设置的有问题,没有吃进去。

(5.2)GigaPlace

就是innovus里面做place的引擎的名字

(5.3)early globalRoute

就是告诉我们early globalRoute时候每一层的length的信息和vai的信息

(5.4)initial timing的信息

六。运行后的Report

(6.1)report_analysis_summary -late

        -late 代表是setup

        我们此处不显示任何东西,因为没有violation,如果有violation,那么就会有信息

(6.2)reportGateCount

        告诉我们这个Design的规模有多大,有多少cell,折合成Gate是多少,Area是多少等。

(6.3)report_timing

  • 52
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值