lijiasen.xy的个人空间 https://blog.eetop.cn/1778649 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

关于使用Ostrich调整RC scale的方法

热度 19已有 3239 次阅读| 2022-7-21 18:10 |个人分类:后端EDA-cadence|系统分类:芯片设计| 后端EDA

后端EDA在pr过程中需要抽取寄生参数,通过寄生参数来计算延时-delay;

但是抽取寄生参数需要用到不同精度的文件和不同精度的抽取引擎,在个别的工艺上可能会导致preroute和之前的阶段与postroute的signoff阶段的差距较大,简单举个例子:

我使用innovus来做pr,然后使用starc来抽取寄生生成spef文件,再由pt报告时序,可能会发现在innovus中所有时序已经没有问题,但是pt中还是有violation,这种情况一部分是工具算法的原因,还有一个就是starc和innovus抽取寄生时差距很大,精度与engine都不同,为了调整工具之间的协调性,可以通过对比spef来调整RC Factor来实现。

create_rc_corner \

-name min \

-cap_table $captable_min_file \

-preRoute_cap 0.943 \

-preRoute_res 0.680 \

-preRoute_clkcap 1.049 \

-preRoute_clkres 0.254 \

-postRoute_cap {0.943 0.943 1.0} \

-postRoute_res {0.680 0.680 1.0} \

-postRoute_clkcap {1.049 1.049 1.0} \

-postRoute_clkres {0.254 0.253 1.0} \

-postRoute_xcap 0.9696 \

-T $min_op_T \

-qx_tech_file @qrctechfile

调整RC factor有两个方法:

一、可以使用命令generateRCFactor来生成RC scale factor

image.png

二、使用Ostrich


1.根据routed DEF文件,使用signoff抽取引擎来抽取一个spef文件。

2.使用命令设置一个工艺节点值

setDesignMode –process processnode

3、设置preRoute和postRoute的-effortLevel low引擎,通过读取captable文件抽取互连线的电容值。

4、生成spef,通过extractRC和rcOut命令。

preRoute应该在trail route阶段,postRoute应该在nanoroute阶段生成spef。这样可以提高校正。

5、使用Ostrich 寄生校正工具来对比spef。

6、在未来run 本地抽取前,指定这些比例因素,在create_rc_corner命令中。Pre.post

7、重新run extractRC命令来抽取spef文件,这些文件包含了矫正后的电容、电阻值。


Ostrich是EDI系统中一个独立的实用程序。

1、在EDI使用终端中输入ostrich

image.png


2、点击file-import-SPEF

image.png

3、在SPEF
Import表单中,指定signoff SPEF文件的名称,在Data Set name字段中指定“Data
Set Name filed”字段中的名称。
接下来,单击Import按钮在Ostrich窗口中添加SPEF值。要关联电阻值,请选择“Extract Resistance”选项。

4、相同导入本地抽取的spef文件

5、单击Correlate-Build,

6、选择Golden为signoff
spef,target为本地抽取spef

image.png

image.png


7、选择Bulid TCAP按键,Bulid RES按键,

Bulid XCAP按键,单击Bulid。

image.png
8、在Ostrich界面,单击Correlate-Draw Plot

Plot 界面展示了建议scale factor


image.png


可以在tech file中改ScaleFactor,

使用命令create_rc_corner中的-pre and –post参数

可以设置在preRoute或postoute提取模式下提取的电阻和电容的比例因子。通过将postRoute引擎变量指定为双组和三组,可以为它们设置不同的postRoute比例因子。例如,{value1 value2 value3}

Single value:如果指定一个值,则被使用与effort low精度,精度为medium和high默认使用比值为1

Duplet: 如果指定两个值,第一个值被使用于low,第二个值被使用于medium,high还是1

Triplet:以此类推

create_rc_corner -postRoute_xcap {1.1 1.05} -postRoute_cap 1.2 -postRoute_res 1.1 -preRoute_cap 1.3 -preRoute_res 1.4 -preRoute_clkcap 1.11
注:使用saveDesign命令之后,设置会被保存到viewDefinition.tcl中,

除了时钟的scale的值都为1.所有默认的时钟net的比例值为0。暗示为时钟线的scale值跟随匹配的信号线的比例值。

但是比较坑的是,starc的spef为加密格式,此工具识别不了,所以最后还是改用了cadence家的qrc工具,如果一定要用starc,只能通过reportDelayCalculation和report_delay_calculation来手动计算比例了,如果有好的方法能够调节innovus和pt之间的协调性,欢迎大佬在下面留言,谢谢!

哎,starc抽spef的脚本中不知道什么时候加了一句NETLIST_COMPRESS_COMMAND: gzip -q,删掉就不是加密的spef了!






7

点赞

刚表态过的朋友 (7 人)

发表评论 评论 (3 个评论)

回复 林137 2023-12-4 19:47
大佬,为什么我这边抽取的spef 反标可以成功,但是ostrich 却一直报错,与starrc的option有关吗? 报错log (read_spef): Net 'u01_mbist_test_block/u02_mbist_core/u02_core_cfg/u10_dm_cap/u_cap_ram/ram_mem[9692]' does not have a driver.
回复 lijiasen.xy 2023-12-5 10:15
林137: 大佬,为什么我这边抽取的spef 反标可以成功,但是ostrich 却一直报错,与starrc的option有关吗? 报错log (read_spef): Net 'u01_mbist_test_block/u02_mbist_c ...
不好意思哈,我也不知道咋回事
回复 不想加班对不队 2024-1-26 10:59
大佬,请问我用generateRCFactor指令生成的.rpt文件带ostrich前缀,是innovus调用了ostrih吗

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 6

    总排名
  • 6

    关注
  • 79

    粉丝
  • 35

    好友
  • 167

    获赞
  • 181

    评论
  • 1305

    访问数

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 12:17 , Processed in 0.013127 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部