Spyglass之CDC检查一

转:https://blog.csdn.net/zhong_ethan/article/details/106708346?spm=1001.2014.3001.5502

本文是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 //过滤检查结果的文件, 非必要,尽量不使用
    在这里插入图片描述set_option过程中,设置模块顶层(必须),blackbox,搜索路径等参数。

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

约束文件

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

//指定模块顶层
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分析的最小单位.

猜你喜欢

转载自blog.csdn.net/weixin_43274923/article/details/123779246
今日推荐