仅从测试流程(不更改设计)是否有一种快速方法可以断言所有设计信号在复位期间都已初始化?
设计采用同步低电平有效复位。
在复位的上升沿,我想断言设计中的每个信号都不是“U”,而不必调用每个信号或架构。
使用 VHDL 2008、Modelsim 10.1c 和 HDL Designer。
最佳答案
您可以调整 Modelsim when
命令的使用 this answer同步复位释放后,在任何信号中查找“U”。因为它存在,所以它可以使用标量和数组,但不能检查记录成员。
请注意,由于您使用的是同步复位,所以复位的上升沿并不是复位释放的时间。当复位为高电平时,我会让测试等待时钟的第一个下降沿来测试“U”。这将确保您在重置后更新驱动程序时看到信号的新状态。 When 表达式类似于:
"clk'event and clk = '0' and reset = '1' and $sig = [string repeat U [string length [examine $sig]]]"
另一种选择是在测试台中创建一个哨兵信号,当重置被释放时,该信号的计算结果为真,并在when表达式中测试该信号:
signal reset_inactive : boolean;
process(clk) is
begin
if rising_edge(clk) then
if reset = '1' then
reset_inactive <= true;
else
reset_inactive <= false;
end if;
end if;
end process;
...
When expression:
"reset_inactive'event and reset_inactive = true and $sig = ..."
完成后,最好使用 nowait 命令取消等待,以避免设计中的每个信号都等待而影响性能,因为您只需要在复位后进行此测试。
关于tags - 有没有办法断言设计中的所有信号在复位期间在上升时钟上初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26429757/