以下是一个示例脚本,展示了如何使用 SpyGlass 对纯 RTL 代码和带有 FSDB 波形的 RTL 代码进行功耗估计,并支持将 SDC 文件转换为 SGDC 文件。
# 设置工作目录
set workdir "work"
file mkdir $workdir
# 创建工作库
vlib $workdir
# 映射工作库
vmap work $workdir
# 读取文件列表
set filelist "rtl_filelist.f"
# 读取设计文件
foreach file [split [read_file $filelist] "\n"] {
if {[string trim $file] ne ""} {
vlog -work work +incdir+<include_directory> $file
}
}
# 读取 SDC 文件并转换为 SGDC
set sdc_file "constraints.sdc"
set sgdc_file "constraints.sgdc"
sgdc_compile -sdc $sdc_file -output $sgdc_file
# 读取 SGDC 文件
read_sgdc $sgdc_file
# 启动 SpyGlass Power 项目
spyglass_power -init -project power_project
# 添加设计
add_design <your_top_module>
# 设置时钟
set_clock -name clk -period 10.0 -waveform {0 5}
# 运行纯 RTL 功耗估计
run_power -mode rtl -report_dir ./reports/rtl_power -report_prefix rtl_power
# 如果有 FSDB 波形文件,运行带波形的功耗估计
if {[info exists ::env(FSDB_FILE)]} {
set fsdb_file $::env(FSDB_FILE)
# 读取 FSDB 波形文件
read_fsdb $fsdb_file
# 运行带波形的功耗估计
run_power -mode simulation -report_dir ./reports/simulation_power -report_prefix simulation_power
}
# 生成报告
generate_report -format html -output ./reports/power_report.html
# 结束项目
spyglass_power -end
说明
-
设置工作目录:
- 创建一个工作目录
work
并映射工作库。
- 创建一个工作目录
-
读取文件列表:
- 使用
filelist
文件来读取设计文件。假设rtl_filelist.f
包含所有需要编译的 Verilog 或 SystemVerilog 文件路径。
- 使用
-
读取 SDC 文件并转换为 SGDC:
- 读取 SDC 文件
constraints.sdc
并将其转换为 SGDC 文件constraints.sgdc
。 - 使用
sgdc_compile
命令进行转换。
- 读取 SDC 文件
-
读取 SGDC 文件:
- 使用
read_sgdc
命令读取转换后的 SGDC 文件。
- 使用
-
启动 SpyGlass Power 项目:
- 使用
spyglass_power -init -project power_project
命令启动一个新的 SpyGlass Power 项目。
- 使用
-
添加设计:
- 使用
add_design <your_top_module>
命令添加顶层模块。
- 使用
-
设置时钟:
- 使用
set_clock
命令设置时钟信息。
- 使用
-
运行纯 RTL 功耗估计:
- 使用
run_power -mode rtl
命令运行纯 RTL 功耗估计,并指定报告输出目录和前缀。
- 使用
-
如果有 FSDB 波形文件,运行带波形的功耗估计:
- 检查环境变量
FSDB_FILE
是否存在。 - 如果存在,读取 FSDB 波形文件并运行带波形的功耗估计。
- 检查环境变量
-
生成报告:
- 使用
generate_report
命令生成 HTML 格式的功耗报告。
- 使用
-
结束项目:
- 使用
spyglass_power -end
命令结束项目。
- 使用
环境变量设置
为了方便地传递 FSDB 文件路径,可以在运行脚本之前设置环境变量 FSDB_FILE
。例如:
export FSDB_FILE=path/to/your_waveform.fsdb
spyglass -f your_script.tcl
总结
通过上述脚本,您可以使用 Synopsys SpyGlass 对纯 RTL 代码和带有 FSDB 波形的 RTL 代码进行功耗估计,并支持将 SDC 文件转换为 SGDC 文件。