如何使用Tcl语言控制仿真

如何使用Tcl语言控制仿真,tcl,Tcl,我想用tcl来控制模拟迭代。 在每次迭代中,我都会得到一些随机值,并保存结果 set set_of_double_values{0} foreach y_val $set_of_double_values { set_parameter Snr $y_val ; set numsim 2; set_value/$env(sim_name)/numsim $numsim; for {set i 0} {$i < $numsim} {incr i 1} { some random value

我想用tcl来控制模拟迭代。 在每次迭代中,我都会得到一些随机值,并保存结果

set set_of_double_values{0}
foreach y_val $set_of_double_values {
set_parameter Snr $y_val ;

set numsim 2;
set_value/$env(sim_name)/numsim $numsim;
for {set i 0} {$i < $numsim} {incr i 1} {
some random value
}
run_iteration;
}
run_iteration
设置双值的集合{0}
foreach y_val$双值集合{
设置参数Snr$y\u val;
设置numsim2;
设置值/$env(sim_名称)/numsim$numsim;
对于{set i 0}{$i<$numsim}{incr i 1}{
一些随机值
}
运行迭代;
}
运行迭代

使用此代码,我总是多次运行内部部分,并且无法保存正确的结果…

您给出的代码将在第一行出现错误,并带有“无法读取”set_of_double_values{0}:无此类变量假设您实际将其设置为一个具有一个值的列表,那么您将在foreach主体上循环一次,因为它只有一个值。然后,您有一个set_参数过程,您没有提供定义,其他位看起来根本不像tcl(set_value/$env(sim_name)/numsim——这将是一个名为“set_value/xxxx/numsim”的过程其中xxx是sim_name环境变量中的任何内容。我建议您发布一个工作片段。@patthoyts,
set_value/…
东西在构建在Tcl之上的一个模拟器中很普遍;我以前见过它。(但不记得是哪个模拟器,因为有不同的负载。)它是基于concentric system studio的,有一些来自concentric system studio的推荐,并且模拟控制文件(.scf)是用TCL编写的。