通常,我使用 TCL 和模拟器命令执行此操作,以确保在复位期间所有信号都初始化为有效值,但我想知道是否有办法在纯 VHDL 中完成此操作。
这是一个基于 TCL 的示例。使用起来非常方便,*
并与模拟器命令foreach
一起循环捕获所有信号名称。每当我想检查所有信号是否有效时,我都会find
调用该过程。check_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-2008 中使用分层名称,但是以这种方式写出每个信号太麻烦了。
有谁知道用纯VHDL做到这一点的方法?