文章目录
1. cdc大体介绍
CDC工作是进行交付代码之前必须要做的一步检查,尤其是当一个系统设计人员水平不一时,该检查不可忽略;关于进行的异步检查我就不细讲了,主要有如下问题的check;
- 时钟毛刺/信号毛刺问题;
- 同步信号聚合问题;
- 多bit信号同步问题;
2. cdc流程说明
cdc检查大体分为五个步骤。具体内容可查看相应的spyglass资料,需要可以私聊我;
1. cdc_setup
主要是进行时钟/复位/参数设定
指定constraints(SGDC file),parameters 及其他指定用于该project的定义来精准运行SpyGlass CDC检查。可以使用‘sdc2sgdc’ 命令来将 block-level SDC 转化成相应的SGDC 约束文件。运行‘cdc_setup_check’ goal能够生成constraints, 但生成的constraint一定要designer仔细review下再用。运行‘cdc_setup’后工具可以理解整个design的architecture, 解决一些block-box的问题,并自动生成‘autoclock.sgdc’及autoreset.sgdc作为 constraint的base 来使用。
2. cdc_setup_check
检查setup过程中约束的正确性和完整性。在进行下一步时一定要修掉该stage报的violation。 如确保所有flip-flop都有时钟。
3. cdc_reset_integrity
修掉时钟和复位不完整定义的问题,确保时钟和复位都被合理定义,并且确保clock/reset没有glitch和race。
4. cdc_verify
Fix block-level violations to make the block SpyGlass CDC clean要修掉所有的violations, error和warning都要review,必要时可以waive掉。 清理violation是有先后优先级顺序的。
- ac_sync_group
- ac_conv01/ac_conv02/ac_conv03/ac_conv04
- ac_glitch*/clock_glitch*
5.cdc_verfy_struct
验证SOC块;
方法学可以参考SpyGlass_CDCMethodology_GuideWare2.0_UserGuide.pdf
3.基本语法说明
1.clock
clock -name top.clk -tag C1 -domain A
基本的语法如上,-name指定设计中的时钟路径;
-tag 为这个时钟设定一个名字;
-domain 时钟域;
2.reset
reset -name top.rst -value 0/1 -async | -sync
指定复位的值为0/1,并指明同步复位还是异步复位;
3.abstract_port
abstract_port -port input_a -clock VK1
指定输入port a所属的时钟域为VK1;
4.assume_path
为黑盒设置指定假定路径;
assume_path -name <bb_name> -input <input_pin_name> -output <output_pin_name>
5.quasi_static
设定某个值为固定值,不分析该值的跳变导致的异步问题;
quasi_static -name flop_name
6.set_case_analysis
设定时钟mux的sel信号,进行固定分析;
set_case_analysis -name flop -value 0/1
4.其它一些想说的
- cdc工作前提的约束文件比较重要,工具可以自动生成一些文件,但是需要进行相应的check后方可使用;
- cdc报出的问题,有可能是约束编写问题或设计人员确实有相应问题。如cdc工作人员不能确定,需要尽快找到设计人员进行确认;
- violation的确认需要讲究优先级;
- 报出的cdc问题,设计需要整体考虑同步问题;