在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4338|回复: 9

[讨论] dc/sta工具set input delay和set output delay的设置细节讨论

[复制链接]
发表于 2020-4-26 10:00:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
set input delay和set output delay的设置时,如果理解-clock的含义?
通过man -clock的作用,注释说是定义的相关时钟,如何理解相关时钟呢?
直接列举我的疑问吧:
1. set input delay的情况,-clock是定义的design外部电路launch dff的virtual clock呢还是design内部经过组合逻辑后的capture dff的clk呢?尤其是launch dff和capture dff的clk不同的情况。
2.set output delay的情况,-clock是定义的design外部电路capture dff的 clk呢还是design内部经过组合逻辑后的launch dff的virtual clk呢?尤其是launch dff和capture dff的clk不同的情况。
3.如果两者都是定义的design 内部的clock,那么input port经过组合逻辑后的输出数据,有可能被不同的clk 驱动的dff捕获,这种情况如何定义-clock呢?4.如果定义的是design外部电路的virtual clock,那么怎么确认外部virtual clock的时钟频率呢?

注意:此处的前提是,design外部的时钟virtual clock和design内部的clk是不同频但是同步的关系。
发表于 2020-4-26 11:22:52 | 显示全部楼层
个人感觉应该都是design内部的时钟,对于不同的时钟分别定义不同的vitual clk然后分别约束各个input或者output signal、virtual clk应该是和input singal驱动的reg的clk是同频的,要不然virtual clk的意义何在?
 楼主| 发表于 2020-4-26 15:36:29 | 显示全部楼层


mythbuster 发表于 2020-4-26 11:22
个人感觉应该都是design内部的时钟,对于不同的时钟分别定义不同的vitual clk然后分别约束各个input或者out ...


virtual clock的用来约束In2Out的timing path,In2Out的timing是没有任何dff在design内部的。
如果是内部的clock,那input port经过组合逻辑,然后被dff捕获的时钟可能是不同的同步时钟,如果是这样是不是需要把所有的capture dff的时钟都需要定义遍历一下呢?


发表于 2020-4-28 14:33:49 | 显示全部楼层


西门电工 发表于 2020-4-26 15:36
virtual clock的用来约束In2Out的timing path,In2Out的timing是没有任何dff在design内部的。如果是内部 ...

如果要条理清楚是应该把所有的capture clk都设置一下的。
我不知道你们是什么做法,我一般都是在定义正常时钟时比如cpuclk同时就定义一个vcpuclk,然后所有从IO到reg的第一级用cpu clk capture的signal,input delay都用vcpuclk来设置。
 楼主| 发表于 2020-4-29 09:08:36 | 显示全部楼层


mythbuster 发表于 2020-4-28 14:33
如果要条理清楚是应该把所有的capture clk都设置一下的。
我不知道你们是什么做法,我一般都是在定义正常时 ...


我们也是这个做法,我是想了解下这么设置的原理;感觉你的描述跟我公司的做法很像,请问你是在hisilicon工作吗?
发表于 2020-4-29 09:59:46 | 显示全部楼层
本帖最后由 mythbuster 于 2020-4-29 10:01 编辑


西门电工 发表于 2020-4-29 09:08
我们也是这个做法,我是想了解下这么设置的原理;感觉你的描述跟我公司的做法很像,请问你是在hisilicon ...

水平有限海思看不上啊。
这个做法应该是通用的做法。
原理其实就是你上面的自己的疑问啊,对于一个模块的输入信号来说,进来之后肯定是要进入一个reg的D端的(这里不考虑feedthrough的情况),由于在模块级所有输入的singal都是是理想的,但实际从TOP送过来的input signal肯定是有延时的,为了在综合时候就考虑到这个延时,不至于在顶层展开时候block的这些signal和真正的signal的delay相差太大所以要设置input delay。
设置input delay至于问什么要和第一个reg的clk相关,其实也可以不用必须和这个clk相关的,比如低速的时钟可以统一设置一个input delay就行了,反正这个设置只是一个大概,目的就是在模块级综合时候就尽可能考虑到这些影响。
但是在比较高速时钟或者是先进工艺情况下,为了使得这个input delay更加的准确(相对来说)所以设置为和对应clk相关的一个百分比,一般是70%,这样是考虑比较worse的情况,当然实际可能设置的不太合理,可以适当调整,这个在综合完之后看一些qor报告,重点关注那些violation特别大的,有可能就是input 或者output设置不合理导致的。

 楼主| 发表于 2020-4-29 20:42:47 | 显示全部楼层


mythbuster 发表于 2020-4-29 09:59
水平有限海思看不上啊。
这个做法应该是通用的做法。
原理其实就是你上面的自己的疑问啊,对于一个模块的输 ...


嗯,我大概是理解你的意思;
我之前的理解是set input delay/set output delay后边的-clock指定的时钟一般是设定为virtual clk,
这个virtual clk的频率和input 经过组合逻辑被capture dff的时钟频率是同步但是不一定同频的情况;
就是和in2out的timing path约束方式是一致的,就是把input和output上下级的dff补全,然后其驱动
时钟为vclk;
之所以要把design内部的所有时钟定义为vclk,我的理解是综合人员可能不知道input/output的时钟域,
干脆就把所有的都约上;如果可以确定input/output的时钟域,则可以直接约束这一个vclk就行了。

电路的拓扑结构应该可以自动分析出来desgin内部的连接关系和延时,所以set input delay和set output delay
后边的-clock应该是接口本身所在的时钟域,对于input而言就是desgin外部的launch的vclk,output而言就是
design外部的capture的vclk;

发表于 2024-1-8 16:29:49 | 显示全部楼层
写个程序trace 下 input loading, output driver 的时钟,然后用 add delay 把所有的 clk都设置一下的。
发表于 2024-8-5 17:55:06 | 显示全部楼层
好帖,收藏学习一下!
发表于 2024-8-6 16:31:35 | 显示全部楼层
这个问题其实道理很简单。我们的电路STA缺省是单周期同步模型,就是两个触发器加中间的组合路径,第一触发器launch,第二触发器capture。
那么对于IO端口,比如输入端到第一级D触发器的路径,这个怎么做STA?没有launch的触发器了,所以工具“假定”了一个launch触发器。至于这个假定的触发器用virtual clock或者实际clock,其实没什么大区别,更多的是一直提示作用,virtual clock不用对应于具体的clock port,你定义成实际的clock也没问题。关键是有了这个假定的launch触发器,就可以套用单周期同步模型的分析引擎计算时序。从这个角度看,所谓input delay就变成了两个触发器之间组合电路延时在port外部的那部分。
input/output delay本质上是定义了一个模型去套用时序分析引擎,至于这个模型是不是描述了外部电路实际的行为,要靠designer去判断。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 05:34 , Processed in 0.022326 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表