文章目录
- 读入设计
- 约束文件
- CDC流程
本文是SPYGLASS CDC检查系列第一篇文章。简单起见,本文的操作基本都在GUI模式下进行。
在Terminal中输入 spyglass -project test.prj & 新建一个spyglass工程。
读入设计
- RTL code / Flist
- SGDC 约束文件
- lib 库 // 如果设计模块中有库单元,如SRAM,时钟门控等(1)提供lib;(2)或者提供该库单元的RTL文件,并将该库单元设成BlackBox
- Waiver file //过滤检查结果的文件, 非必要,尽量不使用
约束文件
约束文件要在读入设计步骤之前准备好,也可以在检查过程中逐渐完善。最基本的约束包括时钟,复位,输入以及输出端口约束。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //指定模块顶层 current_design training //约束时钟, 模块顶层所有的时钟都要约束 clock -name CLKA -period 10 -edge {0 5} clock -name CLKB -period 100 -edge {0 50} //约束复位 reset -name reset_a -value 0 reset -name reset_b -value 0 //约束输入端口 input -name {in_a in_b reset_a} -clock CLKA input -name {resetn_b} -clock CLKB //约束输出端口 output -name {dout} -clock CLKB //如果有SDC约束文件 sdc_data -file ../my_file.sdc |
CDC流程
Goal: 是一系列相关Rule的集合,组合起来完成RTL分析的某个特定任务.
Rule: 是SpyGlass 进行RTL分析的最小单位.
- cdc_setup和cdc_setup_check过程主要检查约束文件是否完整。要保证所有的输入输出端口100%约束。
- cdc_verify_struct过程主要检查信号是否同步
- cdc_verify过程主要检查数据丢失,聚合问题,以及报告识别出的握手,FIFO模块