icg真的只能用latch不能用Flip-flop吗

ICG中Latch与Flip - Flop的选用分析

soc设计中常用latch来做时钟门控,它的rtl描述如下:

input EN;
input clk;
input TE;
output E_clk;

always @(*) begin
    if (clk==1'd0)
        E_latch = EN | TE;
end

assign E_clk = E_latch & clk;

实际soc实现会把上面代码中latch和与操作换成专用CLKLANQ的libcell,TE为testMode下信号,funcMode下为0.

对应的时序图如下:

always @(negedge clk) begin
    E_latch <= EN | TE;
end

assign E_clk = E_latch & clk;

 那么得到的时序图和上图完全一致。

那这两种做法到底有什么区别呢?

从功能上看不出有什么区别,那就要从实现上分析,两种cell哪个更快(transition,Propagation Delay),哪个更容易收timing?

显然latch结构简单,同样工艺下latch可以做的比Flip-Flop更快。更快就意味这更好的时钟属性。

从timing分析,用latch对setup更友好,因为用latch锁存EN | TE可以做setup的整周期check,而用flip-flop只能做clk的半周期check;而用flip-flop的hold是比较宽松的,有半个时钟周期留给hold。

对于高频时钟来讲setup更难meet,这也是现在高速时钟ICG都用Latch的原因。早期低速时钟且对clk质量要求不高的的ICG也是可以用flip-flop。

下面解释一下为什么latch明明用的clk低电平触发,为什么可以做整周期的setup检查?

原因就在于latch是电平触发,在整个clk低电平都可以capture,只需要在clk高电平到来之前EN|TE满足setup,就可以稳定采样并锁存,所以可以使用整周期setup check

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值