灵敏度列表中的哪个信号触发了该过程

Jun*_*Jun 2 vhdl

在VHDL中,当模拟测试台时,我有一个过程和一个灵敏度列表。是否可以查看灵敏度列表中的哪个信号触发了该过程?我了解这可能取决于工具。我正在使用Xilinx ISE。模拟器会提供此信息吗?

Kev*_*eau 5

可以将'transaction属性与结合使用,'event以确定在当前增量周期中哪些信号已经进行了事务处理:

process(a, b) is
begin
  if a'transaction'event then
    report "Transaction on a";
  end if;

  if b'transaction'event then
    report "Transaction on b";
  end if;
end process;
Run Code Online (Sandbox Code Playgroud)

'transaction属性创建一个新的bit类型的信号,该信号在每个事务上切换。该'event信号上的属性标识何时在父信号上发生了任何事务。

您还可以not <signal name>'quiet(0 ns)用来确定自上一时间步骤以来,敏感度列表中的哪些信号已发生事务:

process(a, b) is
begin
  if not a'quiet(0 ns) then
    report "Transaction on a";
  end if;

  if not b'quiet(0 ns) then
    report "Transaction on b";
  end if;
end process;
Run Code Online (Sandbox Code Playgroud)

如果您不想处理在不同增量周期发生的事件的顺序,则后者可能会更有用。