欢迎使用CSDN-markdown编辑器

ASIC design 关于clock-gated setup/ hold的检查以及multi-cycle path 的整理

本文根据网络搜索所得,以及synopsis相关文档整理而来。

涉及的内容

  • gated-clock 的setup/hold的检查
  • multi-cycle path 的理解

1. clock-gated 的setup/hold 检查

clock-gated 的setup/hold 检查不同于一般register setup/hold的检查。clock-gated 时序上要求不能出现毛刺,换句话说,如果用AND gate 去gating,时钟使能信号必须在时钟低电平的地方才能插入。如果是用OR gate 去gating, 那么使能信号必须在时钟高电平的地方插入。
为什么电路中会有clock-gating ?大部分情况是为了省power。synthesis工具在综合的时候会根据RTL的写法,推测哪些情况下可以把时钟关掉(也就是时钟被gated)。比如处理一帧图像,某个信号只在帧同步信号来的时候加1:
always @(posedge sclk or posedge rst)
if(rst) fcnt <= 0
else if(vsync) fcnt <= fcnt + 1

这种情况下,只要synthesis工具很有可能会在vsync=0的情况下把sclk gated。 这种gating的行为也可能由designer自己做,因为工具并不能保证识别所有的可能插入gating的情况。
还有些情况下,为了在电路中产生时钟信号(而不是都由PLL产生),也可能有工具推导出gating。这个具体问题具体分析。
好了,既然有clock-gated电路,并且不能产生毛刺,那么时序检查的tool就必须去检查clock-gated的timing。以Prime Time(PT)为例, 对于时序的检查包括setup和hold。而setup/hold的检查有包括:
clock group的setup、hold
clock gating的setup, hold

一下是PT对一条path的timing report:
Startpoint: UFF (rising edge-triggered flip-flop clocked by CLK1)
Endpoint: UGAT (rising clock gating-check end-point clocked by CLK2)
Path Group: * clock_gating_default *
Path Type: min
Point Incr Path
clock CLK1 (rise edge) 0.00 0.00
clock source latency 0.00 0.00
CLK1 (in) 0.00 0.00 r
UFF/CP (FD1) 0.00 0.00 r
UFF/Q (FD1) 1.29 1.29 r
UGAT/A (AN2) 0.00 1.29 r
data arrival time 1.29
clock CLK2 (fall edge) 8.00 8.00
clock source latency 0.00 8.00
CLK2 (in) 0.00 8.00 f
UGAT/B (AN2) 0.00 8.00 f
clock gating hold time 0.00 8.00
data required time 8.00


data required time 8.00
data arrival time -1.29


slack (VIOLATED) -6.71

这个report有几个重点
1. path bype min:这是关于hold time 的
2. launch path 的clock 从 T=0 开始
3. capture path 的clock 从T=8开始,为什么?

下面是CLK1和CLK2的waveform描述
create_clock -period 16 -waveform {0 8} CLK1
create_clock -period 16 -waveform {0 8} CLK2

为什么 capture从T=8,也就是半个时钟周期开始 ?
因为这是一个AND gate的clock gating,使能信号要从CLK2的低电平处插入。也就是在8~16之间插入。换句话说,使能信号至少得有半个周期的latency才能 meet setup timing。这种情况对于比较慢的时钟就不容易实现。

multi-cycle path

multi-cycle path 通常是指哪些不需要在一个cycle的时间内做完的path,降低速度的要求,从而减少优化的时间和最终而面积。命令如下:
set_multicycle_path 3 -setup -from FF1/CP -to FF2/D

将setup的检设在3个cycle以后(默认为1)。默认情况下,hold的检查会被设在3-1=2, 第二个cycle。也就是说,工具要保证最慢也得有2个cycle的latency,显然不合理。于是一般又加上如下命令:
set_multicycle_path 2 -hold -from FF1/CP -to FF2/D
也就是将hold的检查设在3-1-2=0,第0个cycle。也就是跟没有设multi-cycle之前一样的位置。这样最快的case就容易实现多了。

但是,还有问题 !
以上2条命令意味着,信号可以在0~3个cycle之间任意位置变化,如果变化发生在中间上升沿的位置哪?

因此,multi-cycle 的设置要求designer清楚地知道输出结果不会在第3个cycle之前被用到(怎么保证?):
1. 要嘛加enable信号在第三个cycle才去取信号
2. 要嘛保证即使中间采到亚稳态,往后传播也不会有什么后果。

实际情况当中,可能有些register被设置之后,会过很长的时间才会起作用,那么中间的亚稳态有足够的时间稳定,设成multi-cycle不会有问题。但是凡是设成了multi-cycle的都是心里有数的。

另外,有时候我们也会将multi-cycle和false-path等价。false-path可视为multi-cycle的一种无限特例。上面提到的情况,可以是等价的,但是有些情况下并不是,此处不展开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值