PrimeTime指南——概述和基本流程

        PrimeTime(PT)是Synopsys的sign-off quality的静态时序分析工具。PrimeTime可以集成于逻辑综合和物理综合的流程,让设计者分析并解决复杂的时序问题,并提高时序收敛的速度。

一、概述

        PT最大的两个特点是:

  1. 基于时序路径进行分析
  2. 由约束(constraint)驱动

        PT可以进行一系列的时序检查

        有一些额外的检查可以在库中指定,例如:
        clock separation:这是对主/从锁存器的约束,在两个时钟之间的最小要求的时钟间隔,以避免锁存器成为transparent。
        nonsequential:这类似于两个数据引脚之间的数据到数据的设置和保持检查。

  • constraint check:由使用者指定的约束检查(如 set_output_delay)
  • library check:由供应商在库中为特定的子单元指定的检查(如 setup/hold)

        STA是基于时序路径进行检查的,在STA中,对时序路径的定义如下:

        一共有四类路径,我们使用report_global_timing命令就可以查看违例的时序路径:

        此外,我们可以使用report_analysis_coverage命令来查看一个简单的汇总报告:

        PT具有非常多的功能,而在使用PT之前,我们首先要知道PT的使用要求,即其最基本的输入要求:

         其中,SPEF 是 IEEE标准的寄生交换格式,GPD是synopsys公司寄生交换格式。

二、PT 的 Analysis Flow 

        PrimeTime的时序分析主要有以下几步:

  1. 载入设计与相关库文件
  2. 读入相关寄生参数
  3. 载入约束文件,包括时序约束
  4. 进行分析并产生报告
  5. 保存session
  6. 退出
  7. 恢复session

        这个STA流程需要反复迭代进行,直到达到sign off的要求。 

1、读入设计与相关库文件

        使用read_verilog命令即可读入设计文件,而current design命令是用来设置Top的。

         其中,list_designs的标识含义如下:

  • * :指明该design是current design
  • L:指明该design已经链接
  • N:指明该design不在memory中(未载入PT中)
  • l:指明该design部分链接

        在PT读入设计及相关库文件之前,常常设置两个路径变量,以方便地解决文件查找的问题:

        1、指定Prime Time搜索设计、逻辑库和其他设计数据的目录,如时序模型。通过设置search_path变量来完成此任务:

pt_shell> set_app_var search_path "目录路径"

        Prime Time会按照你指定的顺序搜索这些目录。

        2、通过设置 link_path 变量来指定 PrimeTme 在设计层次中寻找库文件。

pt_shell> set_app_var link_path "目录路径"

        该变量可以包含短线(-)、库名和文件名。*指示PrimeTime在内存中搜索设计。Prime Tme按照你指定的顺序搜索库。主库是link_path中的第一个库。

        使用link_design就可以读入相关的库文件:

 2、读入相关寄生参数

        利用read_parasitics命令即可读入寄生参数相关文件,使用-format即可指定读入的文件格式:

        PrimeTime支持以下格式的文件:

  1. Galaxy Parasitic Database(GPD)
  2. Standard Parasitic Exchange Format(SPEF)
  3. Detailed Standard Parasitic Format(DSPF)
  4. Reduced Standard Parasitic Format(RSPF)
  5. Milkyway(PARA)

         PrimeTime推荐使用GPD以及SPEF格式的文件。

        在读入寄生参数后,我们可以利用以report_annotated_parasitics命令来检查寄生参数标记的情况:

         需要注意的是,read_parasitics命令会自动显示该报告,我们也可以在read_parasitics时检查PARA- RC-Warnings。

        任何未被标记的pin to pin nets都需进一步检查。Driveless 和Loadless nets 通常是未使用的pin造成的,这些未标记的nets一般来说是正常的。

3、读入约束文件

        使用read_sdc读入设计约束文件:

         再读入约束文件后,需要进行约束完整性的检查,使用check_timing -verbose命令:

         最后,一些单周期静态STA的例外情况有以下几种,即需要单独进行分析:

  1. False path
  2. Multi-cycle path
  3. set_max_delay and set_min_delay

        而没有正确指定的例外情况需要忽略,使用report_exceptions -ignore命令进行查看:

 4、进行分析

         PBA: Path Based Analysis

        在save_session前运行PBA选项可以避免在恢复session后重新计算。

         而使用report_timing命令,配合其选项可以产生更详尽的报告:

         GBA:Graph Based Analysis

5、保存session

        使用save_session可以保存session

pt_shell>save_session $session_directory

        一个保存好的session包含以下信息用于恢复。

  1. 链接的设计和加载的库
  2. 时钟、时序例外和其他约束条件
  3. 操作条件
  4. 反标SDF的延迟和寄生参数
  5. 变量设置
  6. 网表编辑(insert buffer、size cell、swap cell)。
  7. 分析数据
  8. 交叉耦合(cross-coupled)的延迟数据和噪声数据

        其目录格式如下(以orca项目为例):

6、退出

        一般使用以下命令完成退出

     

        当然,也可以单独使用这两个指令:

7、恢复session        

        使用restore_session可以保存session

pt_shell>restore_session $session_directory

三、配置文件及脚本

        setup file是PrimeTime的配置文件,其文件名为 .synopsys_pt.setup,当PT运行时会自动执行,完成配置工作。

        setup file一共有三个层级,其优先级如下:

        可以使用synopsys提供的RMgen(reference methodology generate)工具生成PT运行脚本的模板:

        其中,pt.tcl就是PT的运行脚本,其内容如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yuv和yCbCr的差异

yuv和yCbCr的差异 一、和rgb之间换算公式的差异 yuv<-->rgb Y 0.299*R 0.587*G 0.114*B U -0.147*R - 0.289*G 0.436*B 0.492*(B- Y) V 0.615*R - 0.515*G - 0.100*B 0.877*(R- Y) R Y 1.140*V G Y - 0.394*U - 0.581*V B Y 2.032*U yCbCr<-->rgb Y’ 0…

配置zentaophp

原理&#xff1a; 首先&#xff0c;我们要明白为什么访问localhost就可以访问到我们的apache主页。 解析域名的时候&#xff0c;首先是从本地的hosts文件开始的。 如果查不到&#xff0c;才会去DNS服务器查询。 如果你在这里面写一行&#xff1a;127.0.0.1 www.baidu.com 百…

Android开发——RecyclerView特性以及基本使用方法(二)

0. 前言随着Android的发展&#xff0c;虽然ListView依旧重要&#xff0c;但RecyclerView确实越来越多的被大家使用。但显然并不能说RecyclerView就一定优于ListView&#xff0c;而是应该根据不同的需求选择最合适的进行使用。本篇将介绍我们为什么要使用RecyclerView&#xff…

pycharm中使用scrapy命命

2019独角兽企业重金招聘Python工程师标准>>> 这篇博客写的不错&#xff0c;亲测 https://blog.csdn.net/MAOZEXIJR/article/details/80678133 转载于:https://my.oschina.net/u/2511906/blog/1934993

PrimeTime指南——合理设置约束

完整的STA需要满足以下两点&#xff1a; 完整的设计约束&#xff08;完整并不意味着正确&#xff09;运行所有需要的时序检查可以用以下两条命令来进行完整性的检查&#xff1a; check_timing // 检查是否缺少了约束条件 report_analysis_cove…

Matlab增加块注释

1&#xff09;方法一选中你要加注释的内容&#xff0c;然后选择工具菜单“text|comment”就可以了&#xff0c;如果要把注释变为语句&#xff0c;同样选中要转变的语句&#xff0c;然后用鼠标选择“text|uncomment”就可以了。用键盘的快捷键是"CtrlR".或者选中你要加…

理解正向代理和反向代理

首先&#xff0c;大家可以看一下这里https://www.zhihu.com/question/24723688 其实答复的非常清楚了。 知乎网友阿笠硕士图画的很形象&#xff0c;地址为https://www.zhihu.com/question/24723688/answer/48369770 其次&#xff0c;我自己根据专家的解释&#xff0c;总结如下…

tablayout支持改变选中文字大小,支持左右滑动,支持viewpager,支持三角可移动指示器...

TabLayout [简书地址] (https://www.jianshu.com/p/2c3f868266e8) 基于大神的FlycoTabLayout [传送地址和基本用法](https://github.com/H07000223/FlycoTabLayout) 用法和属性和这个库一样 效果图如下 主要添加一个属性 tl_text_select_size 控制选中文字大小 看代码截图 然后…

Design Compiler指南——概述和基本流程

综合是前端模块设计中的重要步骤之一&#xff0c;综合的过程是将行为描述的电路、RTL级的电路转换到门级的过程&#xff1b;Design Compiler是Synopsys公司用于做电路综合的核心工具&#xff0c;它可以方便地将HDL语言描述的电路转换到基于工艺库的门级网表。本文将简单介绍综合…

linux常用网络命令

关键词&#xff1a;linux网络命令、ifconfig、route、ip、netstat、socket flag 引言&#xff1a; 想成为真正的高手&#xff0c;必须要熟练掌握linux系统的命令行操作&#xff0c;今天就回顾一下linux在网络上的常用命令相关知识&#xff0c; 另外&#xff0c;实践才是最终的方…

图像增强汇总

1、 图像增强技术包括 1&#xff09; 图像灰度变换方法 2&#xff09; 直方图修正方法 3&#xff09; 图像平滑处理 4&#xff09; 图像尖锐化处理 5&#xff09; 彩色处理技术 2、 图像增强技术基本上分为两大类&#xff1a;频域处理法和时域处理法。 3、 频…

javaweb(三十八)——mysql事务和锁InnoDB(扩展)

MySQL/InnoDB的加锁分析&#xff0c;一直是一个比较困难的话题。我在工作过程中&#xff0c;经常会有同事咨询这方面的问题。同时&#xff0c;微博上也经常会收到MySQL锁相关的私信&#xff0c;让我帮助解决一些死锁的问题。本文&#xff0c;准备就MySQL/InnoDB的加锁问题&…

Design Compiler指南——预综合过程

预综合过程是指在综合过程之前的一些为综合作准备的步骤&#xff0c;包括Design Compiler的启动、设置各种库文件、创建启动脚本文件、读入设计文件、DC中的设计对象、各种模块的划分以及Verilog的编码等等。 一、Design Compiler的启动 目前&#xff0c;DC的启动方式有三种&a…

KAFKA介绍(分布式架构)

2019独角兽企业重金招聘Python工程师标准>>> 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能&#xff0c;但具有自己独特的设计。这个独特的设计是什么样的呢&#xff1f; 首先让我们看几个基本的消息系统术语&#xff1a; Kaf…

jquery 回车事件

简单地记下jquery实现回车事件&#xff0c;代码如下&#xff1a;全局&#xff1a; $(document).keydown(function(e){if(e.keyCode13){$(".login-li input[typebutton]").trigger("click");} });某个控件&#xff1a; $("body").keydown(functio…

Three.js 详细解析(持续更新)

1、简介&#xff1b; Three.js依赖一些要素&#xff0c;第一是scene&#xff0c;第二是render&#xff0c;第三是carmea npm install --save three import * as THREE from "three"; import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js&quo…

[js高手之路]构造函数的基本特性与优缺点

上文,通过基本的对象创建问题了解了构造函数&#xff0c;本文&#xff0c;我们接着上文继续了解构造函数的基本特性&#xff0c;以及优缺点. 每个对象上面都有一个constructor属性( 严格意义上来说&#xff0c;是原型上的&#xff0c;对象是通过查找到原型找到 constructor属性…

Design Compiler指南——施加设计约束

Design Compiler是一个约束驱动(constrain-driven)的综合工具&#xff0c;它的结果是与设计者施加的约束条件密切相关的。在本文里&#xff0c;我们主要讨论怎样给电路施加约束条件&#xff0c;这些约束主要包括——时序和面积约束、电路的环境属性、时序和负载在不同模块之间的…

Python:eval的妙用和滥用

时间 2014-07-08 13:05:24 CSDN博客 原文 http://blog.csdn.net/zhanh1218/article/details/37562167主题 Python eval()函数十分强大&#xff0c;官方demo解释为&#xff1a;将字符串str当成有效的表达式来求值并返回计算结果。 so&#xff0c;结合math当成一个计算器很好用…

程维柳青发布道歉声明:滴滴顺风车业务将无限期下线

雷锋网(公众号&#xff1a;雷锋网)消息&#xff0c;8 月 28 日晚间&#xff0c;滴滴创始人兼 CEO 程维和滴滴总裁柳青正式发出道歉声明&#xff0c;向受害者和受害者家属道歉——这已经离本次滴滴顺风车悲剧的发生整整四天的时间。 声明表示&#xff0c;滴滴不再以规模和增长作…