数字IC芯片设计实现 | 时序Timing Signoff check_timing检查解析

news2024/11/24 12:56:53

今天分享在数字IC芯片设计实现做timing signoff阶段必须要看的report。check_timing的报告必须是clean的,否则芯片回来大概率是废片!!!实际上一堆公司的芯片败在不看这个report了。

我们知道primetime(简称PT)做时序检查是基于我们给定的signoff sdc时序约束。所以timing结果的准确性就取决于sdc的完备性。如果sdc有漏洞,自然这个timing结果就不可信。但好在PT会报出当前设计sdc可能存在的问题。

所以我们在跑完pt必须带上check_timing检查下sdc的完备性。如果sdc有问题,工具会报出如下图所示的警告!记住每个警告都必须review一遍。如果认为是假的或无关紧要,请签字画押!

如果是用的cadence的tempus工具检查timing,也会报出类型的警告信息。原理是一样的,只不过叫法可能不太一样。
Timing signoff check_timing report

PT check_timing主要检查以下这些item。

● generated_clocks
检查generated_clocks的定义是否合理,有没有源时钟,是否存在相互循环定义的情况。

对于如下所示电路施加下面的sdc约束,在check_timing时就会报generated clock定义问题。

数字IC后端设计实现之时序约束generated clock约束

create_clock -name ck1 -period 10 -waveform { 0 5 } [get_ports {clk1}]

create_clock -name ck2 -period 10 -waveform { 0 1 } [get_ports {clk2}]

#create_clock -name ck3 -period 10 -waveform { 0 5 } [get_ports {clk3}]

create_generated_clock -divide_by 2 -name gclk2 -source clk3 divider/Q

set_propagated_clock [get_clocks {ck1}]

set_input_delay 2 -clock [get_clocks {ck1}] [get_ports {in}]

set_output_delay 2 -clock [get_clocks {ck2}] [get_ports {out}]

set_disable_timing -from A -to Y C3

在这里插入图片描述

generated clock定义典型错误—source latency 0

还有比如下面这样的电路,我们把分频点定义在AND2的输出端。同样也会报这个时钟定义有问题。

create_clock -name clk1 -period 10 [get_port clk1]
create_generated_clock -name genclk -divide_by 2 -source [get_port clk1] [get_pin A3/Y]

在这里插入图片描述

● generic
检查是否存在unmapped的cells,这类generic cell一般是零延时,影响时序检查准确性。这类情况一般比较少见,如果有在逻辑综合或PR阶段就会发现。

● latch_fanout
检查电平触发latch的扇出是不是自身,有没有latch级联的情况

● loops
检查组合逻辑有没有反馈回路,STA对这种反馈回路是不会分析的,需要通过set_disable_timing来打断这种反馈回路

下图所示电路存在timing loops。如果design存在这样的情况,我们必须使用set_disable_timing自己把这个loop断掉,否则工具会自己断,可能会出现工具判断的情况和我们预期不一样的情况。因为工具在分析时序时不支持timing loop!

STA Timing loop issue

● no_clock
检查是否有时序单元的clock pin不在任何时钟网络上。比如某个寄存器的CK是接到某个data逻辑上或者clock被set_clock_sense(case analysis) 截断导致clock传不过去。

在这里插入图片描述

create_clock -name ck -period 10 -waveform { 0 5 } [get_ports {ck}]

create_clock -name ck1 -period 9 -waveform { 0 4.5}

set_input_delay 2 -clock [get_clocks {ck}] [get_ports {in}]

set_input_delay 2 -clock [get_clocks {ck}] [get_ports {in1}]

set_output_delay 2 -clock [get_clocks {ck}] [get_ports {out}]

set_clock_gating_check -setup 0.2 A1

set_clock_gating_check -setup 0.2 O1

set_case_analysis 1 O1/A

在这里插入图片描述

● no_input_delay
检查Input Port是否有关联的时钟,否则相关IN2REG路径是unconstrained的。

● partial_input_delay
检查在set_input_delay时,是否存在只指定-min或者-max其中之一的情况

● unconstrained_endpoints
检查时序单元数据Pins或者Output Ports是否没有max delay约束

create_clock -name ck -period 10 -waveform { 0 5 } [get_ports {ck}]

set_propagated_clock [get_clocks {ck}]

set_input_delay 2 -clock [get_clocks {ck}] [get_ports {in}]

set_clock_sense -stop_propagation C1/Y

在这里插入图片描述

● unexpandable_clocks
检查相关的clocks之间是否可扩展,在跨两个不同频率的时钟路径上计算时序时,往往需要扩展时钟以计算相应的setup timing

● no_driving_cell
检查Input Port是否定义了驱动单元,工具只会在相连的net有寄生参数存在时才会产生Warning信息

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

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

相关文章

RT-Thread: 基于STM32CubeMX配置驱STM32驱动的USB虚拟串口调试

关键词:USB 虚拟串口 USB虚拟串口,RT-Thread Studio,STM32 说明: 1:文档记录 STM32F103系列基于 RT-Thread 系统的 USB虚拟串口的开启及数据收发应用流程介绍。 2:本文以STM32F103C8T6型号做测试&#x…

Java-伪共享

在说这个计算机术语之前,我先在这里问候所有问“什么是JVM伪共享”的垃圾JAVA程序员以及一瓶不满半瓶晃荡的面试官全家 我从来没想过国内已经很卷的JAVA圈,已经卷到语无伦次的地步了,“伪共享”是java程序员应该知道的吗?能问出这…

【Linux Shell】5. 运算符

文章目录 【 1. expr 命令 】【 2. 算术运算符 】【 3. 关系运算符 】【 4. 布尔运算符 】【 5. 逻辑运算符 】【 6. 字符串运算符 】【 7. 文件测试运算符 】 【 1. expr 命令 】 原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk …

基于SSM图书管理系统【源码】【最详细运行文档】

SSM图书管理系统【源码】【最详细运行文档】 系统简介系统涉及系统运行系统演示源码获取 系统简介 以往的图书馆管理事务处理主要使用的是传统的人工管理方式,这种管理方式存在着管理效率低、操作流程繁琐、保密性差等缺点,长期的人工管理模式会产生大量…

超维空间M1无人机使用说明书——52、ROS无人机二维码识别与降落

引言:使用二维码引导无人机实现精准降落,首先需要实现对二维码的识别和定位,可以参考博客的二维码识别和定位内容。本小节主要是通过获取拿到的二维码位置,控制无人机全向的移动和降落,分为两种,一种是无人…

【JAVA】final、finally、finalize 有什么区别?

🍎个人博客:个人主页 🏆个人专栏: JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 final: finally: finalize: 结语 我的其他博客 前言 在Java中,final、f…

适合培训协会搭建的培训机构管理系统开发方案

一、项目背景与目标 (一)项目背景 培训学校教务管理系统是培训机构数字化管理的必备系统,该系统功能大大提升机构办学的管理效率、提升机构在家长心中的专业度,市面上的培训机构管理系统收费越来越贵,为了给协会内培…

CMake入门教程【核心篇】静态库 (.a, .lib)

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 概述创建静态库添加静态库到你的项目完整代码示例实战使用技巧与注意事项总结与分析概述 静态库在C++开发中扮演着重要的角色。它们通常以.a(在Unix-like系统

django websocket实现聊天室功能

注意事项channel版本 django2.x 需要匹配安装 channels 2 django3.x 需要匹配安装 channels 3 Django3.2.4 channels3.0.3 Django3.2.* channels3.0.2 Django4.2 channles3.0.5 是因为最新版channels默认不带daphne服务器 直接用命令 python manage.py runsever 默认运行的是w…

python协程asyncio的应用,async,await,loop

关于协程,asyncio,async,await,loop的概念,参照上一篇文章可迭代对象,迭代器,生成器,协程-CSDN博客 上一章我们详细的讲解了上述各个名词的概念,但是这些东西实际上该怎…

Dash+Plotly | Web应用开发(1)

本文为https://github.com/CNFeffery/DataScienceStudyNotes的学习笔记,部分源码来源于此仓库。 本期内容主要为基础概念、web布局方法和交互回调。 文章目录 Dash的主要模块Highlightlayoutcallback 惰性交互阻止初次回调忽略回调匹配错误控制部分回调输出不更新获…

计算机毕业设计----SSM场地预订管理系统

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 用户角色包含以下功能: 按分类查看场地,用户登录,查看网站公告,按分类查看器材,查看商品详情,加入购物车,提交订单,查看订单,修改个人信息等功能。 管理员角…

linux安装codeserver实现云端开发

先看图 下载安装包 https://github.com/coder/code-server/releases 找到code-server-版本号-linux-amd64.tar.gz,我这里是code-server-4.16.1-linux-amd64.tar.gz 1、使用acrm用户登录目标服务器 2、切换root用户,创建 vscode 用户,并设…

selenium对于页面改变的定位元素处理办法

在学习selenimu中,总是发现元素定位不到,想了各种办法,最后总结大致有两个原因。 1.等待时间不够,页面还没有完全渲染就进行操作,使用time模块进行等待。 2.换了页面后,发现定位不到元素,因为…

外包做了1个月,技术退步一大半了。。。

先说一下自己的情况,本科生,20年通过校招进入深圳某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

新颖度爆表。网络药理学+PPI+分子对接+实验验证

今天给同学们分享一篇生信文章“The convergent application of metabolites from Avena sativa and gut microbiota to ameliorate non-alcoholic fatty liver disease: a network pharmacology study”,这篇文章发表在J Transl Med期刊上,影响因子为7.…

LeetCode-58/709

1.最后一个单词的长度(58) 题目描述: 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 思路&…

如何创建容器搭建节点

1.注册Discord账号 https://discord.com/这是登录网址: https://discord.com/ 2.点击startnow注册,用discord注册或者邮箱注册都可,然后登录tickhosting Tick Hosting这是登录网址:Tick Hosting 3.创建servers 4.点击你创建的servers,按照图中步骤进行

Android性能优化系列——内存优化

内存,是Android应用的生命线,一旦在内存上出现问题,轻者内存泄漏造成App卡顿,重者直接crash,因此一个应用保持健壮,要做好内存的使用和优化。网上有很多讲JAVA内存虚拟机的好文章,我就不赘述了。…

嵌入式-C语言-江科大-指针的详解与应用

文章目录 一:计算机存储机制二:定义指针三:指针的操作四:数组与指针五:指针的应用道友:最清晰的脚印,踩在最泥泞的道路上。 推荐视频配合我的笔记使用 [C语言] 指针的详解与应用-理论结合实践&a…