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

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

日志

ECO optional timing

热度 2已有 4551 次阅读| 2010-11-13 20:36

                  ECO  optional timing

                作者:贾柱良

      最近在做一个SOC的芯片,在这过程遇到一个奇怪的问题是eco单元在nanoRoute没法布线,而且是百思不知其解.事情是这样的,这个soc项目后期了,p2r 之后的网表给电路人员去仿真,发现有点问题需要修改,起初前端工程师的想法是:修改RTL代码,从新综合网表然后在P2R,这样整个设计从新跑一次,别的不说这肯定工作量比较巨大,后来我跟前端电路工程师了解电路修改的方案,总的修改的不是特别的多,我提出了自己的建议,思路是这样的,首先修改RTL代码,然后根据RTL代码与之前的P2R的netlist网表用formality做形式化验证,通过逻辑锥比较不匹配的点,直接修改逻辑功能netlist,只要形式化验证通过,就可以确保逻辑功能正确,这样可以节省大量的时间.每想到这哥们采纳了我的建议,这哥们的水平还真不是一般的,没隔一天就把网表修改好了,并交到后端组来了.

  修改的内容大致如下:

  XXX/XXX/U12    dffs (.CLK(fe_clk1),  .D(ic_1), .Q(out1),  .S(rst1))

     修改成XXX/XXX/U12    dffr (.CLK(fe_clk1),  .D(sio_1), .Q(out1),  .R(rest1))

大概ECO有7个这样类似的单元要修改,其中有两种方法可以修改下面分别介绍这两种方法.

   方法1:在encounter中手工修改

  detachTerm XXX/XXX/U12    CLK  fe_clk1(断开fe_clk1 与 CLK pin)

        detachTerm XXX/XXX/U12    D    ic_1  (断开ic_1与 D pin)

        detachTerm XXX/XXX/U12    Q   out1  (断开out1 与 Q pin)

        detachTerm XXX/XXX/U12     S   rst1  (断开rst1与 S pin)

  deleteInst  XXX/XXX/U12     删除这个dffs

      下面是添加dffr单元

  addInst   -inst  XXX/XXX/U12    -cell  dffr   -loc 1000 1000 (在坐标1000 1000原来dffs单元的位置添加dffr目的是减少部分连线的net的长度,有利于时序收敛)

  attachTerm  XXX/XXX/U12   CLK    fe_clk1      

       attachTerm  XXX/XXX/U12     D    sio_1

       attachTerm  XXX/XXX/U12   Q   out1       

        attachTerm  XXX/XXX/U12   R  rest1

 这样整个dffr的单元就连接起来了.

   setNanoRouteMode -routeWithEco

            globalDetailRoute

       如果做时序setuup 和hold分析,如果能通过就可以sign off 

  方法二:

  (a)restore 原来保存的enc文件然后保存floorplan 和 def这两个文件

  (b) import Design 在verilog中指定更新的ECO 的netlist网表

  (c)是用ecoPlace做eco布局单元

  (e)ecoRoute布线

   如果做时序setuup 和hold分析,如果能通过就可以sign off 

我使用的是第一中方法,比较直观而且时序比较好控制,第二种比较省事,而且适合大批量修改,缺点不容易精确的控制单元的摆放位置不利于时序收殓.下面说说我之后使用ecoRoute布线但是发现ECO单元没法没有布线,试过很多种方法都没有解决,后来又浏览designBrower的逻辑网表觉得这单元很可疑,使用selectInst去查找该instance在encounter中没有找到该单元,原来是该instance没有摆放,目前处于unplace状态,再通过checkPlace 命令果然该instance是unplace,之后使用了ecoPlace从新ECO布局 再使用ecoRoute之后去查看所有的eco单元,好拉所有的eco单元的pin都连线啦.再用verifyConnect去检查,在也没有发现unconnnet pin和open  net.原来encounter有这样一种功能如果有单元是unplace状态,那么eco之后的单元就没法布线.

   经验总结在设计过程中多使用checkDesign  checkPlace  verifyConnect  verifyGeometry命令查看设计否有异常.

1

点赞

刚表态过的朋友 (1 人)

发表评论 评论 (1 个评论)

回复 lijiasen.xy 2022-5-9 15:58
非常好的文章,感谢分享

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 3

    粉丝
  • 0

    好友
  • 5

    获赞
  • 12

    评论
  • 2356

    访问数
关闭

站长推荐 上一条 /1 下一条

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

GMT+8, 2024-4-27 08:28 , Processed in 0.028035 second(s), 15 queries , Gzip On, Redis On.

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