我有一个关于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状态上的值的方法。
谢谢您!