【发布时间】:2020-01-07 02:00:18
【问题描述】:
通常我使用 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
...
}
}
}
}
我知道我可以使用hierarchical names in VHDL-2008,但是这样写出每个信号太麻烦了。
有谁知道用纯 VHDL 来做到这一点的方法吗?
【问题讨论】:
标签: tcl vhdl modelsim questasim