spyglass用脚本运行
前面讲到过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即可