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

今天分享在数字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.mzph.cn/news/606837.shtml

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

相关文章

localhost和127.0.0.1的区别是什么

今天在网上逛的时候看到一个问题,没想到大家讨论的很热烈,就是标题中这个: localhost和127.0.0.1的区别是什么? 前端同学本地调试的时候,应该没少和localhost打交道吧,只需要执行 npm run 就能在浏览器中打…

MySql数据库备份和恢复

windows下操作 备份exp.bat内容如下 echo offcd C:\Program Files\MySQL\MySQL Server 8.0\binmysqldump -uroot -p12345678 -R dayreport > D:\bk\20230420\dayreport_20230420.sqlmysqldump -uroot -p12345678 -R ddm_am > D:\bk\20230420\ddm_am_20230420.sqlmysqld…

Python 常用数据类型

Python 常用数据类型有以下这些: 数据类型中文解析例子int整数,表示整数值1、2float浮点数,表示带有小数点的数值3.14、2.718complex复数,表示实部和虚部组成的复数12j、3-4jstr字符串,表示文本数据,用引号…

Python input()函数:获取用户输入的字符串

input() 函数用于向用户生成一条提示,然后获取用户输入的内容。由于 input() 函数总会将用户输入的内容放入字符串中,因此用户可以输入任何内容,input() 函数总是返回一个字符串。 例如如下程序: msg = input("请…

【HarmonyOS开发】ArkUI-X 跨平台框架(使用ArkTs开发AndroidIOS)

ArkUI-X 跨平台框架进一步将 ArkUI 开发框架扩展到了多个OS平台,目前支持OpenHarmony、HarmonyOS、Android、 iOS,后续会逐步增加更多平台支持。开发者基于一套主代码,就可以构建支持多平台的精美、高性能应用。 一、跨平台框架有哪些? 1、…

猫头虎分享已解决Bug || 解决Vue.js not detected的问题 ️

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

【ChatGPT+】创新与教育的交汇点:中国训练工程师的崛起

人工智能总价值超15.7万亿美元 根据国际数据公司(IDC)的预测,到2030年,全球人工智能市场总价值将超过15.7万亿美元,这表明人工智能技术将在未来几十年内得到广泛应用并取得长足发展。 人工智能的快速发展将对各个领域…

Numpy和Pandas知识点总结

1.python常见的开源库介绍 1.1numpy 一个运行速度非常快的数学库,主要用于数组计算 1.2pandas 一个强大的“分析结构化数据”的工具集,底层依赖numpy 用于数据挖掘和数据分析,同时也提供数据清洗功能 pandas主要有两种数据结构&#xf…

BigDecimal的性能问题

BigDecimal 是 Java 中用于精确计算的数字类,它可以处理任意精度的小数运算。由于其精确性和灵活性,BigDecimal 在某些场景下可能会带来性能问题。 BigDecimal的性能问题 BigDecimal的性能问题主要源于以下几点: 内存占用:BigDec…

mysql+关掉密码过期

mysql关掉密码过期 要在MySQL中关闭密码过期功能,可以按照以下步骤进行操作: 登录到MySQL服务器。 使用管理员账户(如root)连接到数据库。 mysql -uroot -ppassword 运行以下命令来查看当前的密码过期设置: SHOW…

金蝶EAS pdfviewlocal.jsp接口存在任意文件读取漏洞 附POC软件

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 金蝶EAS简介 微信公众号搜索:南风漏洞复现文库 该…

2023十大最具商业影响力量子公司 | 光子盒年度系列

量子技术以其广泛的应用范围和对多个领域的深远影响,是当之无愧的“通用底座”技术,其潜在的产业变革力正在展现,尽管当前量子技术与人工智能或虚拟现实等技术领域相比,量子对大多数人来说还有些“看不透”。 2023年,量…

【Mars3d】new mars3d.layer.GeoJsonLayer({不规则polygon加载label不在正中间的解决方案

问题: 1.new mars3d.layer.GeoJsonLayer({type: "polygon",在styleOptions里配置label的时候,发现这个 不规则polygon加载的时候,会出现label不在中心位置。 graphicLayer new mars3d.layer.GeoJsonLayer({ name: "全国省界…

JVM的FastThrow优化机制

前言: 前一阵子,在公司排查线上问题发现:出问题的方法报空指针异常,但是没有异常堆栈信息和Message。我一开始以为是代码中做了处理,但是经过翻阅代码发现不是。最后一番查找资料,这种现象是JVM的一种优化机…

Open3D 点云下采样抽稀(7)

Open3D 点云下采样抽稀(7) 一、算法介绍二、算法实现1.代码 一、算法介绍 点云抽稀在计算机图形学和计算机视觉中有着广泛的应用,其作用包括但不限于以下几点: 数据压缩: 点云抽稀可以有效地减少点云数据量&#xff0…

问答领域的基本了解

问答领域是人工智能领域中的一个重要研究方向,旨在让计算机能够理解人类提出的问题,并以自然语言形式回答这些问题。问答系统可以应用于各种场景,包括搜索引擎、虚拟助手、智能客服等。 一.目标 目标: 问答系统的主要目标是使计…

为何大厂急招鸿蒙开发工程师?别有洞天

正确看待鸿蒙不再兼容安卓版本,而大厂急招鸿蒙工程师这一举动已经是预料之中的。我们一步步来看鸿蒙是怎么发展过程的。为什么互联网大厂急招鸿蒙开发岗位? 鸿蒙的发展历程 华为历经4年,从2019年开始的鸿蒙问世2.0版本到2023年末4.0宣布“不…

r语言拟合曲线

r语言拟合曲线 #圆滑曲线 library(ggalt) library(ggplot2) df <- read.csv("lqs-1.csv",headerT) p2<-ggplot(datadf,aes(xx,yy))geom_point(size1) geom_smooth(span0.1)p2结果

CTFshow web入门web128-php特性31

开启环境: 一个新的姿势&#xff0c;当php扩展目录下有php_gettext.dll时&#xff1a; _()是一个函数。 _()gettext() 是gettext()的拓展函数&#xff0c;开启text扩展get_defined_vars — 返回由所有已定义变量所组成的数组。 call_user_func — 把第一个参数作为回调函数调…

【算法练习】leetcode算法题合集之二叉树篇

递归遍历基础篇 前序遍历&#xff0c;中序遍历&#xff0c;后序遍历是根据处理根节点的位置来命名的。 树的处理大多用到了递归&#xff0c;递归需要知道终止条件。 前序遍历&#xff08;中左右&#xff09; 144.二叉树的前序遍历 中左右&#xff0c;先处理根节点&#xff0c;…