Ich behebe einige Probleme des Quellcodes unten. Ich erstelle Orakel, die den Erwartungswert mit dem tatsächlichen Wert vergleichen, den ich bekomme. der erwartete Wert, den ich zu berechnen versuche, ist Variable "e". und der tatsächliche Wert, den ich bekomme, ist Variable 'z'.Verilog Oracle, erwarteter Wert funktioniert nicht richtig
also, Variable 'ok' sollte '1' sein, wenn 'e === z'. Aber es setzt 'ok' nicht auf '1', auch wenn '= z' wahr ist.
Hier ist der Quellcode.
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
Und hier ist Beispielausgabe
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
Wie Sie sehen, es zeigt, dass einige von ihnen gleichen ‚z‘ haben und Werte ‚erwarten‘. Aber 'ok' immer auf '0' gesetzt. Selbst wenn ich es so codiert habe, dass es sich auf 1 setzt, wenn sie gleich sind.
Das ist, was ich nicht weiß. Bitte hilf mir, danke.