vc_static spyglass lint cdc rdc check summary

check item

首先不管是lint cdc rdc report,都分成两大部分,一部分report是setup阶段,另一部分report是相应的规则检查。只有setup阶段的error/warning都清理干净,第二部分的报告才有价值。

关于waiver/filter

waiver的match value 支持模糊匹配(~=),配合上文件路径或者module name以及通配符,可以大面积过滤掉一些不需要check的内容。

cdc check key point

cdc check flow

顶层约束(sdc的编写)注意事项

create_clock主要是将design top module的时钟输入端口进行定义。-port xx
create_generate_clock则是由时钟端口在分频/倍频/移相(design 内部clk_gen模块)之后衍生出的clock,可能由某个cell引出,用-pin。
create与generate clk的差别

之后就是将同步的时钟分在一个group内部,哪些clk在logical不会同时存在,哪些clk在physical上不会同时存在,这些都需要定义好。
cdc check主要涉及function check,因而一些DFT MODE/BIST/相关的信号都需要设定相应的值对其进行关闭。

控制信号跨时钟域的处理办法

单比特控制信号一般是打两拍这种进行同步
多个控制信号同时有效且跨同样的时钟域,最好的解决办法是将多个控制信号合并成一个。只对一个控制信号进行跨时钟域的同步处理。
多个控制信号有固定的时钟相位差(即不是同时有效,但相隔多个clk有效是固定的),这时最好的处理办法是对一个控制信号进行跨时钟域处理,另一个控制信号则在目标时钟域中产生。

数据信号跨时钟域的处理办法

data一般是多比特,需要通过异步fifo或者进行握手
握手的原理:慢时钟域采快时钟域的数据,很可能漏采。因而可以让快时钟域给慢时钟域发出req信号,而慢时钟域给快时钟域发ack信号,快时钟域只有在接受到ack信号时才能更新data,这样可以保证慢时钟域有足够的时间对data进行采集。
异步fifo中,因为fifo的读写指针涉及到跨时钟域的同步,而且是多比特,为了避免出现聚合问题(同一个信号的不同比特位可能因为走线延时不一致,在目标时钟域即使经过同步器也会采到非理想值,汇聚在组合逻辑处可能会产生glitch),需要将异步fifo的读写指针用格雷码进行编码。

cdc check过程中容易出现的violation

一个信号同步到另外一个时钟域只能同步一次,禁止同步多次,否则会有coherency的问题。
对于任何单bit信号,在跨时钟域之前一定要先寄存(flop),只有flop的输出才能经过synchronizer.
总结:需要fix的就修,不需要修而是tool无法确认的路径,指定qualifier或者可以给CDC tool加gray_signals这个command来告诉工具这里没有问题
在这里插入图片描述

具体查看这个链接
在这里插入图片描述

门控时钟的问题

clock gate:只需要记住一件事,锁存门控就是锁存器+门,锁存器为电平触发,因此always块的敏感信号列表里面写的是电平信号。
https://zhuanlan.zhihu.com/p/139363948
在这里插入图片描述
RTL描述类似如下:

always(CLK)
	if(!CLK)
	T_EN <= EN
assign gclk= T_EN && clk

rdc check key point

看这一篇博客就足够了

多复位域可能会产生的问题1

目标register没有复位信号时

在这里插入图片描述

可能的解决方法

一是确保出现violation path上两端的寄存器会同时处于复位状态或者目标寄存器的复位比原寄存器的复位要早
在这里插入图片描述
要是不能保证,那就使用下面两种方法进行人为限制复位先后顺序。
在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值