【问题标题】:How to check values of signals at all component hierarchy levels in VHDL如何在 VHDL 中检查所有组件层次结构级别的信号值
【发布时间】:2020-01-07 02:00:18
【问题描述】:

通常我使用 TCL 和模拟器命令执行此操作,以确保在复位期间所有信号都初始化为有效值,但我想知道是否有办法在纯 VHDL 中完成此操作。

这是一个基于 TCL 的示例。使用*foreach 循环以及find 模拟器命令来捕获所有信号名称非常方便。每当我想检查所有信号是否有效时,我都会调用check_sigs 过程。

# List of all signals to inspect
set sig_list {
  /tb/POR
  /tb/GSM/POR_SD_0/*
  /tb/GSM/*
  /tb/GSM/CLOCK_Condition/*
  /tb/GSM/HB_Timer_Local/*
  /tb/GSM/HB_Timer_Remote/*
  /tb/GSM/HB_Monitor_Local/*
  /tb/GSM/HB_Monitor_Remote/*
}

proc check_sigs {} {
  foreach sig_set $::sig_list {
    foreach sig [find sig $sig_set] {
      if {[exa -decimal $sig] == "X" || [exa -decimal $sig] == "U"} {
        ...
        report error here, etc
        ...
      }
    }
  }
}

我知道我可以使用hierarchical names in VHDL-2008,但是这样写出每个信号太麻烦了。

有谁知道用纯 VHDL 来做到这一点的方法吗?

【问题讨论】:

    标签: tcl vhdl modelsim questasim


    【解决方案1】:

    分层名称是访问内部信号的唯一方法。而且没有通配符,所以你需要手动抓取每一个。 也许你可以在每个有重置的块内放置一个断言?或者如何使用不允许“X”或“U”值或多个驱动程序的类型?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 2021-09-30
      • 2022-12-23
      • 1970-01-01
      • 2013-10-28
      • 2015-06-25
      • 1970-01-01
      相关资源
      最近更新 更多