• PT教程


    本文转自:自己的微信公众号《集成电路设计及EDA教程》

    《PT教程 - 应用系列 - ECO修复Timing(理论+实践+脚本分享)》

    这篇推文讲一下数字IC设计中的post mask ECO和premask ECO,并讲解一下在ICC中Apply ECO的流程。

    理论:

    前面介绍了在ICC中Apply ECO的方法与流程,但是ICC并非Timing Signoff的一个工具,在ICC中做完布局布线之后,需要到PT中做STA,在Formaliry中做形式验证等等,如果存在违反需要进行ECO。

    流程及脚本分享:

    这里以修复hold为例,介绍一下PT ECO的方法并分享一下脚本。

    首先在PT中进行STA,在任意一个scenario下面,如果存在timing的违反,最好将违反的path报告导出为一个文件,且不分行,这样便于用进程进行处理(如果同一个路径的报告换行的话格式会有点混乱,不便于处理)。可以用上面的redirect命令导出。

    修复hold的方法一般就是在endpoint插入buffer或者delay cell。

    下面是PT调用的修复hold的进程:

    修复完成后需要再报告一下看是否还存在违反,如果还有违反就再次执行该进程:

    sta_fix_hold_file ../../backend/pt/sta_rpts/hold_vio.timing “icc”

     

    下面给出该tcl代码,并对该程序进行讲解:

    #sta_fix_hold_file是进程的名字,要想调用该进程可以用如下格式:

    #sta_fix_hold_file file_name(即PT产生的timing violations报告) icc/astro(设置PT产生ECO tcl脚本是用于astro的还是icc的)

    # buf_lst后边是buffer或者delay cells的list,这些cells可被用于修复hold。

    proc sta_fix_hold_file {file_name {tool icc} {buf_lst {DEL1V1_8TH40DEL1V2_8TH40 DEL2V1_8TH40 DEL2V2_8TH40 DEL3V1_8TH40 DEL3V2_8TH40 DEL4V1_8TH40

    DEL4V2_8TH40 BUFV0_8TH40 BUFV12RQ_8TH40BUFV12_8TH40 BUFV16RQ_8TH40

    BUFV16_8TH40 BUFV1_8TH40 BUFV20RQ_8TH40BUFV20_8TH40 BUFV24RQ_8TH40

    BUFV24_8TH40 BUFV2_8TH40 BUFV32RQ_8TH40 BUFV32_8TH40BUFV3RQ_8TH40

    BUFV3_8TH40 BUFV40RQ_8TH40 BUFV40_8TH40BUFV4RQ_8TH40 BUFV4_8TH40

    BUFV6RQ_8TH40 BUFV6_8TH40 BUFV8RQ_8TH40BUFV8_8TH40}}} {

       set f [open $file_name r]

       gets $f line

       set end_path [lindex $line 0]

    #regexp 命令(regexp expstring)用于判断正规表达式exp 是否全部或部分匹配字符串string,匹配返回1,否则0。

       while {![regexp {^Endpoint}$end_path]} {

       gets $f line

       set end_path [lindex $line 0]

       }

    #TCL 提供了seek,tell和eof 等命令使用户可以非连续访问文件。

    #eof fileId

    #如果到达fileId 标识的文件的末尾返回1,否则返回0。

    #string 命令具有强大的操作字符串的功能,其中的option 选项多达20 个。下面介绍其中常用的部分。

    #string compare ?-nocase? ?-length int? string1 string2

    把字符串string1 和string2 进行比较,返回值为-1、0 或1,分别对应string1 小于、等于或大于string2。如果有 -length 参数,那么只比较前 int个字符,如果 int 为负数,那么这个参数被忽略。如果有 -nocase 参数,那么比较时不区分大小写。

       while {![eof $f]} {

       gets $f line

       set end_path [lindex $line 0]

       if { [string compare $end_path""] && ![regexp {^---} $end_path] && ![regexp {^1}$end_path] } {

         puts "###fix holdviolation###current hold violated end point =============> $end_path"

         fix_eco_timing -type hold-method insert_buffer -to $end_path -buffer_list $buf_lst

       }

      }

    #注意有个!{regexp {^1} $end_path},这是因为在生成报告的末尾会有个1,不能将其视为hold的违反。

      close $f

      if {$tool == "astro"}{

        write_astro_changes -formatscheme  eco_fix_hold.cmd

      } elseif {$tool =="icc"} {

        write_changes -format icctcl-output  eco_fix_hold.tcl

      } else {}

    }

    #使用范例,先报告PT中的hold违反:

    report_timing -delay_type min

         -start_end_pair

         -slack_lesser_than -0

         -path_type end

         -nosplit >../../backend/pt/sta_rpts/hold_vio.timing

    软件产生的报告是这样的(下面给的图片中slack没有小于-0的,所以用slack小于0.12的为例,主要关注报告的格式。由于系统精度与显示的问题,注意一定要在0前面加上负号,因为某些slack非常小的正数由于精度的问题,会四舍五入成0.00):

    #调用进程修复hold违反

    sta_fix_hold_file ../../backend/pt/sta_rpts/hold_vio.timing"icc"

    # ../../backend/pt/eco_fix_hold.tcl

    #修复完成后在PT中检查是否还存在hold的违反

    check_timing

    update_timing

    report_timing

    #report_timing -delay_type min

    report_constraint -all_violators -min_delay

    在PT产生ECO脚本之后,便可以在ICC中take ECO了。

    更多资料欢迎移步微信公众号《数字集成电路设计及EDA教程》

     

    网易云课堂视频课程

      

    链接:https://study.163.com/course/introduction/1005909004.htm

    Calibredrv教程-提高流程自动化

    ##  为了方便大家交流讨论  ##

    ##  建了一个QQ群  ##

    ## 集成电路设计及EDA教程  ##

    ## 加群请备注:EDA  ##

    ##  群二维码如下  ##

    # 本公众号有个红包和资料福利微信群  #

    #  集成电路设计及EDA教程福利群  #

    #  为了避免乱七八糟的人加进来  #

    #  可以先加我微信,我拉你进群  #

    #  加我微信 请备注下面问题的答案  #

    #       ASIC的全称       #

  • 相关阅读:
    [C#][Log4Net] 配置
    C# 浅拷贝与深拷贝(复制)
    AJAX学习
    Web应用程序与Web网站在IIS中部署
    hexo配置主题发表文章
    【JQuery】学习
    Hexo博客网站再配置
    win7安装和配置IIS7
    常见正则表达式
    【HTML】id与name的用法
  • 原文地址:https://www.cnblogs.com/ASIC-Horizon/p/11185974.html
Copyright © 2020-2023  润新知