仅从测试流程(不更改设计)来看,是否有一种快速的方法来断言所有设计信号在复位期间都已初始化?
设计使用同步有效低电平复位。
在复位的上升沿,我想断言设计中的每个信号都不是'U‘,而不必调用每个信号或架构。
使用VHDL2008,Modelsim 10.1c与HDL设计器。
发布于 2014-10-18 01:35:32
您可以调整this answer中Modelsim when命令的使用,以便在同步重置释放后的任何信号中查找'U‘。当它存在时,它可以处理标量和数组,但不能检查记录成员。
请注意,由于您使用的是同步复位,因此复位的上升沿不是复位释放的时间。当reset为高电平时,我会让测试等待时钟的第一个下降沿来测试'U‘。这将确保当它们的驱动程序在重置后更新时,您可以在信号上看到新的状态。when表达式将类似于:
"clk'event and clk = '0' and reset = '1' and $sig = [string repeat U [string length [examine $sig]]]"另一种选择是在测试平台中创建一个标记信号,该信号在释放reset时计算为true,并在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命令取消等待,以避免对设计中的每个信号进行等待的性能影响,因为您只需要在重置后进行此测试。
https://stackoverflow.com/questions/26429757
复制相似问题