spyglass用脚本运行

发布时间 2023-10-13 00:15:59作者: Galois_V

  前面讲到过spyglass的操作,挺简单的不过对于规模比较大的项目来说,通过图形化界面进行spyglass检查则显得笨拙效率低下。对于小的项目或者模块而言用图形界面操作很简单。笔者最近做项目用到的.v文件比较多,如果用图形化界面一个个添加那就很浪费时间。这里就简单介绍下使用脚本运行spyglass。

  test.tcl

 1 ##spyglass tcl
 2 ##设置顶层模块
 3 set top test
 4 ##设置工程路径
 5 set prj_path /work/project/test
 6 new_project ${top} -projectwdir $prj_path -force
 7 ##读取rtl及工艺库lib
 8 ##读取名称为"top"的f文件,把.f的.v及包含的文件导进来
 9 read_file -type sourcelist ${top}.f
10 ##读取工艺库的.v文件
11 read_file -type gateslib /home/tsmc_lib/XXX.lib
12 
13 ##读取约束文件
14 read_file -type sgdc ${top}.sgdc
15 ##spyglass 设置项
16 set_option language_mode mixed
17 set_option enableSV yes
18 
19 ##spyglass 检查项lint rtl
20 current_goal lint/lint_rtl -top ${top}
21 run_goal
22 
23 
24 ##将检查报告写到顶层文件名_lint.rpt
25 write_report moresimple > ${top}_lint.rpt
26 ##保存工程为顶层文件名.prj
27 save_project -force ${top}.prj
28 ##完成退出
29 exit -force

   test.f

 1 //添加宏定义
 2 +define+DEBUG
 3 +define+TEST1
 4 
 5 //rtl源码及路径
 6 /data/work/test/rtl/a.v
 7 /data/work/test/clk_gen.v
 8 /data/work/test/add.v
 9 /data/work/test/reset.v
10 /data/work/clk/b.v
11 /data/work/clk/c.v

  test.sgdc

 1 //sgdc
 2 clock -name sys_clk     -period 8  -edge {0    4}
 3 reset -name rst_n        -value  0
 4 clock -name clk_100m   -period 10 -edge {0    5}
 5 
 6 input   -name i_add_0       -clock sys_clk
 7 input   -name i_enable     -clock sys_clk
 8 input   -name i_add_1       -clock sys_clk
 9 input   -name i_add_2       -clock sys_clk
10 output -name o_vld       -clock sys_clk
11 output -name o_data       -clock sys_clk
12 
13 input   -name i_din       -clock clk_100m
14 output -name o_add_0       -clock clk_100m

  最后把这些文件放在同一个目录下,运行指令sg_shell -tcl test.tcl即可