次の回路図は、モジュールをモデル化したものです。これは、連続した割り当てを使用する必要がある SystemVerilog HW 割り当てです。シグネイチャーモデルを譲っていただきました。回路に遅延がないことに注意してください。私が抱えている問題は、自分が何をしているのかよくわからないことです。SystemVerilog は初めてで、独自のテストベンチを作成する必要があるのはこれが初めてです。 モデルへの回路図
モジュールコードは次のとおりです。
module hw2_prob1 (
input logic A, B, C, D,
output logic Y
);
assign Y = (~(A|D)) & (B & C & ~D);
endmodule
これは、これまでのテストベンチ コードの内容です。
timeunit 1ns/1ns;
module tb_hw2_prob1();
reg A, B, C, D;
wire Y;
hw2_prob1 DUT(A, B, C, D, Y);
initial begin
#5 {A,B,C,D} = 4'b0000;
#5 {A,B,C,D} = 4'b0001;
#5 {A,B,C,D} = 4'b0010;
#5 {A,B,C,D} = 4'b0011;
#5 {A,B,C,D} = 4'b0100;
#5 {A,B,C,D} = 4'b0101;
#5 {A,B,C,D} = 4'b0110;
#5 {A,B,C,D} = 4'b0111;
#5 {A,B,C,D} = 4'b1000;
#5 {A,B,C,D} = 4'b1001;
#5 {A,B,C,D} = 4'b1010;
#5 {A,B,C,D} = 4'b1011;
#5 {A,B,C,D} = 4'b1100;
#5 {A,B,C,D} = 4'b1101;
#5 {A,B,C,D} = 4'b1110;
#5 {A,B,C,D} = 4'b1111;
end
initial begin #500 $finish;
end
initial begin $monitor ($time,"%h %b", {A,B,C,D},Y);
end
endmodule
この割り当てでは、「この回路のテストベンチは、1 つの初期ブロックに $monitor() ステートメントを設定し、入力を変更する間に #5 ns の遅延ですべての可能な入力の組み合わせを生成する必要があります。」シミュレーションには QuestaSim または ModelSim を使用します。これはトランスクリプトとウェーブ ウィンドウです。 tbプロジェクトウィンドウの 切り取り ウェーブウィンドウの切り取り tb
時計を追加する必要がありますか? ポート Y の接続が見つからないと表示されるのはなぜですか? 波形ウィンドウは正しいように見えますか?