2016-04-11 11 views
0

Während meine Füße nass mit einem alten Spartan2 Board bekomme ich Setup versucht, einen 1-Bit-Volladdierers mit dem Verilog-Code und den begleitenden Prüfstand wie folgt:ModelSim SE 5.7: unerwartete ‚Z‘ und ‚X‘

module full_adder(s, cout, a, b, cin); 
output s, cout; 
input a, b, cin; 

wire t1, t2, t3; 

xor (t1, a, b); 
xor (s, t1, cin); 
and (t2, t1, cin); 
and (t3, a, b); 
or (cout, t2, t3); 
endmodule 

Prüfstand:

module tb_full_adder; 

// Inputs 
reg a; 
reg b; 
reg cin; 

// Outputs 
wire s; 
wire cout; 

// Instantiate the Unit Under Test (UUT) 
full_adder uut (
    .s(s), 
    .cout(cout), 
    .a(a), 
    .b(b), 
    .cin(cin) 
); 

initial begin 
    // Initialize Inputs 
    a = 0; 
    b = 0; 
    cin = 0; 

    // Wait 100 ns for global reset to finish 
    #100; 

    //125 ns 
    #25; a = 1'b1; 
    //150 ns 
    #25; a = 1'b0; b = 1'b1; 
    //175 ns 
    #25; b = 1'b0; cin = 1'b1; 

end  
endmodule 

ich hatte ISE 10.1 und ModelSim SE 5.7 zu verwenden, da die neueren Versionen der ISE nicht eine der Spartan-Geräte mehr, IIUC (geschweige denn Vivado) unterstützen. Das Problem ist, dass das 'Wave-Fenster' von ModelSim zeigt alle Signale entweder als hallo-Z oder do not care 'X':

ModelSim SE 5.7 trace window

Wenn ich Setup genau das gleiche Projekt in ISE 14,7, auch der Code kompiliert und die Simulation, es ist in diesem Fall der jüngere isim, zeigt die erwarteten Spuren:

ISim (ISE 14.7)

Was ist der Unterschied zwischen ModelSim und isim neben seinem Alter? Was fehlt mir?

besten, Chris

Antwort

1

Es gibt nichts zwischen Modelsim und isim in dieser Hinsicht unterscheidet. Mit Modelsim haben Sie Ihre Testbench nicht simuliert. Ich kann das sagen, weil die Signalnamen in der Wellenformanzeige alle /full_adder/ statt /tb_full_adder/uut/ starten. Ich habe versucht, eine ähnliche Wellenform zu Ihrer ISim-Wellenform in Modelsim zu bekommen, indem ich auch die Testbench simuliere, dh indem ich vsim tb_full_adder in das Transkriptfenster tippe.

+0

Spot auf. Ich hatte versehentlich das Top-Level-Modul geklickt, um es in ModelSim zu öffnen, aber nicht die Test-Fixture-Datei. Das liegt daran, dass ich im "Processes" -Fenster ModelSim entweder mit "tb_full_adder.v" oder "full_adder.v" ausführen könnte, also dachte ich, dass es die Wellenformen automatisch anzeigen würde. – user2286339