PSLアサーションについて興味深い質問があります。これがVHDLモニタープロセスです。これはアサーション専用のプロセスであるため、合成できないプロセスです。input1
このモニターは、現在のFSM状態をチェックし、「 」と「」の2つのレジスターの値を保管します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;
質問は次のとおりです。このモニターをPSL(プロパティ仕様言語)アサーションに変換する方法はありますか?
重要:レジスタ「input1」と「reg136」は、fsm状態がそれぞれ状態s0とs22にある場合にのみ読み取ることができます。それ以外の場合、これらのレジスタに含まれるデータは、アサートされた変数「a」および「t34」に属しません。結果として、PSLステートメントは正しいfsm状態の値を読み取って保存する方法を必要とします。
ありがとうございました !