spyglass笔记

SpyGlass是一款功能强大的RTL分析工具,支持lint、CDC、LP、Constraint和DFT等功能。它通过规则、目标和子方法论进行分析,提供GUI和批处理两种模式。在GUI模式中,用户进行设计设置、目标设置和分析结果查看。批处理模式下,通过命令行选项运行目标。SpyGlass使用GuideWare参考方法学,并提供了丰富的TCL命令集进行设计阶段管理和分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

下图为Spyglass的原理流程示意图:

在这里插入图片描述
图来自:SpyGlass_Console_Reference.pdf

Spyglass工具的五大功能: lint, CDC(多时钟域检查), LP(低功耗),Constraint(约束),DFT(可测试性)。

lint主要是检查代码的语法,是否是可综合的语言,cdc用于检查跨时钟路径信号是否有问题,以防止出现亚稳态,DFT主要是实现所有的flop clock和reset信号可控。
更多介绍

目的

spyglass lint可对Verilog, VHDL, SystemVerilog等语言进行RTL检查,包括

1)语法检查、代码风格、IP重用规则等

2)位宽不匹配、不完整的case语句,缺少默认条件,缺少else子句、由关系运算符或算术运算符导致的精度损失、缺少驱动

3)可综合性检查

4)仿真过程中可能出现的问题(竞争与冒险、时钟,选择,启用,复位信号设定为常量、未使用的逻辑门、浮空的引脚)

5)结构检查(组合逻辑环路、锁存器及三态输出、控制信号用作数据信号、扇出超过一定数量)

目前包含:SpyGlass Lint, CDC, RDC, DFT ADV, Power. 是业界RTL Signoff 的重要工具.

一些基本概念

  • Rule: 是SpyGlass 进行RTL分析的最小单位.

  • Goal: 是一系列相关Rule的集合,组合起来完成RTL分析的某个特定任务. user可以用GuideWare定义好的Goal, 也可根据工程项目要求来选择一系列rule的集合形成自定义Goal. GUI里面点Goal的button来选择设定, 当然也可在Prj file 里定义.

  • Sub-Methodology: 是一系列相关Goal的集合, 用以达成某方面特定目标, 如完成CDC check.
    目前包括 SpyGlass CDC/Constraints/DFT/Power/TXV Methodology

  • Methodology : A methodology is a collection of sub-methodologies or a collection of goals.
    Each sub-methodology may further contain sub-methodologies or a set of goals where each goal is a collection of rules.

  • SGDC : Constraint 文件, 主要包含clock和reset等约束信息.

  • Waiver : 用以过滤一些结果的文件.

  • Severity : report结果中分Fatal, Error, Warning和INFO四等级信息.

  • parameter: 可以在进行RTL分析之前设定某些参数, 对检查过程进行一些约束

启动方式

- To run SpyGlass in the default, GUI mode, type
spyglass or spyglass –project <project name>

- To run SpyGlass in batch mode, type
spyglass –batch –project <project name> \ 
[-designread|-goals|-showgoals][-group]

在这里插入图片描述

GUI模式

  1. 启动 :source spyglass.env #设置环境变量
    spyglaas -gui #启动软件
spyglass &

1. Design Setup

点击Design setup 相当于

sg_shell> current_goal Design_Read -top npu_vector
current_goal: info: loading goal `Design_Read' with top `npu_vector' (in progress)
current_goal: info: finished loading goal `Design_Read' (ok)

依次添加file;set option;read design
在这里插入图片描述
选中 synthesize netlist相当于

set_option designread_enable_synthesis yes
set_option designread_enable_synthesis no

点击 run design read 相当于:

sg_shell> compile_design -force

在这里插入图片描述

把需要的design data准备好,包括网表.v(或者source file list),technology library,sgdc文件(没有的话可以用sdc代替,使用命令set_option sdc2sgdc yes即可

2. Goal Setup

点击Goal setup

sg_shell> current_goal lint/lint_rtl -top npu_vector
current_goal: info: loading goal `lint/lint_rtl' with top `npu_vector' (in progress)
current_goal: info: finished loading goal `lint/lint_rtl' (ok)

select下选择需要检查的Goal

右键编辑该Goal下面的各种rule,点击界面右下角会出现该条rule的解释
在这里插入图片描述
点击run goal,相当于

sg_shell> run_goal

3. Analysis Result

最后,点击Analysis Results就能检查违例的情况

<think>好的,用户的问题是关于Spyglass工具中-project和-goal参数在lint_rtl批量处理中的具体含义和作用。首先,我需要回忆一下Spyglass的基本使用方法和这些参数的常见用途。 根据用户提供的引用,特别是引用[1]和[2],里面提到启动Spyglass时使用-project参数指定项目名称,而-goals参数可能与选择要运行的目标或检查项有关。引用[1]中还提到了-batch模式运行,说明用户可能在问批量处理时的参数设置。 接下来,我需要确认-project参数的作用。通常,在EDA工具中,项目文件(.prj)包含了配置信息、文件列表、约束等,所以-project应该是用来加载特定项目的配置文件,确保所有设置和文件都被正确加载。引用[2]提到加载.prj文件,这验证了我的理解。 然后是-goal参数。引用[1]提到了-showgoals和-group,可能涉及不同的检查目标。在Spyglass中,目标(goals)可能对应不同的检查规则或分析阶段,比如lint_rtl可能是一组预定义的规则集。因此,使用-goal参数可能是指定要运行的具体目标或检查项,这样用户可以选择只运行某些特定的分析,而不是全部,从而提高效率。 用户提到的lint_rtl是Spyglass中的一个常见目标,用于RTL代码的静态检查。在批量处理时,指定-project确保项目配置正确,而-goal lint_rtl则明确执行RTL的Lint检查。这可以帮助自动化流程,避免手动操作,适合集成到CI/CD环境中。 另外,引用[3]提到Spyglass Lint可以检查混合设计中的问题,比如数据类型不兼容等,而使用-goal可能涉及这些具体的检查目标。因此,参数组合起来的作用就是加载项目配置并执行指定的检查目标,完成批量处理。 需要确保解释清楚每个参数的意义和它们组合使用时的效果,同时结合用户提供的引用内容,适当加入引用标记。还要注意用户可能对命令行参数不熟悉,需要简明扼要地说明,避免技术术语过多。 最后,生成的相关问题需要围绕Spyglass的参数使用、批量处理优化、配置管理和结果分析等方面,帮助用户进一步了解工具的使用和最佳实践。</think>### Spyglass命令行参数解析 #### 1. `-project`参数的核心作用 `-project`参数用于指定Spyglass工程配置文件(扩展名通常为`.prj`),该文件包含以下关键信息: - RTL文件路径列表 - 约束规则配置(如`waive`文件路径) - 目标检查策略(例如`lint_rtl`的目标集合) - 工具运行参数预定义值 **示例命令**: ```shell spyglass -batch -project chip_top.prj -goals lint_rtl ``` 此命令会加载`chip_top.prj`中定义的设计文件列表和预配置参数,并启动RTL静态检查[^2][^3]。 #### 2. `-goal`参数的深层含义 `-goal`参数用于指定需要执行的检查目标集合,其作用层级结构为: ``` 目标组(Goal Group) └─ 检查目标(Goal) └─ 具体检查规则(Rule) ``` 当指定`-goal lint_rtl`时: - 激活`lint_rtl`目标组下的所有默认检查规则 - 执行包括时钟域交叉检查、组合逻辑环路检测等200+预定义规则 - 可通过`.prj`文件中的`sg_config`命令修改激活的规则子集 #### 3. 参数组合的工程意义 `-project`与`-goal`联用时形成完整的工作流: ```mermaid graph TD A[启动命令] --> B[加载.prj配置] B --> C[初始化约束条件] C --> D[按-goal选择检查目标] D --> E[执行批量检查] E --> F[生成报告文件] ``` #### 4. 典型应用场景 1. **CI/CD集成**: ```shell # Jenkins流水线示例 spyglass -batch -project ${PROJECT_NAME}.prj \ -goals lint_rtl,cdc_verify \ -output_dir ./spyglass_reports ``` 自动生成HTML/PDF格式的规则违例报告[^3] 2. **多阶段检查**: ```shell # 第一阶段:基础检查 spyglass -batch -project soc.prj -goals lint_rtl # 第二阶段:深度验证 spyglass -batch -project soc.prj -goals cdc_verify,power_checks ``` 3. **规则定制执行**: 在`.prj`文件中配置: ```tcl sg_config -goal lint_rtl { set_option enable {HARDWARE-CKG-3 HARDWARE-DFT-4} set_option severity {HARDWARE-RST-2 Warning} } ``` 通过命令行激活定制规则集 #### 5. 参数扩展应用 | 附加参数 | 功能说明 | 示例用法 | |----------------|---------------------------------------|-----------------------------------| | `-batch` | 启用非交互式批处理模式 | `spyglass -batch ...` | | `-output_dir` | 指定报告输出目录 | `-output_dir ./spyglass_run1` | | `-sg_qor` | 生成质量评估报告 | `-sg_qor qor.rpt` | | `-force` | 强制覆盖已有结果 | `-force` |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值