Spyglass之CDC检查(1)

文章目录

      • 熟悉界面
      • 约束文件
      • CDC流程

本文是SPYGLASS CDC检查系列第一篇文章。简单起见,本文的操作基本都在GUI模式下进行。

熟悉界面

在Terminal中输入 spyglass -project test.prj & 新建或打开一个spyglass工程。
GUI界面最上面为工具栏,

  • 点击help可以查看spyglass manual。多看看spyglass manual是学习spyglass的最好方法。
  • 点击Design setup进入读入设计界面
  • 点击Goal Setup进入目标选择界面
  • 点击Analysis results查看检查结果

(1)读入设计

需要提供以下文件

  • RTL code / Flist
  • SGDC 约束文件
  • lib 库 // 如果设计模块中有库单元,如SRAM,时钟门控等(1)提供lib;(2)或者提供该库单元的RTL文件,并将该库单元设成BlackBox
  • Waiver file //过滤检查结果的文件, 非必要,尽量不使用
    Spyglass之CDC检查(1)_第1张图片set_option过程中,设置模块顶层(必须),blackbox,搜索路径等参数。

(2)选择检查目标
spyglass功能非常强大, 可以做代码检查,CDC检查,功耗检查等。本篇文章只介绍CDC检查。
Spyglass之CDC检查(1)_第2张图片(3)分析检查结果
一定要将每个结果都检查一遍。如有报错,先在最左边的help viewer中查看报错原因。如果是RTL代码问题,则优化代码,如果确定没有问题,则修改约束脚本,增加约束,直到每一项结果都是绿色。
Spyglass之CDC检查(1)_第3张图片

约束文件

约束文件要在读入设计步骤之前准备好,也可以在检查过程中逐渐完善。最基本的约束包括时钟,复位,输入以及输出端口约束。

//指定模块顶层
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

clock 和 generated_clock命令都可以约束时钟。

  • clock约束模块端口输入的时钟引脚。
  • generated_clock约束模块内部时序逻辑产生的时钟,如分频器。类似SDC中的create_generated_clock。

CDC流程

Goal: 是一系列相关Rule的集合,组合起来完成RTL分析的某个特定任务.
Rule: 是SpyGlass 进行RTL分析的最小单位.

  • cdc_setup和cdc_setup_check过程主要检查约束文件是否完整。要保证所有的输入输出端口100%约束。
  • cdc_verify_struct过程主要检查信号是否同步
  • cdc_verify过程主要检查数据丢失,聚合问题,以及报告识别出的握手,FIFO模块
    Spyglass之CDC检查(1)_第4张图片
    cdc/cdc_setup-> Spyglass之CDC检查(2)
    cdc/cdc_setup_check-> Spyglass之CDC检查(3)
    cdc/verify_struct (structural cdc checks)-> Spyglass之CDC检查(4)
    cdc/verify (functional cdc checks)-> Spyglass之CDC检查(5)

你可能感兴趣的:(Spyglass)