目录

设置设计阶段

项目文件(Project File)概述

Spyglass CDC流程

运行Spyglass

其他

获取帮助的方式

调试方式

演示

Spyglass是Synopsys公司推出的一款用于设计早期用于保证RTL代码质量,排查CDC问题的RTL代码sign off工具,用于排查问题,尽早解决问题。也可以做低功耗,DFT等相关分析。下图为Spyglass的原理流程示意图,其中首先是设计准备阶段,需要准备源文件,.sgdc文件,lib文件,使用.prj文件对该设计进行管理,同时会给出相应的报告,下一个阶段您选择并运行目标(Gaol)目标是规则(Rules)的集合。规则就是一条条约束,用于检查的最基本单位。最后是分析结果阶段,此阶段使您能够分析目标运行的结果。目前使用更多的在CDC与Lint部分

设置设计阶段

添加文件选项

文件

描述

脚本使用方式

举例

源列表文件

包括扩展名为 .spp 或 .f 的文件。这些文件包含设计文件、设计选项或两者的组合。

read_file -type sourcelist <file>

read_file -type sourcelist sources.f

HDL 库

包含预编译的 VHDL 或 Verilog 文件。

set_option lib  <logical_name>  <physical_path>

set_option lib  MyLib   /a/b/mylib_path

SGDC文件

SGDC文件约束,这些设计约束用于提供在 RTL 中不明显的附加设计信息。

read_file -type sgdc  <filename>

read_file -type sgdc  constraints.sgdc

技术文件库

包括使用这些库单元的结构化网表所需的 Synopsys .lib、.sglib、.plib 和 .gateslib 文件。

read_file -type  <gateslib | sglib | plib> <lib name>

read_file -type sglib  library.sglib

waive文件

屏蔽一些不会在窗口显示的警告信息或者error,就是屏蔽一些规则检查

read_file -type waiver <prj_name.awl>

read_file -type waiver waiver.awl

上述给了使用脚本读入文件的方式,也可以使用鼠标点击的方式在GUI界面进行添加相关的文件。不在此赘述。

项目文件(Project File)概述

读入相关文件,包括设计文件,约束文件,库文件等,同时设置运行选项(set_option),SpyGlass选项用于控制SpyGlas运行,并对所有目标具有全局性(单独总结),其次设置参数(set_parameter)在目标中使用SpyGlass参数来指导目标本身的行为。有些选项可以使用set_goal_option在目标中使用,需要注意这些设置是否可以用于该选项。参数有common parameter也有一些目标特有的,因此需要在使用注意参数的使用场景。

如下是一个prj的例子。

#Set the Top of the Design Treeset_option top training#Read in individual RTL Files (Verilog/VHDL/Netlists):read_file -type hdl RTL/training.v#Read in a file list from an location defined in an environmental file###read_file -type sourcefile $env(SOURCE)/filelist.f#Read in a Design Constraints File that contains clocks, resets, set_case_anlysis, etc..read_file -type sgdc SGDC/training.sgdc#Define a waiver file to put EXCEPTIONS INTO and a default waiver file.read_file -type waiver training.swlset_option default_waiver_file training.swl#Set a global option that all Verilog will be System Verilog Compliant.set_option enableSV yes#Where do we find our rule sets:#Where do we find our rule sets:current_methodology $env(SPYGLASS_HOME)/GuideWare2.0/block/rtl_handoff#Define goal specific parameters and optionscurrent_goal cdc/cdc_verifyset parameter ac sync debug yes #Turns on extra debuggin during cdc verify goalset_parameter enable_handshake no #Turn off Handshake Sync Schemeset_goal_option XXXX # Only for this goal#Define a scenario that uses different SGDC file “–goals cdc_verify@mode1”surrent_goal cdc/cdc_verify –scenario mode1read_file –type sgdc mode1.sgdc

这里对其进行简单解释哈~首先是设置设计Top的名称,就是的module名称。接下来读入相关文件,其中sgdc可以使用DC吐出来的SDC生成,然后在其基础上进行修改,不修改直接使用是不被允许的,官方文件中明确指出需要进一步修改。生成的文件对于大型设计SGDC的书写可以提供很多便利。进而是全局的设置选项,根据自己的需要进行相关的设置。接下来是设置当前的方法,当前的目标,然后目标对应的参数与目标设置。可以使用GUI界面进行检查。同时对于需要重新建立一个项目文件的情况,可以自己使用GUI界面新建一个prj,然后进行相关基础设置后保存,再次基础上进行进一步的修改。

重点是介绍SGDC的书写,将在SGDC的书写(单独总结)篇进行详述

另外一个需要提及的是,current_methodology,方法分为blockhandoff以及sochandoff,在使用的时候根据需要进行选择。其中SoC-level的目标集更多一些~如下图所示。其中M是必选,O为可选,但是整体来看其实主要是在lay_out层次的增加,一般我们只是用rtl检查的话差距不大。

Spyglass CDC流程

如下图所示,该图介绍了CDC流程的目标及其对应的规则。每一个目标有做对应的事情,需要执行完上一个目标后同时达到该目标后,才可以进行到下一个阶段,可以看到,每一个目标对应的规则是不同的,因此可能会导致一些问题遗漏,同时可能导致下一个目标的error的由于上一个目标没有完成的遗留问题。

接下来简单介绍每一个步骤需要完成的事情

  • cdc_setup 该步骤需要做的指定精确完整的SpyGlass CDC验证所需的约束、参数和其他设计组件。

    • 输出

      • autoclocks.sgdc
      • generated clocks.sgdc
      • autoresets.sgdc
      • generated_resets.sgdc
  • cdc_setup_check 检查完整正确的设置
    • 此步骤的目的是执行约束健全性检查,并检测任何冲突/缺失的约束。对于正确的CDC分析,在约束文件中定义时钟并正确重置非常重要
    • 先决条件
      • 前一个目标cdc/cdc_setup中的零错误和零警告
    • 输出
      • Clock_info03a‐报告时钟不受限制的故障
      • Clock_info03b报告数据引脚绑定到常数的触发器
      • Clock_info05‐报告多路复用器上收敛的时钟信号
  • clock_reset_integrity 修正时钟和复位的问题
  • cdc_verify 发现时钟域交叉中的结构问题,修正设计中的异步问题
    • 输出为可能违反规则的设计问题
  • cdc_verify_struct  使用已验证的模块验证SoC

执行起来的时候是一步一步来的~务必确保上一个阶段是没有问题的再进行下一步的检查

运行Spyglass

在运行Spyglass的时候,假设你已经有一个prj文件。

运行时使用如下命令 spyglass –project training.prj –batch –goals cdc/cdc_setup | tee cdc.log &

在分析调试时去掉–batch选项即可,即spyglass –project training.prj –goals cdc/cdc_setup &

使用时根据不同的目标更换对应选项即可

在你没有prj文件的时候,可以使用gui界面快捷的设置相关参数,保存一个文件用于后续的使用。输入spyglass,不加任何选项,读入文件,将不需要检查的文件设置为stop,设置一个top选项,选择一个目标goal,打开incremental Mode,运行,保存prj文件即可,就可以看到一个软件生成的文件了

其他

获取帮助的方式

gui界面的help界面,安装目录下的的doc文件夹下的官方指导文件,论坛博文

调试方式

一般打开电路图进行debug,打开incremental Mode可以方便观察那些改动引起或是消除了那些error

演示

见如下链接(哔哩哔哩视频的形式),主要是异步FIFO的lint与CDC检查。未完成

本文参考:1,SpyGlass_CDCMethodology_GuideWare2.0_UserGuide.pdf 2,SpyGlass_CDC_Training_Slides_510_20Aug2013.pdf

Spyglass概述相关推荐

  1. explore_UserGuide

    目录 介绍 本指南 目标受众 SpyGlass概述 SpyGlass Explorer概述 SpyGlass Explorer特点 相关文档 开始 设置环境变量 设置License 启动SpyGlas ...

  2. DC1+2: Tcl与Design Compiler (一二)——前言+DC综合与Tcl语法结构概述+DCT/DCG+wireloadmodel+Comments

    DCbasic and TCL命令 本文如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/  ,作者:IC_learner 1.逻辑综合的 ...

  3. 【前端系列教程之HTML5】01_HTML概述

    一.Web前端开发工具 1.1.常用前端开发工具介绍 软件开发工具是用于辅助软件生命周期过程的基于计算机的工具.通常可以设计并实现工具来支持特定的软件工程方法,减少手工方式管理的负担. 作为一个前端开 ...

  4. Java 多线程概述

    多线程技术概述 1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间. 线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换.并发执行,一个进程最少有一个线程, ...

  5. 【SpringMVC】概述

    概述: SpringMVC:是基于spring的一个框架, 实际上就是spring的一个模块, 专门是做web开发的.                       理解是servlet的一个升级 Sp ...

  6. 梯度下降优化算法概述

    本文原文是 An overview of gradient descent optimization algorithms,同时作者也在 arXiv 上发了一篇同样内容的 论文. 本文结合了两者来翻译 ...

  7. Redis概述和基础

    Redis 1.NoSQL NoSQL = Not Only SQL(不仅仅是SQL) 泛指非关系型数据库的,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的 ...

  8. OpenCL™(开放计算语言)概述

    OpenCL™(开放计算语言)概述 异构系统并行编程的开准 OpenCL™(开放计算语言)是一种开放的.免版税的标准,用于对超级计算机.云服务器.个人计算机.移动设备和嵌入式平台中的,各种加速器进行跨 ...

  9. 自动驾驶QNX,Linux,Autosar概述

    自动驾驶QNX,Linux,Autosar概述 QNX是一个分布式.嵌入式.可规模扩展的实时操作系统.遵循POSIX.1 (程序接口)和POSIX.2 (Shell和工具).部分遵循POSIX.1b( ...

最新文章

  1. C++中重载赋值运算符=
  2. 英特尔中国换帅,迎来史上首位女董事长,原总裁杨旭年底退休
  3. jvm十三:类加载器命名空间
  4. leetcode-简单题-题序:9+13
  5. leetcode-237-删除链表中的节点
  6. cocos2d-x初探学习笔记(13)--内存回收机制
  7. JS数组的迭代器方法
  8. fork、vfork、clone
  9. 洛谷 3381 【模板】最小费用最大流
  10. Mysql 学习笔记2
  11. c语言去空格换行符,关于文件操作,碰到空格就换行
  12. 忘却的旋律java2_[17-8-10]【复杂问题】打不开游戏
  13. android 拖动按钮
  14. HDU 5975 2016ICPC大连 E: Aninteresting game(树状数组原理)
  15. git jenkins 子目录_在Jenkins中,如何将项目签出到特定目录(使用GIT)
  16. Vue-动态绑定属性
  17. Java - Timestamp cannot be cast to String
  18. [4G5G专题-90]:流程 - 4G LTE 专用承载建立与Qos业务:QCI、ARP、AMBR、GBR、NON-GBR
  19. 1分钟理清楚C++类模板和模板类区别
  20. 【安装配置Git】最新版Git安装教程

热门文章

  1. 【动画宣传片视频制作软件】Focusky教程 | 演示时手写注释功能
  2. MybatisPlus调用count函数
  3. 深入理解Java虚拟机-第六章 类文件结构
  4. java调weka_java调用weka
  5. 计算机兔同笼的方法,“鸡兔同笼”问题,4种不同的、有趣的解法,简单易懂...
  6. 大数据盘点|手机品牌鏖战618,realme突围安卓榜
  7. FLEX事件机制整理
  8. 今天,谷歌发布了一个里程碑项目Cloud AutoML 这是个什么东西
  9. 《Essential C++》笔记
  10. 树莓派智能音响项目——snowboy语音唤醒初探