tags - 有没有办法断言设计中的所有信号在复位期间在上升时钟上初始化?

标签 tags vhdl assert modelsim

仅从测试流程(不更改设计)是否有一种快速方法可以断言所有设计信号在复位期间都已初始化?

设计采用同步低电平有效复位。

在复位的上升沿,我想断言设计中的每个信号都不是“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/

相关文章:

emacs - 为什么 etags 生成损坏的 TAGS 文件?

ios - ShareKit 断言 : "ShareKit has been refactored to be used as Xcode subproject."

javascript - Protractor ,断言错误: expected '24' to be a number or a date

python - 使用 BeautifulSoup 提取标签值

mongodb - 如何查询所有子文档

git:是否有类似每个分支标签的东西?

vhdl - FLI 需要 Cocotb VHDL

vhdl - 关于 FPGA 中的顺序代码

VHDL:如何处理函数返回的无约束数组作为实体端口的输入?

java - java中断言后出现NullPointerException