長さ x の配列があります。特定のテストベンチの信号出力は、0:x-1 からのそれぞれの順序で配列内の各値になります。
特に私の問題では、配列はフィルター係数であり、テストベンチはインパルス応答です。係数はテストごとに変化するため、テストはセルフチェックである必要があります。これには動的な長さのシーケンスが必要です。
私が望むシーケンスは次のようになります。
always @(posedge clk) begin
assert_sequence : assert property (
(data_out == array_1[0])
|=> (data_out == array_1[1])
|=> (data_out == array_1[2])
|=> (data_out == array_1[3])
|=> (data_out == array_1[4])
|=> (data_out == 0) )
$info("Seen the sequence");
else
$error("Sequence was incorrect");
end
これを動的に行うことは可能ですか? genvar for ループを試しましたが、エラーがスローされます。フォーラムを検索しましたが、私の要件を満たすものは見つかりませんでした。
おそらく、このようなものは正しい答えを与えることができますか?
always @(posedge clk) begin
assert_sequence : assert property (
(data_out == array1[0][0])
for(genvar i = 1; i < 5, i++) begin
|=> (data_out == array1[i])
end
|=> (data_out == 0) )
$info("Seen the sequence");
else
$error("Sequence was incorrect");
end