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

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

3天内不再提示

Tweake生成Timing 文件及生成Tweaker的主脚本介绍

芯华章科技 来源:芯行纪 作者:芯行纪 2021-07-28 16:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作为第一次使用Tweaker的新手,可能会担心Tweaker流程很麻烦。

不过无需担心,Tweaker功能丰富,而且提供了完整的、经过大量项目验证的、可以直接使用的参考流程。只要简单配置一下输入文件,就可以快速地把Tweaker运行起来。

这篇短文将手把手教大家运行Tweaker,让你们直观感受Tweaker参考流程的魅力。

Job Monitor

分析剩余没有修掉的原因

查看修复结果

P&R工具里实现ECO

Testcase介绍

这里是一个真实的设计。刚运行完icc2,拿到了route_opt的database,PTSI的结果如下:

53d4aa94-ed0e-11eb-a97a-12bb97331649.png

Setup Violation有1710条,Hold Violation有816条。注:这里的条数是按Endpoint(nworst=1)算的,不是按照Path来算的。

Hold时序还可以,但是Setup有点差了。不过没关系,可以拿来试下流程,不用追求Signoff Quality的PR结果。

接下来开始搭建Tweaker的流程,一共3个步骤:生成Timing文件、生成Tweaker的主脚本和运行Tweaker修Timing。

Tweaker流程step 1:生成Timing文件

Tweaker需要读PT的Timing文件,包括SDF、TWF、Violated Path Report等。

Tweaker提供了脚本,可快速从PT的Session里dump这些文件出来。脚本在Tweaker的安装目录下:。/etc/scripts/tcl/pt,如下图(局部截图)所示:

54318d68-ed0e-11eb-a97a-12bb97331649.png

只需要用其中一个主脚本即可。因为这个Design的STA用的是GBA Mode,所以可用如下脚本:dump_pt_to_tweaker.tcl。

用PT直接source这个脚本(需指定PT Session的位置),就能生成所有需要的Timing文件,如下图所示:

546f60a2-ed0e-11eb-a97a-12bb97331649.png

Tweaker流程step 2:生成Tweaker的主脚本

搭建Tweaker流程脚本不用从零开始,Tweaker的安装目录下,有大量的、完整的、可以直接使用的参考脚本。

54abc15a-ed0e-11eb-a97a-12bb97331649.png

从上图可以看到,基本上所有的ECO功能和主流的工艺,都有参考脚本。而我们也不用自己去挑所需的工艺或功能,Tweaker自带的Scripts Generator功能,能快速生成所需的Tweaker脚本。

在Tweaker的安装目录下(。/ect/template/twk_

utilities/special_command/script_generator),有个Script Generator的脚本,只需要去配置两个config文件:tweaker_settings.config和script_tmplate。配置完这两个文件后,就可以生成Tweaker的脚本,然后可以开始做ECO。

第一个配置文件tweaker_settings.config:用于配置Tweaker的输入(如下图)。

55188cea-ed0e-11eb-a97a-12bb97331649.png

把lib库、lef/def、网表,还有上一步生成的Timing文件等都填进去,修Timing所需的Buffer、Delay Cell等也可以填进去。

第二个配置文件script_template:用于配置ECO的流程,比如修Timing的策略、修哪些Violation、用的什么工艺等等(如下图)。

557385c8-ed0e-11eb-a97a-12bb97331649.png

对这个Case,PR工具可以选择icc2,STA工具选择pt。它提供了很多ECO的功能选择,这个Design可以先只修Setup和Hold。还有这个Design规模比较小,选择用twf的模式来修,可以减少ECO迭代次数。

同时可以把Job Monitor打开,方便进行Debug。

配置完两个文件后,用Script Generator生成Tweaker主脚本:

5598d3f0-ed0e-11eb-a97a-12bb97331649.png

主脚本run.tcl生成后,run.tcl就会去调用所需要的各种脚本,不用我们亲自去找。接下来就可以运行Tweaker了。

Tweaker流程step 3:运行Tweaker修Timing

这一流程用一个命令即可搞定:tweaker -t -cmd run.tcl。它就能按照我们的配置,去做Setup ECO和Hold ECO。

此外,除了简单的Tweaker Flow,Tweaker还提供强大的Debug功能:Job Monitor。

Job Monitor

刚才我们在配置文件里把Job Monitor设为1,所以运行Tweaker时会自动弹出Job Monitor界面,此处可以查看ECO的进度以及其他信息。

55d2b408-ed0e-11eb-a97a-12bb97331649.png

Job Monitor里有大量非常有用的信息,比如可以看到“Task Table”里的步骤,包括它们都做了什么,每个步骤分别花了多少时间:

先是Datain,包括verilog、def、slack rpt、spef、sdf、twf等;

其次是Consistency Check,确保输入的文件没有问题;

然后开始修Setup,用了6种不同的方法去修;

接着开始修Hold,用了8种不同的方法去修;

修复结束,写ECO脚本、报告和存Session。

如果想看修Setup的6种方法分别有什么效果,可以点击左上角的“Scripts Finished”按钮,然后得到以下曲线:

56337860-ed0e-11eb-a97a-12bb97331649.png

由上图可见,一开始有1706个Violated Endpoints,然后Fix Setup第一个步骤将Violated Endpoints数目降到了446个,第二个步骤继续降到了347个……直到第6个步骤降到了315。然后是修Hold的步骤,可以看到修Hold时并没有损害Setup,Setup保持得非常好。

也可以看修Hold的曲线:

5660004c-ed0e-11eb-a97a-12bb97331649.png

最开始有809个Hold Violated Endpoints。Setup修完后,Hold还有762条,保持得非常好。这是因为Tweaker在修Setup时会看Hold,同时在修Hold时也会看Setup。

Hold第一个步骤从762条修到了549条,第二个步骤修到了80条……到最后一个步骤,Hold只剩下54条了。

通过这张图,不仅能看到修复的过程及结果如何,还可以快速分析出哪些步骤是最有效的,哪些步骤是低效或者无效的,然后可以有针对性地去改进。

查看修复结果

可继续用Job Monitor查看Summary。点击Job Monitor界面上的Action Buttons -》 Tweaker QoR Info -》 QoR summary,会弹出网页格式的Summary,信息非常丰富,此处可挑一些重点看看:

569611a0-ed0e-11eb-a97a-12bb97331649.png

在这里能快速看到,这个Design总共有224k的Instance,但在ECO Domain里只有8.5k的Instance,只占总Cell的1/3。这就是为什么ECO Domain能大大降低Memory使用和减少Runtime的重要原因之一。如果不用TWF Mode来修,而是基于slack rpt来修,ECO Domain可以继续降低到10%,Runtime还可以再加快4倍!

看修复率:

56ccdb2c-ed0e-11eb-a97a-12bb97331649.png

Setup:按Endpoint个数算,修复率是83%;按Total Path TNS算,修复率是90%。

Hold:按Endpoint个数算,修复率是93%;按Total Path TNS算,修复率是64%。

最后再看看ECO的Cost:

56d90834-ed0e-11eb-a97a-12bb97331649.png

情况一目了然——总共插了1133个Cell(Buffer、Inverter、Delay Cell等),Size了32017个Cell,Cell面积约增加438.2,时间约20分钟,用了近6.7GB的Memory。

分析剩余没有修掉的原因

根据修复结果,Setup/Hold还有一些没有修掉,为什么呢?Tweaker提供了多种分析功能,可选择其中一种方法来分析——

打开Slack Review,如下图:

56fca802-ed0e-11eb-a97a-12bb97331649.png

总共290条Setup Violated Endpoints,都在ssgnp_0p675v_125c里。其中Clock Gating占了24条,core_clock_0占了266条。

点击clock_gating_default那一行,下面就会列出这个Group所有的Violated Path。

可以看到,这些Path虽然还有Slack,但是Slack都已经有所改进(Diff这一栏是改进的值),有的改进少些(比如Path 3679,改善了17ps),有的改进了很多(比如Path 3478,改进了57ps)。

ICG的Timing本来就很难修,加上Clock Skew很大(参考Skew那一行),所以剩下的Path的确难以修复。但可以继续看看具体是哪些潜在因素导致修不下去,比如双击第一条Path 3679,可得到如下Path View:

576ac24c-ed0e-11eb-a97a-12bb97331649.png

最后一列是Blocking Code,它解释了这个Cell不能继续修的原因是什么。随意点击上面一个B086做参考,出现下图:

5795e562-ed0e-11eb-a97a-12bb97331649.png

它除了解释Blocking Code的意思,同时还给出了可能的解决方案,即相关的三个变量,我们可以调整这三个变量的值来进一步改进修复率。

由于篇幅限制,此处不展开叙述。

P&R工具里实现ECO

把刚才Tweaker写出来的ECO tcl文件给icc2做ECO:

icc2_shell》 source ECO.icc2_high_level.tcl。

icc2执行结果如下:

57b7603e-ed0e-11eb-a97a-12bb97331649.png

可以看到,所有的ECO动作都没有问题,都被成功地执行了。

然后检查Legality:check_legality

57d1b2cc-ed0e-11eb-a97a-12bb97331649.png

可以发现,新加的Cell和Size的Cell没有任何的Legality的问题。这就是Tweaker的Physical-Aware的强大之处。0 Displacement能让ECO Route带来的影响最小!

接下来做ECO 绕线:route_eco。

ECO绕线后,导出数据,给STARRC和PT再做一次STA分析。看看ECO后,真实的Timing如何:

57f1db9c-ed0e-11eb-a97a-12bb97331649.png

可以看到,Tweaker修完后的Violation条数,和PT看到的很接近,也就是Tweaker和PT的Correlation非常好。

Tweaker提供了强大的、易用的脚本,所以即使是新手,上手也非常快。同时,这些脚本经过很多项目实践,所以基本不用做什么修改,拿来即用。

同时Tweaker也提供了强大的Debug功能,即使是新手,也能快速分析问题所在。

编辑:jq

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

    关注

    0

    文章

    54

    浏览量

    15401

原文标题:Tweaker详解系列 | ECO流程的典型实例应用

文章出处:【微信号:X-EPIC,微信公众号:芯华章科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    泰克MP5000系列的TSP Toolkit I-V脚本生成功能

    。这一全新功能(当前为Beta测试版本),允许您为MP5000系列模块化精密测试系统中的每个SMU或PSU模块配置多种输出的偏置与扫描操作,并可自动生成用于测试流程的TSP脚本
    的头像 发表于 11-24 13:53 2765次阅读
    泰克MP5000系列的TSP Toolkit I-V<b class='flag-5'>脚本生成</b>功能

    使用NucleiStudio生成tb仿真需要的.verilog文件

    project编译后生成仿真需要的.verilog文件: 1.打开一个工程,右键选择工程名,打开Properties: 2.选择C/C++ Build -&gt;setting,在
    发表于 11-05 07:07

    win10环境下使用vivado生成.bit与.mcs文件

    ,这里介绍一种可以直接在windows环境下使用vivado生成system.bit和system.mcs文件的方法。 1.在windows环境安装vivado,准备好e203_hbirdv2工程
    发表于 10-27 08:25

    使用env生成的keil文件好多文件找不到路径,为什么?

    使用env生成文件,使用了 scons —target=mdk5 —dist命令生成文件 但是用mdk打开后全是报错 请问大佬有遇到这种情况吗
    发表于 09-23 06:41

    如何利用 DDR 参数文件生成 Linux 映像?

    如何利用 DDR 参数文件生成 Linux 映像
    发表于 09-02 06:39

    生成式 AI 重塑自动驾驶仿真:4D 场景生成技术的突破与实践

    生成式AI驱动的4D场景技术正解决传统方法效率低、覆盖不足等痛点,如何通过NeRF、3D高斯泼溅等技术实现高保真动态建模?高效生成极端天气等长尾场景?本文为您系统梳理AI驱动的4D场景生成体系及其在自动驾驶仿真中的实践价值。
    的头像 发表于 08-06 11:20 4772次阅读
    <b class='flag-5'>生成</b>式 AI 重塑自动驾驶仿真:4D 场景<b class='flag-5'>生成</b>技术的突破与实践

    AICube生成部署文件失败的原因?怎么解决?

    我按照网上的方法安装了dotnet,和AICube,并且我是安装在非中文路径,但是尝试了一天了,都不能成功的生成部署文件,我使用软件自带的样例,但是就是不能生成部署文件 期待结果和实际
    发表于 08-05 06:26

    AI生成的测试用例真的靠谱吗?

    软件测试正经历一场深刻的技术革命。AI,尤其是以GPT、通义千问、文心一言、Claude等为代表的大语言模型(LLM),开始广泛介入测试流程:从需求分析、测试用例设计,到脚本生成与测试报告撰写,AI
    的头像 发表于 08-01 10:02 1403次阅读
    AI<b class='flag-5'>生成</b>的测试用例真的靠谱吗?

    求助,关于GUIguider1.9.0界面上方生成字体功能问题求解

    GUIguider1.9.0 界面上方 工具-->>生成字体选项,生成的字体 会在单独的一个文件中,在界面上,假如创建一个
    发表于 03-28 07:07

    超详细!FMU生成器用户手册来啦~

    FMU生成器是TSMaster中用于将模型打包生成FMU文件的一个工具,目前支持FMI3.0和FMI2.0版本,FMU类型仅支持Co-Simulation(CS),即联合仿真FMU。本文将介绍
    的头像 发表于 01-17 20:02 1632次阅读
    超详细!FMU<b class='flag-5'>生成</b>器用户手册来啦~

    生成式AI工具好用吗

    当下,生成式AI工具正以其强大的内容生成能力,为用户带来了前所未有的便捷与创新。那么,生成式AI工具到底好用吗?答案无疑是肯定的。接下来,AI部落小编带您了解。
    的头像 发表于 01-17 09:54 816次阅读

    使用stm32cubeMX无法生成mdk工程文件

    几年前使用过cubemx,可以生成keil的工程文件。最近有个工程使用cubemx创建,结果只能生成stm32cubemx类型的文件,无法生成
    发表于 01-04 20:03

    飞凌嵌入式ElfBoard ELF 1板卡-内核移植之编译后生成文件说明

    Linux内核编译完成之后,会生成大量的中间文件和目标文件,我们这里只介绍比较重要的几个文件。 我们所关注的最终需要烧写到开发板的是.dt
    发表于 12-19 09:11

    飞凌嵌入式ElfBoard ELF 1板卡-内核移植之编译后生成文件说明

    Linux内核编译完成之后,会生成大量的中间文件和目标文件,我们这里只介绍比较重要的几个文件。我们所关注的最终需要烧写到开发板的是.dtb设
    发表于 12-18 08:52

    SRIO介绍及xilinx的vivado 2017.4中生成srio例程代码解释

    1. 概述 本文是用于记录srio的学习情况,以及一些对xilinx的vivado 2017.4中生成srio例程代码的解释。 2. 参考文件 《pg007_srio_gen2》 3. SRIO协议
    的头像 发表于 12-10 16:24 4464次阅读
    SRIO<b class='flag-5'>介绍</b>及xilinx的vivado 2017.4中<b class='flag-5'>生成</b>srio例程代码解释