以下のソースコードの問題を修正しています。 私は期待値と実際に値を比較するoracleを作成しています。 私が計算しようとする期待値は変数 'e'です。 実際の値は変数 'z'です。Verilog Oracle、期待値が正しく動作しない
変数 'ok'は 'e === z'のとき '1'にする必要があります。しかし、それは 'ok'を '1'に設定していません。
ここはソースコードです。
module lab9;
reg [31:0] d;
reg clk, enable, flag;
wire [31:0] z;
reg [31:0] e,ok;
register #(32) mine(z, d, clk, enable);
always begin
#1 clk = ~clk;
end
initial
$monitor("%5d: clk=%b,d=%d,z=%d,expect=%d, ok=%d", $time,clk,d,z, e, ok);
initial begin
clk=0;
flag = $value$plusargs("enable=%b", enable);
repeat (20) begin
#2 d = $random;
e=d;
if(e === z)
ok = 1;
else
ok = 0;
end
$finish;
end
endmodule
そして、ここではサンプル出力
0: clk=0,d= x,z= x,expect= x, ok= x
1: clk=1,d= x,z= x,expect= x, ok= x
2: clk=0,d= 303379748,z= x,expect= 303379748, ok= 0
3: clk=1,d= 303379748,z= 303379748,expect= 303379748, ok= 0
4: clk=0,d=3230228097,z= 303379748,expect=3230228097, ok= 0
5: clk=1,d=3230228097,z=3230228097,expect=3230228097, ok= 0
6: clk=0,d=2223298057,z=3230228097,expect=2223298057, ok= 0
7: clk=1,d=2223298057,z=2223298057,expect=2223298057, ok= 0
8: clk=0,d=2985317987,z=2223298057,expect=2985317987, ok= 0
9: clk=1,d=2985317987,z=2985317987,expect=2985317987, ok= 0
10: clk=0,d= 112818957,z=2985317987,expect= 112818957, ok= 0
11: clk=1,d= 112818957,z= 112818957,expect= 112818957, ok= 0
12: clk=0,d=1189058957,z= 112818957,expect=1189058957, ok= 0
13: clk=1,d=1189058957,z=1189058957,expect=1189058957, ok= 0
14: clk=0,d=2999092325,z=1189058957,expect=2999092325, ok= 0
15: clk=1,d=2999092325,z=2999092325,expect=2999092325, ok= 0
16: clk=0,d=2302104082,z=2999092325,expect=2302104082, ok= 0
17: clk=1,d=2302104082,z=2302104082,expect=2302104082, ok= 0
18: clk=0,d= 15983361,z=2302104082,expect= 15983361, ok= 0
19: clk=1,d= 15983361,z= 15983361,expect= 15983361, ok= 0
20: clk=0,d= 114806029,z= 15983361,expect= 114806029, ok= 0
ご覧のとおり、それはそれらのいくつかは、同じ「Z」を持っていると値を「期待する」ことを示しています。しかし 'ok'は常に '0'に設定されています。私が同じであっても1を設定するようにそれをコーディングしました。
これはわかりません。助けてください、ありがとう。