PrimeTime指南——合理设置约束

        完整的STA需要满足以下两点:

  • 完整的设计约束(完整并不意味着正确)
  • 运行所有需要的时序检查

        可以用以下两条命令来进行完整性的检查:

check_timing                                // 检查是否缺少了约束条件

report_analysis_coverage            // 检查是否是否对时序进行check          

一、检查约束的完整性

        check_timing 这一命令会检查设计中的每个现有约束,如果有缺失的约束,则会发出警告,我们可以根据警告对设置的约束进行检查。

        check_timing的完整检查项目如下,粗体表示默认选项:

        我们以下图所示电路为例,对check_timing的检查内容进行说明。

1、No input delay

        这类警告是默认关闭的,你需要设置变量:

pt_shell>set_app_var timing_input_port_default_clock true

        收到这种警告信息,我们需要知道:这个输入引脚和什么相连?哪条路径会受到这条警告的影响(或者此case缺少输入端口的分析)?

        我们需要检查是否有必要约束这个port,一些情况下,是不需要为input port添加约束的

  1. 假设这个端口应该由set_case_analysis 命令设置,驱动一个固定的信号比如
  2. 假设以这个port为起点的路径在当前模式的分析中是不存在的;

 2、No output delay

        收到这类警告需要去知道:输出端口连接的是什么,寄存器还是输入端口?这条警告所影响的路径是哪一条,他是否是一个输出的时钟端口?

        输出端口必须被output delay 所约束

        如果这个端口是一个输出的时钟端口,我们不需要为端口定义output_delay,创建所需要的generate_clock 然后忽略这条警告;

3、No clock

        收到这类警告需要去知道:哪里需要创建一个时钟去驱动受影响的端口;

        检查时钟信号是否由于某些时序弧的禁用或用户使用set_sense命令手动停止信号而在时钟端口的扇出中被阻断。

 二、检查执行的完整性

        report _ analysis _coverage 这一命令会检查设计中的每个现有时序检查,如果有任何未执行,则会发出警告和原因。我们需要决定这个时序检查是否有必要,还有检查什么原因导致时序检查没有被执行。

        导致时序检查未执行的原因由下面这些:

        我们以下图为例,对这些原因进行具体的说明。

1、False path

        false_path一般是用户使用set_false_paths指定,异步或者专用的时钟组;

        收到此类的警告,我们需要去知道:1.这条时序路径包含哪个时钟?2.F1的上一级触发器是什么?3.哪条false_path的命令或者clock_group的命令与此warning相关

        设置false path使用的命令为

pt_shell > set_false_path -from F2/CLK -to F1/D

2、user disabled

        出现此类的warning,我们需要去知道:这个时序检查只是对指定cell(F1)无效还是定义在cell库中,对所有instance都无效?这两者在命令的书写上是不同的:

pt_shell > set_disable_timing -from CLK -to D F1
pt_shell > set_disable_timing -from CLK -to D {get_lib_cell core_slow.db/fdesf2a15}

3、constant_disable

        这种警告一般出现在:

  1. 用户指定 set_case_analysis
  2. 信号固定为高电平或低电平;

        出现此警告我们需要确认,这个timing的disable是不是由于用户指定的case或者恒高或者恒低电平的信号导致的;用户哪条约束导致了 timing的disable。

pt_shell > set_case_analysis 0 scan_en

三、Debug命令

        当使用check_timing 和 report_analysis_coverage 命令对约束进行检查时,按上文所述,有可能出现一些warning,这时我们需要对出现的warning进行检查,最常用的debug命令如下图:

        这些命令可以让我们快速定位问题所在。

1、all_fanin

        

         如上图,当F1的clk端发出no clock warning,我们可以使用以下命令

pt_shell > all_fanin  -startpoints -flat -to F1/CLK

        即可以找到CLK的起始点,溯源问题发生的原因。

        all_fanin的用法如下:

        如例子中的图所示,all_fanin会追踪时序弧,最后在三种端口停下:

  • 输入端口(input port)
  • CLK flop pins ,锁存器的G和D pins
  • 时序弧被disable或missing的cell 的输出pins

2、report_cell

        如果我们定位到了问题的所在,可以使用report_cell命令查看该单元的详细信息。

        report_cell的用法如下:

3、get_attribute

        PrimeTime中,针对每一个设计对象(design objects)的信息都存储在attribute中,我们可以利用get_attribute命令来获取单独的设计对象的信息。

        上图中,指定的clocks这一attribute存储了所有穿过该pin的时钟信息。

4、report_disable_timing

          report_disable_timing这一命令会检查disable的时序弧,并给出原因。

        其具体用法如下:

5、report_case_propagation

        我们可以使用 report_case_propagation命令来查找用户定义的值。

        其用法如下

6、all_fanout

        这一命令与all_fanin类似:

        用法也基本一致:

 

        合理利用PT提供的命令,我们可以很快地找到问题的所在,快速修改时序约束不合理的地方。

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

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

相关文章

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

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

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

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

linux常用网络命令

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

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

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

Design Compiler指南——预综合过程

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

KAFKA介绍(分布式架构)

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

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

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

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

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

Design Compiler指南——设计综合过程

在前面一章介绍完施加约束之后,接下来要做的工作就是将设计进行综合编译(compile),本文我们将主要讨论综合编译的过程。主要分为这样几个部分: 优化的三个阶段及其特点编译的策略编译层次化的设计 一、优化的三个阶段 这一节我们介绍Design …

Design Compiler指南——后综合过程

本文我们着重讨论使用Design Compiler综合大型设计时要注意的一些问题,比如怎样调整综合方法,出现约束违反后怎样修正,怎样给不同的子模块作时序和负载预算,以及给整个设计在具体综合之前先作一个预估(Design Exploration)等等。 …

如何寻回xp盘符丢失的数据

分区丢失是比较常见的数据恢复案例,需要注意,分区丢失后不要再重建新的分区。保护好资料丢失现场,可以最大程度的恢复出资料。具体的恢复方法看正文了解。 工具/软件:星空数据恢复软件 步骤1:先百度搜索并下载程序打开…

Visual computing——概述

Visual Computing(视觉计算)是所有处理二维图像和三维模型的计算机科学学科的总称,即计算机图形学、图像处理、可视化、计算机视觉、虚拟和增强现实、视频处理,但也包括模式识别、人机交互、机器学习等方面。核心挑战是视觉信息&a…

推荐!手把手教你使用Git

一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑&#xff0…

I2C协议学习

I2C Bus(Inter-Integrated Circuit Bus) 最早是由Philips半导体(现被NXP收购)开发的两线式串行总线,常用于微控制器与外设之间的连接。 一、概述 以下是 I2C 总线的一些特性: 只需要两条总线;一条串行数据线 (SDA) 和…

P1136 迎接仪式

P1136 迎接仪式 题目描述 LHX教主要来X市指导OI学习工作了。为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字。一旁的Orzer依次摆出“欢迎欢迎欢迎欢迎……”的大字,但是领队突然…

云服务器 VNC 远程连接

此服务器买来是为了搭建IC EDA云的,因此选用的是centOS 6的环境,对各EDA软件兼容较好。本人手头拮据,因此买的是腾讯云活动期间的云服务器,只能说够用吧。 一、桌面安装 在云服务器控制台登陆上远程主机,依次执行下列…

Python自动化测试框架有哪些?

作者 | KITTY GUPTA 译者 | 张健欣 令开发者万分高兴的是,开发自己的测试框架的日子终于结束了。以前,开发团队接手一个项目并开始开发时,除了项目模块的实际开发之外,他们不得不为这个项目构建一个自动化测试框架。一个测试框架应…

面试题——4种数组去重的方法

数组去重或者其衍生作为笔试题或者机试题出现的几率也是很大的,写出的方法越多,则让面试官觉得你思维越开阔,那么成功的几率当然就大了。 废话不多说,下面来说说下面我整理的4中数组去重的方法 方法一: findInArr方法s…

Demosaic算法学习

一、概述 由于成本和面积等因素的限定,CMOS图像传感器在成像时,感光面阵列前通常会有CFA (color filter array),CFA过滤不同频段的光,因此,Sensor的输出的RAW数据信号包含了3个通道的信息。 CFA的排列方式一般有以下几种: 现在应用最广泛的是Bayer CFA。…

UML中关联,聚合,组合的区别及C++实现

类间关系 在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单独工作更大的语义。在UML类图中,关系用类框之间的连…