2016-06-03 7 views
0

Grundsätzlich habe ich ein System-Verilog-Design, das ich in ein Simulationsframework integrieren muss, das in Verilog enthalten ist. Ich muss also einen Wrapper erstellen, um mit dem DUT zu interagieren, habe aber Probleme, dies zu versuchen.Erstellen eines Verilog-Wrappers für System Verilog-DUT, das eine Schnittstelle enthält

Die Schnittstelle zum Prüfling hat einen Schnittstellenblock sowie andere Ein- und Ausgänge. Die Schnittstelle zum DUT wird unter

interface ifc(input clk, input rst); 
    logic [`DATA_WIDTH-1:0] data; 
    logic     valid; 
    modport in(
     input data, 
     input valid 
    ) 
    modport out(
     output data, 
     output valid 
    ) 
endinterface 

gesehen Das DUT verwendet die Schnittstelle als solche

module DUT(
    ifc.in in0, 
    ifc.in in1, 
    ifc.out out0, 
    ifc.out out1, 

    output error); 

    .... 

endmodule 

I erstellt eine Instanz des Schnittstellenblocks und die entsprechenden Signale an die Schnittstelle zugeordnet und übergeben die Schnittstelle in der Prüfling

module sim(input clk, input rst, 
      input in0, input in1, 
      input ivalid0, input ivalid1, 
      output out0, output out1 
      output ovalid0, output ovalid1); 

    ifc if0(.clk(clk), .rst(rst)); 
    ifc if1(.clk(clk), .rst(rst)); 

    assign if0.data = in0; 
    assign if1.data = in1; 

    assign if0.valid = ivalid0; 
    assign if1.valid = ivalid1; 

    assign out0 = if0.data; 
    assign out1 = if1.data; 

    assign ovalid0 = if0.valid ; 
    assign ovalid1 = if1.valid ; 

    DUT dut(
     .in0(if0.in), 
     .in1(if1.in), 
     .out0(if0.out), 
     .out1(if1.out) 
    ); 
endmodule 

Wenn ich versuche, und simulieren in Modelsim, erhalte ich eine Fehlermeldung, dass diese oder eine andere Nutzung von ‚if0.in‘ nicht mit ‚modport‘ Objekt. In allen Beispielen, die ich gesehen habe, verwenden sie einen SystemVerilog-Wrapper für ein Verilog-DUT, aber ich habe es andersherum nicht gesehen. Ist es sogar möglich, es umgekehrt zu machen? Wie würde ich ein Systemverilog-Modul mit einer Schnittstelle in einem Verilog-Wrapper instanziieren?

Danke für jede Hilfe.

+0

Zeigt die Fehlermeldung auf eine bestimmte Zeile? Dein Code kompiliert sich für mich gut, nachdem er alle deine Tippfehler korrigiert hat (fehlende, s und; s). Vielleicht haben Sie etwas Wichtiges übersehen, als Sie Ihren Code transkribiert haben. –

+0

Es kompiliert gut, aber wenn ich Simulation starte, gibt es mir diese Fehlermeldung. Es zeigt auf die Zeile die .in0 (if0.in) Zeile, wenn ich das DUT instanziiere. – okebz

+0

Tut das nicht für mich. Bitte bearbeite dein Beispiel so, dass es eigenständig und lauffähig ist. –

Antwort

0

Ihre DUT Instanziierung ist falsche Syntax. Wenn Sie ein Modul mit Schnittstellen instanziieren, verbinden Sie einfach die Schnittstelle. Sie enthalten den Modport nicht. Versuchen Sie Folgendes:

DUT dut(
    .in0(if0), 
    .in1(if1), 
    .out0(if0), 
    .out1(if1) 
); 
Verwandte Themen