前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spyglass | 基础操作

spyglass | 基础操作

作者头像
数字芯片社区
发布2021-10-11 17:07:15
3.4K0
发布2021-10-11 17:07:15
举报
文章被收录于专栏:数字芯片数字芯片

SpyGalss是目前业界唯一可靠的RTL Sign off解决方案,可以帮助客户在设计早期发现潜在问题,保证产品质量,极大的减少设计风险,降低设计成本。

包含五大模块:lint, CDC(跨时钟域检查), LP(低功耗),Constraint(约束),DFT(可测试性)。

本文测试用例

该测试设计包括具有符合 Wishbone 总线的 USB 控制器 (USB) 和音频解码器内核 (IMA_ADPCM)。这些组件连接到 Wishbone 连接矩阵 (WB_Conmax),后者又使用 Wishbone-to-Amba 桥 (wb2ahb) 连接到 AMBA 总线。该设计属于混合 RTL 类型,同时使用 Verilog 和 VHDL,如下方框图所示:

设计目录结构:

包括:rtl(用于存放代码),sim(用于存放中间文件和工程文件)、filelist文件等。

spyglass GUI操作

首先我们在sim目录中打开spyglass GUI界面操作:

读取设计文件

GUI界面打开spyglass

代码语言:javascript
复制
spyglass &

然后点击Add File(s)添加文件:

所需文件路径存放在filelit文件中:

设置顶层模块

添加完文件后点击Set Options,然后选择列表中选择Top Level Design Unit,Value值为顶层模块名,如下图所示:

编译设计

点击Read Design,再在左侧点击Run Design Read开始进行设计文件编译和分析,在读取完成后会在下方窗口列出问题。如下图所示:

如下图,其中三个问题类型都为ErrorAnalyzeB Box,这是因为有的模块文件没有添加,spygalss无法找到,后面spygalss会将其作为黑盒子处理。

左侧instance下文件不同颜色标识意义为:

•绿色表示已准备好进行分析但尚未在内部综合; •黑色表示无法分析该块(黑框); •白色表示该模块是可综合的;

注意:默认情况下,设计读取不合成设计,因此尚未创建原理图。要使用 SpyGlass 进行完整的设计分析,应首先解决所有黑框,并且选择复选框Synthesize Netlist, 并重新运行Run Design Read。因此我们需将设计文件路径全部包括进去,在filelist添加以下文件:

代码语言:javascript
复制
../rtl/usb/usbf_top.v
../rtl/usb/usbf_utmi_if.v
../rtl/usb/usbf_utmi_ls.v

并且将conmaxusb等库文件添加进去,重新Run Design Read。如下,ErrorAnalyzeB Box问题已经解决2个,还有一个问题是IMA_ADPCM引起的,后面会解决。

静态分析

下面列出使用spyglass来进行lint分析的步骤。注意使用spyglass进行分析不要求完整的工程文件。

首先选择Linting RTL分析。在窗口上方中间点击Goal Setup ,然后在主窗口区勾选Lint_rtl

得到结果后,查看Lint分析结果。首先展开lint/lint_rtl文件夹消息。选择并展开inferLatch文件夹,错误相关的代码会在RTL代码窗口中显示出来:

点击

符号得出电路图如图:

由电路和.v文件都可得出,这是因为hready信号没有在else后赋值,生成了锁存器。如果这些Latch是故意的,那通过屏蔽对该处的规则检查即可,否则我们修改代码后重新运行Goal。

最后save工程后关闭,打开工程文件wb_subsystem.prj,打开的文件如下:

  • read_file: 命令定义了在 SpyGlass 运行期间要读取的各种类型的文件。
  • language_mode: 选项用于指定当前 SpyGlass 运行的操作语言。默认值为“混合”,(将处理 Verilog、VHDL 和混合语言设计)。
  • projectwdir: 选项用于指定项目工作目录
  • GuideWare/latest : 是默认规则设置,它在项目文件中定义为 active_methodology。

可以在wb_subsystem.prj中,将这些源文件列表添加进去:

代码语言:javascript
复制
read_file -type sourcelist ../filelist/file.list
read_file -type sourcelist ../rtl/wb_conmax/file.list

spyglass 命令操作

在上述基础上,将使用-batch选项在批处理模式下运行SpyGlass。同样的操作也可以在GUI模式下完成。

通过下面的指令来运行SpyGlass工程:

代码语言:javascript
复制
spyglass -project wb_subsystem.prj -designread -batch

提示有6个错误。SpyGlass会生成比较多的报告,其中常用的报告为:

./wb_subsystem/wb_subsystem/Design_Read/spyglass_reports/moresimple.rpt其内容如下:

它们是被实例化的标准单元,提示没有定义。这些单元很可能会使用 -y/-v 选项传递,所以我们在 usb中的目录,看是否有没有加进去的库文件。可以看到 usb_lib 目录存在于usb目录中,但没有指定 -y 作为 file.list的一部分。

通过在 .prj中添加以下内容,指定Verilog库路径../rtl/usb/usb_lib和库文件扩展名.v以读取缺失的定义:

代码语言:javascript
复制
  set_option y { ../rtl/usb/usb_lib }
  set_option libext { .v }

然后重新执行命令spyglass -project wb_subsystem.prj -designread -batch

可以看到剩下的一个黑盒错误来自IMA_ADPCM_top。这部分采用VHDL设计,出现黑盒问题原因是其设计文件尚未包含在.prj文件。

预编译库来解决IMA_ADPCM_top黑盒问题

预编译HDL库,需要指定逻辑库中要预编译的文件列表,以及逻辑库名和物理目录的映射关系。这是使用lib_hdlfiles(定义要编译到命名库的文件)和 lib(将命名库映射到物理目录)选项来完成的:

代码语言:javascript
复制
set_option libhdlfiles ima_adpcm_lib "../rtl/ima_adpcm/IMA_ADPCM_Encode.vhd \
                                   ../rtl/ima_adpcm/IMA_adpcm_steptable_rom.vhd \
                                   ../rtl/ima_adpcm/WAV_header_rom.vhd \
                                    ../rtl/ima_adpcm/IMA_ADPCM_top.vhd "
set_option lib ima_adpcm_lib ../ima_adpcm_lib

首先删除包含上次运行保存的网表的结果目录,然后重新运行,确认这个最新的项目文件解决了来自IMA_ADPCM_top的黑盒错误:

代码语言:javascript
复制
rm -rf wb_subsystem
spyglass -project wb_subsystem.prj -designread –batch

运行Goal及查看报告信息

通过下面命令来获取可用的Goal列表:

代码语言:javascript
复制
spyglass –project wb_subsystem.prj -showgoals

使用如下命令来运行lint/lint_rtl分析:

代码语言:javascript
复制
spyglass -project wb_subsystem.prj -goals lint/lint_rtl -batch

在文件./wb_subsystem/wb_subsystem/lint/lint_rtl/spyglass_reports/moresimple.rpt中查看更为详细的报告:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字ICer 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文测试用例
  • 设计目录结构:
  • spyglass GUI操作
    • 读取设计文件
      • 设置顶层模块
        • 编译设计
          • 静态分析
            • 通过下面的指令来运行SpyGlass工程:
            • 预编译库来解决IMA_ADPCM_top黑盒问题
        • spyglass 命令操作
        • 运行Goal及查看报告信息
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档