Tcl 如何在VHDL中检查所有组件层次结构级别的信号值
通常,我使用TCL和模拟器命令来确保所有信号在重置期间都初始化为有效值,但我想知道是否有办法在纯VHDL中实现这一点 下面是一个基于TCL的示例。使用Tcl 如何在VHDL中检查所有组件层次结构级别的信号值,tcl,vhdl,modelsim,questasim,Tcl,Vhdl,Modelsim,Questasim,通常,我使用TCL和模拟器命令来确保所有信号在重置期间都初始化为有效值,但我想知道是否有办法在纯VHDL中实现这一点 下面是一个基于TCL的示例。使用*和foreach循环以及findsimulator命令捕获所有信号名称非常方便。只要我想检查所有信号是否有效,我就调用check\u sigs过程 # List of all signals to inspect set sig_list { /tb/POR /tb/GSM/POR_SD_0/* /tb/GSM/* /tb/GSM
*
和foreach
循环以及find
simulator命令捕获所有信号名称非常方便。只要我想检查所有信号是否有效,我就调用check\u sigs
过程
# List of all signals to inspect
set sig_list {
/tb/POR
/tb/GSM/POR_SD_0/*
/tb/GSM/*
/tb/GSM/CLOCK_Condition/*
/tb/GSM/HB_Timer_Local/*
/tb/GSM/HB_Timer_Remote/*
/tb/GSM/HB_Monitor_Local/*
/tb/GSM/HB_Monitor_Remote/*
}
proc check_sigs {} {
foreach sig_set $::sig_list {
foreach sig [find sig $sig_set] {
if {[exa -decimal $sig] == "X" || [exa -decimal $sig] == "U"} {
...
report error here, etc
...
}
}
}
}
我知道我可以用,但那样写每个信号太麻烦了
有人知道用纯VHDL实现这一点的方法吗?层次名称是访问内部信号的唯一方法。并且没有通配符,所以您需要手动获取每个通配符。 也许你可以在每个有重置的块里面放一个断言?或者使用不允许“X”或“U”值或多个驱动程序的类型如何