Spyglass检查之CDC(1)

文章目录

      • 读入设计
      • 约束文件
      • 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模块
    在这里插入图片描述