我想做什么:
我想将当前日期和时间传递给VHDL测试平台,以便创建更好的报告文件名。
问题:
从我的模拟TCL脚本调用的顶级VHDL文件是一个配置,我不知道如何将泛型传递给它。 TCL脚本的相关部分如下:
set reportfilename "report_$testcase_id"
append reportfilename [clock format [clock seconds] -format _%Y-%m-%d_%H:%M]
vsim -t 10fs -gG_TC_REPORTFILE=$reportfilename -novopt work.CFG_TB_TOP_tc0027 - wlf result_$testcase_id.wlf
生成的VSIM调用如下所示:
# vsim -t 10fs -wlf result_tc0027.wlf -novopt -gG_TC_REPORTFILE=report_tc0027_2014-03-05_13:22 work.CFG_TB_TOP_tc0027
问题是G_TC_REPORTFILE不是CFG_TB_TOP_tc0027.vhd的通用名称,而是CFG_TB_TOP_tc0027.vhd中配置的其中一个模块
CFG_TB_TOP_tc0027.vhd的相关部分:
configuration CFG_TB_TOP_tc0027 of TB_TOP_CFG is
for testcaseexecution
for TB_TOP_E_INST : TB_TOP_E
-------------------------------------------------------------
-- Testbench configuration
-------------------------------------------------------------
use entity work.TB_TOP_E(TB_TOP_sim)
generic map (
G_TC_STIMULUSFILE => "./testcases/tc0027.txt", --
G_TC_REPORTFILE => "./results/report_tc0027.txt",
G_TB_VNR => "V_03.10",
G_TC_NR => 27); --
for TB_TOP_A_sim
如何将TCL文件中的值传递给TB_TOP_E实体的通用G_TC_REPORTFILE?我可以以某种方式向CFG文件添加泛型,或者我可以以某种方式指定TCL文件中的泛型是指哪个实体?如果我不必编辑vhdl文件,只编辑TCL脚本,那么最佳情况就是如此。
模拟器是ModelSim SE 10.0b,我使用的是VHDL 2008。
答案 0 :(得分:2)
我自己刚刚找到了答案:
您确实可以指定要覆盖的通用的路径。我改变了TCL文件:
set reportfilename "./results/report_$testcase_id"
append reportfilename [clock format [clock seconds] -format _%Y-%m-%d_%H-%M.txt]
vsim -t 10fs -GTB_TOP_CFG/TB_TOP_E_INST/G_TC_REPORTFILE=$reportfilename -novopt work.CFG_TB_TOP_tc0027 -wlf result_$testcase_id.wlf
产生以下VSIM呼叫:
# vsim -t 10fs -wlf result_tc0027.wlf -novopt -GTB_TOP_CFG/TB_TOP_E_INST/G_TC_REPORTFILE=./results/report_tc0027_2014-03-05_14-06.txt work.CFG_TB_TOP_tc0027
除了添加路径TB_TOP_CFG/TP_TOP_E_INST/
之外,我还必须从时间戳中删除:
,因为modelsim / vhdl没有处理它。