一、Spyglass简介
Spyglass是由Synopsis公司开发的一款全面的设计分析和优化工具,广泛应用于电子设计自动化(EDA)领域。它主要用于帮助设计工程师在芯片设计过程中快速发现和解决潜在的问题,确保RTL代码的质量,并且能够进行跨时钟域(CDC)、低功耗、可测试性设计(DFT)等多方面的检查与分析。
在FPGA和芯片设计开发过程中,Spyglass无疑是一款RTL规则检查的利器。代码的静态检查,大大降低了项目后续调试阶段的风险,起到了事半功倍的作用。同时Spyglass也会对代码风格做一定程度的检查,好的代码风格是面积和速度平衡的体现。
二、Spyglass的命令行界面操作
Spyglass支持GUI图形界面操作和命令行界面操作,当面对较复杂的工程时,为操作简便,命令行操作常常被提及。如图1为Spyglass的命令行输入窗口,
图1 Spyglass命令行输入窗口
后台启动Spyglass,命令如下:
sg_shell –tcl xxx.tcl
其中,xxx.tcl为spyglass工程的tcl脚本,包括read_file、set_option、run_goals等命令操作。
三、TCL脚本开发
TCL脚本的开发分为如下部分,读取filelist文件、读取waiver文件、Set_Option、Design_Read、Run_Goals等。
1. 读取filelist文件:
read_file –type sourcelist xxx.f
读取指定路径下.f文件(不支持filelist文件中的宏定义,需要做路径替换)
2. 读取waiver文件:
read_file –type awl xxx.awl
读取waiver文件,告警屏蔽信息。
3. Set_Option:
① set_option language_mode mixed,支持VHDL、Verilog混合编译;
② set_option enableSV yes,支持Systemverilog文件编译;
③ set_option enableSV09 yes,支持Systemverilog 2009版本编译;
④ set_option top xxx_top,设置top名;
⑤ set_option incdir xxx/xxx,设置include文件路径;
⑥ set_option auto_save yes,设置自动保存工程。
4. Design_Read:(design_read->run design_read)
根据filelist读取设计文件,进行文件编译和分析,命令行如下
current_goal Design_Read –top xxx_top
link_design –force
5. Run_Goals:(goal setup->run goals)
设置goals,并进行相应检查,命令行如下:
current_goal lint/lint_rtl –top xxx_top
run_goal
6. 报告重定向:
write_report moresimple > xxx.rpt
7. 报告分类:
在大型项目中,不同模块由不同的设计人员负责,由此可以使用tcl脚本读取xxx.rpt报告,将告警信息按照模块名写到对应的log文件中,便于设计人员定位和修改。