首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以断言设计中的所有信号都是在复位期间的上升时钟上初始化的?

是否有一种方法可以断言设计中的所有信号都是在复位期间的上升时钟上初始化的?
EN

Stack Overflow用户
提问于 2014-10-18 00:46:59
回答 1查看 225关注 0票数 2

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

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

在复位的上升沿,我想断言设计中的每个信号都不是'U‘,而不必调用每个信号或架构。

使用VHDL2008,Modelsim 10.1c与HDL设计器。

EN

回答 1

Stack Overflow用户

发布于 2014-10-18 01:35:32

您可以调整this answer中Modelsim when命令的使用,以便在同步重置释放后的任何信号中查找'U‘。当它存在时,它可以处理标量和数组,但不能检查记录成员。

请注意,由于您使用的是同步复位,因此复位的上升沿不是复位释放的时间。当reset为高电平时,我会让测试等待时钟的第一个下降沿来测试'U‘。这将确保当它们的驱动程序在重置后更新时,您可以在信号上看到新的状态。when表达式将类似于:

代码语言:javascript
复制
"clk'event and clk = '0' and reset = '1' and $sig = [string repeat U [string length [examine $sig]]]"

另一种选择是在测试平台中创建一个标记信号,该信号在释放reset时计算为true,并在when表达式中测试该信号:

代码语言:javascript
复制
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命令取消等待,以避免对设计中的每个信号进行等待的性能影响,因为您只需要在重置后进行此测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26429757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档