本文转自:自己的微信公众号《集成电路设计及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的全称       #

PT教程 - 应用系列 - ECO修复Timing(理论+实践+脚本分享)的更多相关文章

  1. ICC教程 - Flow系列 - 概念系列 - ECO (理论+实践+脚本分享)

    本文转自:自己的微信公众号<集成电路设计及EDA教程> <ICC教程 - Flow系列 - 概念系列 - ECO (理论+实践+脚本分享)> 这篇推文讲一下数字IC设计中的po ...

  2. Innovus教程 - Flow系列 - MMMC分析环境的配置概述(理论+实践+命令)

    本文转自:自己的微信公众号<集成电路设计及EDA教程> <Innovus教程 - Flow系列 - MMMC分析环境的配置概述(理论+实践+命令)>   轻轻走过,悄悄看过,无 ...

  3. Innovus Lab和Lab Guide下载地址 | Innovus教程 - Flow系列 - 数据准备

    本文转自:自己的微信公众号<集成电路设计及EDA教程> <Innovus Lab和Lab Guide下载地址 |    Innovus教程 - Flow系列 - 数据准备>   ...

  4. android 教程实例系列

    用户界面部分学起来还真是无处下手哇,总不能一个控件发一篇文吧,略有点费时间啊...这个难道不是边用边学才给力吗..所以我打算从最实用的Button开始下手. 先贴几个链接,好东西: android用户 ...

  5. 40款非常棒的 jQuery 插件和制作教程(系列一)

    jQuery 在现在的 Web 开发项目中扮演着重要角色,jQuery 让网站有更好的可用性和用户体验,让访问者对网站留下非常好的印象.jQuery以其插件众多.独特.轻量以及支持大规模的网站开发闻名 ...

  6. opencv-python教程学习系列13-图像平滑

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍图像平滑,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: 系统环境 系统: ...

  7. opencv-python教程学习系列12-图像阈值

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍图像阈值/二值化,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: 系统环境 ...

  8. opencv-python教程学习系列11-几何变换

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍几何变换,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: 系统环境 系统: ...

  9. opencv-python教程学习系列10-颜色空间转换

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍颜色空间转换,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: 系统环境 系 ...

随机推荐

  1. AnyDesk免费远程工具

    AnyDesk是一款声称速度最快的免费长途衔接/长途桌面操控软件,是前TeamViewer开发小组人员自立门户的商品,它拥有领先的视频压缩技能DeskRT,能够轻松穿透防火墙/路由器,实测在电信.移动 ...

  2. Ant Design 表单中getFieldDecorator、getFieldValue、setFieldValue用法

    Ant Design 表单中getFieldDecorator.getFieldValue.setFieldValue用法 一.getFieldDecorator getFieldDecorator是 ...

  3. AcWing 240. 食物链 | 并查集

    传送门 题目描述 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形. A吃B, B吃C,C吃A. 现有N个动物,以1-N编号. 每个动物都是A,B,C中的一种,但是我们并不知道它到底 ...

  4. C# 将Word转为PDF、XPS、Epub、RTF(基于Spire.Cloud.Word.SDK)

    本文介绍通过调用Spire.Cloud.Word.SDK提供的ConvertApi接口将Word转换为PDF.XPS.Epub.RTF以及将Docx转为Doc格式等.调用接口方法及步骤参考以下步骤: ...

  5. java架构之路(多线程)大厂方式手写单例模式

    上期回顾: 上次博客我们说了我们的volatile关键字,我们知道volatile可以保证我们变量被修改马上刷回主存,并且可以有效的防止指令重排序,思想就是加了我们的内存屏障,再后面的多线程博客里还有 ...

  6. 小程序和wepy做循环渲染如何点击拿到相对应的值

    数据和其他的就忽略,简单上手,wepy的for渲染方式改成对应的就行,传参触发不用改 <view wx:for="{{list}}"> {{item.title}} & ...

  7. CF825G Tree Queries

    [题意] 一棵树有 n个节点,初始均为白色,有两种操作: 1. 1 x 代表把结点 x 设置为黑色 2. 2 x 代表查询 x 到树上任意一个黑色结点的简单路径上的编号最小的结点的编号 输入 t 和 ...

  8. HTTP1.1

    读了一本图解http,总结一下子. 1 .重要的头部   1.TCP/IP 通信传输流 五层模型 先盗个图,重点说明每过一层都会加个头,头很重要啊!其中https 就是在传输层搞事,把本来明文的数据包 ...

  9. APICloud开发者进阶之路 |audioRecorder录音模块Demo

    本文出自APICloud官方论坛   audioRecorder 模块通过封装系统的录音接口,能够快速的为开发者提供一个完整的录音功能. 该模块提供Android和iOS版本,录音方式及录制的音频格式 ...

  10. Centos 7安装 Mysql

    Mysql数据库的安装与配置 CentOS7的yum源中默认好像是没有mysql的,所有我们采用从官方下载的方式进行安装. 为了节省时间,下面的步骤参考网络上的教程,根据最新情况进行了修改. ①卸载M ...