为了让各位粉丝更方便查阅小编分享过的的历史技术文章,吾爱IC社区公众号历史技术文章合集第二版已经正式发布。各位知识星球用户,可以前往知识星球下载查阅。应部分非星球用户要求,本次更新的技术文章合集可以通过捐助社区来获取,捐助金额20起,土豪请随意(添加小编微信ic-backend2018)。
作为一个数字IC后端工程师,你真的能看懂Timing report吗?小编曾经说过,如果数字IC后端工程师不懂timing,等于人缺了一个手臂。更何况不能完全看懂timing report呢?那一定是非常可怕的一件事情。
今天小编将从基本概念出发,详细解析ICC和Innovus 中timing report各大主要组成部分。
Timing Path
STA中是基于Timing Path来进行时序分析的。每条Timing Path都有一个Startpoint和一个Endpoint。那么STA中哪些点是Startpoint,哪些点又是Endpoint呢?理解这个概念后就能够比较好理解Timing Path了。
Startpoint可以是以下两种类型:
Input输入端时序单元的时钟端Endpoint可以是以下两种类型:
Output输出端时序单元的数据输入端因此,在STA中有四种类型的timing path。针对每条timing path,工具也会分配一个clock group。默认情况下,工具会根据endpoint挂的clock来定义对应的group。
CLKA group: Input port A to UFFA/D.
CLKB group: UFFA/CK to UFFB/D.
DEFAULT group: Input port A to output port Z, UFFB/CK to out
put port Z.
有了这个概念后,你就不会看不懂工具报的某些信息,比如某个点不是有效的endpoint。
在数字IC后端实现阶段,为了优化timing,往往会根据实现需求定义比较多的group path,实现group path的细化
Timing Report (ICC)
ICC的timing report相信大部分人应该都比较熟悉。今天主要介绍下report中表头部分。
1. 此处列出报告这条timing path所用的命令和option。这里的full_clock和innovus中的full_clock很像。这里需要提出的是,在报timing report时,一定要多加一些选项,这样才能更方便debug timing。
2. 这里是定义的operating condition,这里是SSG125C。
3. 这里告诉你Parasitic mode,它的值有RealRC,RealRVirtualC等。这里显示是RealRVirtualC,说明这是CTS后,Route前的report。如果一个Route后的设计,其timing report上显示的RC还不是真实的,那么一定是有问题的。
4. 这里列出了该条path的Beginpoint(Startpoint)和Endpoint。
5. 这里指出Startpoint和Endpoint都是上升沿触发的。
6. 这里表明这条timing report是max delay的,是检查setup的timing的。
Timing Report (Innovus)
下面我们来看下C家的Innovus timing report。
1. Path 1后面有 “MET Setup Check”字样,表明该条path的setup是满足timing要求的。
2. 这里列出了该条path的Beginpoint(Startpoint)和Endpoint。
3.Other End Arrival Time是指capture path的clock latency值。这里跟S家的timing report是有所不同的。S家是直接在capture path上直接展现出来的。当然这里的计算结果值,大家可以通过展开这条path的full_clock选项来查看具体计算过程。
4. 这里的setup指为library中该寄存器的setup time(通过查表来获取)。
思考题:这个setup time值与哪些因素有关?
5. 这里的phase shift很多人都把它理解成时钟周期T。应该说这种叫法是不严谨的。对于Multicycle path和Half cycle path,它就不是周期了。
6. 小编相信Slack Time这个地方大家都看明白了,正值即meet,反之则存在timing violation。
7. 这里又是跟S家不一样的地方。C家引入Leading Edge和Trailing Edge两个概念。这两个概念千万不能与Rising Edg和Falling Edge搞混淆。Leading Edge为clock在一个周期内第一个跳变的edge,而Trailing Edge为clock第二次跳变的edge。
涉及setup计算的一些公式:
Data Require Time = Clock Arrival Time - Tsetup - uncertainty
Clock Arrival Time = Clock Capture Edge + Network latency
Data Arrival Time = Clock Launch Edge + Network latency + Tck-q + Tcomb
Setup Slack = Data Require Time - Data Arrival Time
原来电路最高工作频率是这么算出来的(STA基础篇)
Phase Shift = (CE - LE) - (C1- L1)
其中CE为Capture Clock Edge, LE为Launch Clock Edge,C1为第一个Capture Clock Edge,L1为第一个Launch Clock Edge。
这里以上面的timing report为例,计算下Phase shift。
phase shift= (10 - 0)-(0 - 0)= 10。由于Beginpoint和Endpoint是Leading Edge triggered和Leading Edge checked,而且都挂在同一个clock上。所以这里的Phase Shift即为周期。那么如果Endpoint是Trailling Edge check,那么Phase Shift又是多少呢?
如果两个寄存器是跨clock domain的timing check,phase shift又该如何计算呢?从phase shift的计算公式得知,它的核心是找到Launch Clock 和Capture Clock的Edge,找对了结果自然就出来了。关于setup和hold check的edge选取,可以翻阅之前分享的内容。
好了,今天的内容分享就到这里。如果你喜欢小编的文章,帮忙点下“在看”并转发给你的朋友,算是鼓励支持下小编呗。
小编知识星球简介(如果你渴望进步,期望高薪,喜欢交流,欢迎加入
在这里,目前已经规划并正着手做的事情:
ICC/ICC2 lab的编写基于ARM CPU的后端实现流程利用ICC中CCD(Concurrent Clock Data)实现高性能模块的设计实现基于ARM 四核CPU 数字后端Hierarchical Flow 实现教程时钟树结构分析低功耗设计实现定期将项目中碰到的问题以案例的形式做技术分享
吾爱IC社区知识星球星主为公众号”吾爱IC社区”号主,从事数字ic后端设计实现工作近八年,拥有55nm,40nm,28nm,22nm,14nm等先进工艺节点成功流片经验,成功tapeout过三十多颗芯片
这里是一个数字IC设计实现高度垂直细分领域的知识社群,是数字IC设计实现领域中最大,最高端的知识交流和分享的社区,这里聚集了无数数字ic前端设计,后端实现,模拟layout工程师们。
在这里大家可以多建立连接,多交流,多拓展人脉圈,甚至可以组织线下活动。在这里你可以就数字ic后端设计实现领域的相关问题进行提问,也可以就职业发展规划问题进行咨询,也可以把困扰你的问题拿出来一起讨论交流。对于提问的问题尽量做到有问必答,如遇到不懂的,也会通过查阅资料或者请教专家来解答问题。在这里鼓励大家积极发表主题,提问,从而促进整个知识社群的良性循环。每个月小编会针对活跃用户进行打赏。
举报/反馈

吾爱IC社区

78获赞 743粉丝
专注数字IC后端设计经验分享的社区
关注
0
0
收藏
分享