代码之家  ›  专栏  ›  技术社区  ›  Aurelien Ribon

将VHDL监视器转换为PSL断言

  •  4
  • Aurelien Ribon  · 技术社区  · 15 年前

    我有一个关于PSL断言的有趣问题。这里是一个VHDL监控程序。它是一个专用于断言的过程,因此是一个不可综合的过程。此监视器检查当前FSM状态并存储两个寄存器的值:“ input1 “和” reg136 ". 最后,它触发了一个 assert 语句来比较这些寄存器的值。

    process (clk)
      variable var_a : signed(7 downto 0);
      variable var_b : signed(7 downto 0);
    begin
      if (rising_edge(clk)) then
        case state is
          when s0 =>
            var_a := signed(input1);
          when s22 =>
            var_t34 := signed(reg136);
          when s85 =>
            assert (var_t34 < var_a)
              report "Assertion xxx failed : (t34 < a)";
        end case;
      end if;
    end process;
    

    重要 :仅当fsm状态分别为s0和s22时,才能读取寄存器“input1”和“reg136”。否则,这些寄存器中包含的数据不属于断言变量“a”和“t34”。因此,PSL语句需要一种读取和存储正确fsm状态上的值的方法。

    谢谢您!

    1 回复  |  直到 13 年前
        1
  •  0
  •   Aurelien Ribon    15 年前

    事实上,我想我找到了一个方法用 prev PSL功能。

    总是断言(状态=s85)—>(上一个(reg136,85-22)<上一个(输入1,85-0))@上升沿(clk)