dc综合时为什么需要将clock和usb复位信号号的drive设为0

rst_n到clk没有path啊
UID39881&帖子2196&精华3&积分25146&资产25146 信元&发贴收入11785 信元&推广收入0 信元&附件收入0 信元&下载支出8 信元&阅读权限120&在线时间2218 小时&注册时间&最后登录&
同一般信号一样处理,set_input_delay
我的IC话题 .cn/u/
个人原创资料,转载时请声明,未经许可不得用于任何有商业利益的媒体
UID905772&帖子222&精华0&积分716&资产716 信元&发贴收入1605 信元&推广收入0 信元&附件收入0 信元&下载支出1204 信元&阅读权限30&在线时间332 小时&注册时间&最后登录&
本帖最后由 XIDIANCAD2 于
15:22 编辑
涛哥,您好!
& &&&DC自带的时序分析工具好像不分析异步信号的recovery和removal的时序。而PT是会检查recovery和removal的时序的。PT 使用手册里写道:PT除了可以分析常用的四种数据路径外,还可以分析clock path,clock -gating path及异步复位信号的recovery和removal.如果在PT分析发现出现了异步复位信号的恢复时间或移除时间不满足了,该怎么处理?是不是可以用PT找出异步复位信号的recovery和removal路径,然后通过加buffer等来处理吗?谢谢
另外我还有一个疑问:在四种数据路径里,有一条路径是 输入到输出(input port --output port)。这条路径没有时序逻辑,即么有clock信号,那是用什么去分析建立时间和保持时间的呢?(PT手册上好像说是external sink,不知道这是什么意思)
UID39881&帖子2196&精华3&积分25146&资产25146 信元&发贴收入11785 信元&推广收入0 信元&附件收入0 信元&下载支出8 信元&阅读权限120&在线时间2218 小时&注册时间&最后登录&
DC不分析recovery和removal的时序?
工具会用input delay + output delay来分析in2out的path
我的IC话题 .cn/u/
个人原创资料,转载时请声明,未经许可不得用于任何有商业利益的媒体
UID163772&帖子749&精华0&积分26742&资产26742 信元&发贴收入3965 信元&推广收入10 信元&附件收入1238 信元&下载支出1046 信元&阅读权限120&在线时间652 小时&注册时间&最后登录&
回复&&陈涛
涛哥,您好!
& &&&DC自带的时序分析工具好像不分析异步信号的recovery和removal的时序。 ...
XIDIANCAD2 发表于
& &查查这个变量在dc里: enable_recovery_removal_arcs, 是不是设false了
UID860344&帖子67&精华0&积分10499&资产10499 信元&发贴收入380 信元&推广收入0 信元&附件收入0 信元&下载支出1321 信元&阅读权限70&在线时间437 小时&注册时间&最后登录&
异步复位的时序违反,应该可以普通时序违反一样来修复。
in2out 路径里如果是纯组合逻辑,应该可以设置成false path 吧
perl&&and encounter
UID39881&帖子2196&精华3&积分25146&资产25146 信元&发贴收入11785 信元&推广收入0 信元&附件收入0 信元&下载支出8 信元&阅读权限120&在线时间2218 小时&注册时间&最后登录&
& & 不可以!
我的IC话题 .cn/u/
个人原创资料,转载时请声明,未经许可不得用于任何有商业利益的媒体
[通过 QQ、MSN 分享给朋友]4749人阅读
Q1.1什么是同步时钟?
时钟频率是整倍数,并且相互之间的相位是固定而且相差可预知的,才可以称得上是同步时钟。其他的都算异步时钟。
5M,10M是同步
2M,3M一般算异步
一个时钟,输出到另一个芯片中,转一圈后,以同样的频率返回到自己的芯片,因为无法确定时钟在另一个芯片里面的latency,所以输出的时钟与输入的时钟算异步
一个时钟进到2个PLL,就算那2个PLL的输出频率相同,一般也算是异步时钟,除非你de-skew
Q1.2 如何处理同步时钟?
设计要求严格的公司,就算是同步时钟,数据在同步时钟间传送时,依然要用meta-stability FF,可以set_false_path
如果放松要求,不用meta-stability FF,则同步时钟之间是real path,做CTS时,同步时钟要clock tree balance。
注意不同频率的同步时钟的最小时间间隔被用来检查setup
如果上升下降沿混用的话,setup的时间间隔就只有半个时钟周期了
Q1.3 如何处理异步时钟?
很简单,set_false_path
注意要from A to B,同时要from B to A
Q1.4 如何定义时钟?
create_clock 如果指定某个pin/port,就是实时钟,如果没有指定pin和port,就是虚拟时钟
巧妙利用waveform选项可以做出不同波形的时钟
被定义成时钟的net,在综合时,自动带有ideal network和dont_touch的属性。但是当它被用作data计算延迟时,idealnet的属性会自动消失
set_drive 0 clk
Toprevent buffering of the clock network, the script sets the input driveresistance of the clock port (clk) to 0 (infinite drive strength).
时钟会自动穿过逻辑单元,停在时序单元的时钟端,所以用FF产生的分频时钟要再用create_generated_clock定义一次
Q1.5 如何处理多选一时钟?
在实际应用当中,如果这几个时钟不会同时出现的话,则在定义时钟时,只选择最快频率的就可以了
如果是多个时钟同时出现,可以用set_case_analysis选一个,
也可以放它们全都过去,但是在MUX后面把它们之间set_false_path
Q1.6 巧妙定义时钟
直接在分频FF的Q端定义generatedclock时,有时会把分频FF的时序打掉,解决办法是在分频FF的Q端加一个时钟buf,从那个buf的输出端定义generatedclock,从而保证分频FF自身的时序完整
如果从source clock到generated clock之间有多条路径,你希望PT用指定的一条路径来计算时序的话,可以用set_case_analysis,set_disbale_timing 或者一级一级地定义generated clock来引导PT达到你的要求
/thread--1.html
首先这个跟CPPR没关系,CPPR补偿是以同一路径的时钟为前提的,ABD,ACD路径不一样,所以不涉及到CPPR
后来做时序检查的时候分成两个case,set case analysis在D点,ABD和ACD分开检查
这个是典型的Clockreconvergency问题, 时钟源头一样,然后走不同的路径,然后在某个mux上重新汇聚,在做timingcheck的时候这两条路径互相check,就产生violation,然而这样的路径是虚假的,因为一个mux不能同时通过两个时钟.
解决方法可以在mux上设case_analysis,每个mode只过一条路径,这样mode会变多,需用MMMC来解.做时钟树的时候一般情况下两条路径做到大致平衡,不过也有不能平衡的情况,比如DLL.
一般解决方法:如果不想用MMMC的话,在B和C处,分别定义generated_clock,然后把它俩set_false_path
Q1.7 什么时候需要设置latency?
latency分为source latency 和 network latency 两种。 source latency是源时钟自带的,networklatency就是CTS后的clock tree insertion delay。
在综合时,一般不需要latency,
已知不同clock带有不同的source latency,并且它们之间有时序要求
预知不同clock会有不同的clock tree insertion delay,不想平衡它们,但是要满足他们之间的时序要求
做完CTS后,要把network latency去掉
Q1.8 如何设置uncertainty
clock uncertainty分为setup和hold,preCTS和postCTS几种不同的情况
一般的处理原则是:
preCTS,setup: uncertainty = PLL jitter + 预估的clock skew
preCTS,hold: uncertainty = 预估的clock skew
postCTS,set_propagate_clock [all_clocks]
postCTS,setup: uncertainty = PLL jitter
postCTS,hold: uncertainty = 0
有时fundry要求hold uncertainty保留一定的量,这时就把那个保留量加到上面的公式中
(2) IO端口的约束
Q2.1如何加IO端口的约束?
最普通的方法是
对输入端,set_input_delay, set_driving_cell (也有用set_input_transition的,但是不多见)
对输出端,set_output_delay,set_load
对时钟端,set_clock_transition
这个和工艺与设计有关,一般建议是
65nm时, min(1/10时钟周期,150ps)
90nm时,后面的数字为200ps,130nm更大一些
不过如果你的时钟特别慢时,再小一点也可以。
180nm工艺dc综合里set_load,set_drive的值具体根据什么参考来约束啊,一点概念都没有 ,请大家帮帮忙了 。。。。。。
如果你会布局布线的话
随便赋一个值,完成综合,然后做后端
从后端拿到一个精确值,返回来定driver和load,再重新做综合
版主解答:
set_drive很少用了
一般用set_driving_cell . set_load用来约束output port,
set_driving_cell/set_input_transition 用来约束input port
对于pad输出, load一般是10~30pf (很大了),
对于模块输出 ,load一般是 0.XXX pf
对于input transition,一般比查找表再大些的范围内
How to&set drive& and &set load& in DC?
if thisis a digital block inside an analog module, you can request to the analogdesigner, the load/drive capability for each pins and define betterconstraints.
&If you want to add this constraint at padlevel, you need to know the PCB used, and every think like this, package....
Ingeneral, I only apply the set load/drive only for pin between analog/digital,because, this could have an impact on timing. The pad are so &slow&,this constraints do not add much info.
Q2.2 哪些端口不需要约束?
静态信号可以set_false_path,比如reset,test_mode,function_mode_select
不能真的什么约束都不加
Q2.3 什么样的reset信号可以set_false_path?
如果在工作时,reset信号有效时,时钟信号不翻转,就可以set_false_path
如果reset信号动作时,时钟也有动作的话,就不能set_false_path
Q2.4 像reset那样的high fanout信号需要设定为ideal net吗?
如果是false path的话,可以设为ideal net
一般不需要设为ideal net,让DC加入buffer tree后,有利于估算功耗和面积
Q2.5 如果有一组输出信号,需要他们之间对齐,但是不太在乎有多大的延迟,这时应该如何约束?
如果有输出时钟的话,在那个输出时钟端口定义一个generated_clock,其它信号的output_delay都相对于这个generated_clock而定。只要有max和min,就可以把所有信号卡在一个范围之内
如果没有输出时钟的话,用set_output_delay -reference_pin
Q2.6 如何计算input和output delay?
如果是block的input和output delay,可以预先分配,比如输出端,输入端各1/3,中间的连接1/3
block的端口最好都flop-in,flop-out
如果是chip IO,要度其他芯片的IO时序和电路板上面的延迟,比较麻烦
set_input_delay/output_delay是设置外面的delay, 从而保留芯片内部的IO delay来约束
input io 到flop和flop到output port的delay,
一般紧约束为外面留70% , 里面留30% ,但实际上有些port要调整,不是每个port都需要一样的值 ,
set_input_delay [expr 0.7* $clk_period ] -clock $clk [all_inputs]
set_output_delay [expr 0.7 * $clk_period ] -clock $clk [all_outputs ]
DRV有时也加DRC,与物理检测的DRC不是一个概念
set_max_transition 与工艺相关,65nm的话,在0.6ns左右
set_max_fanout 与工艺相关,一般在12~20之间
set_max_capacitance
set_max_power
set_max_area
4) falsepath,multicycle path
Q4.1 什么情况下需要set_false_path?
异步时钟之间,
到meta-stability 的第一个FF路径,
Q4.2 何时会用到multicycle_path?
太长的path,
不会每个周期都变的信号
注意:在RTL中,前端一定要多周期工作一次的功能
一般set_multicycle_path -setup &n周期&
要同时写set_multicycle_path -hold &n-1周期&
(5) wire loadmodel
wire load model是一种简单地根据fanout来估算wire delay的方法,在综合时,一般根据设计的大小选择对应的WLM
有时也会用zero wire load model,这时的clock period要相应减小15~25%,或者clock uncertainty增加15~25%
更加准确的计算wire delay的方法是DC topo和RC physical,
他们在综合时会粗略地做个place,然后根据距离来计算延迟
(6) clock gating
Q6.1 如何加clock gating?
局部的clock gating在综合时,会自动加进去。加clockgating后,不但会减小功耗,还会改善时序,因为本来到D端的逻辑,一部分被移到CK端了,简化了D端的逻辑
整个block的clock gating,一般直接在RTL里面加,因为DC没有那么聪明
Q6.2 需要对clock gating加什么特别的约束吗?
如果使用标准库里面的ICG单元,不需要附加任何特别的约束,前后端的工具都认得它
如果用latch+and自己搭的clock gating,你要对那个and单元set_disable_clock_gating_check,还要告诉后端,一定把latch和and摆在一起
一般只在没有动态切换时钟时,才可以用一个and/or做clockgating,这时也要set_disable_clock_gating_check
(7)case_analysis
set_case_analysis可以强制某个node为0/1
这个0/1会沿着纯逻辑组合单元向前传送,如果没有特别设定的话,会停在时序单元上
注意,只是是向前传,不会向左右2边和向后传
如果设在输出端上,那么所有fanin端都会被强制为0/1
如果只设在某个输入端上,与之相连的输出端和其他输入端都不受影响
(8)ideal net/network
ideal_net只作用于这条net
ideal_network会把这个属性传送下去
clock net自动带有ideal net属性
其他net,何时需要设定ideal net?见Q2.4
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:214093次
积分:3076
积分:3076
排名:第6428名
原创:88篇
转载:46篇
评论:11条
(1)(1)(1)(32)(20)(3)(2)(3)(18)(3)(32)(2)(6)(3)(3)(7)

我要回帖

更多关于 usb复位信号 的文章

 

随机推荐