仅从测试仪流程(无需更改设计)是否有快速断言所有设计信号在复位期间初始化的方法?
设计使用同步有源低电平复位。
在复位的上升沿,我想断言设计中的每个信号都不是' U'无需呼出每个信号或架构。
使用VHDL 2008,Modelsim 10.1c和HDL Designer。
答案 0 :(得分:2)
您可以调整this answer中的Modelsim when
命令的使用,以便在释放同步重置后在任何信号中查找“U”。因为它存在,它与标量和数组一起使用,但不能检查记录成员。
请注意,复位的上升沿不是自使用同步复位后复位释放的时间。当复位为高时,我会让测试等待时钟的第一个下降沿,以测试'U'。这将确保在重置后驱动程序更新时,您会看到信号的新状态。 when表达式类似于:
"clk'event and clk = '0' and reset = '1' and $sig = [string repeat U [string length [examine $sig]]]"
另一个选择是在testbench中创建一个sentinel信号,当发布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
命令取消等待,以避免因设计中的每个信号等待而导致性能下降,因为重置后只需要进行此测试。