Tcl 如何在VHDL中检查所有组件层次结构级别的信号值

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

通常,我使用TCL和模拟器命令来确保所有信号在重置期间都初始化为有效值,但我想知道是否有办法在纯VHDL中实现这一点

下面是一个基于TCL的示例。使用
*
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”值或多个驱动程序的类型如何