2016-03-24 4 views
0

Wie kann in SystemVerilog festgestellt werden, dass einer der Ausgänge des Moduls direkt mit einem seiner Eingänge verbunden ist?Wie verbinde ich den Ausgang eines Moduls mit seinem Eingang?

Kommt es auf die verwendete Modellierungsebene an? Wenn ja, was ist der richtige Weg für die Switch-Ebene?

module abc (input in1, in2, output out1, out2, out3); 

// out3 needs to be directly connected to in1 
// ... 

endmodule 
+0

ich Ihre übernehmen für einen System-Verilog idiomatischen Weg als die traditionelle Verilog Methode 'zuweisen suchen OUT3 = in1; '? – Morgan

+0

Ja, SystemVerilog ist vorzuziehen. – user3900460

Antwort

2

Es gibt eine Reihe von Möglichkeiten, dies zu tun. Aber nicht alle nachgelagerten Werkzeuge wie synthetische physikalische Werkzeuge können dies unterstützen.

Dies ist so, wie es in SystemVerilog zu tun

module abc (input in1, in2, output out1, out2, out3); 
// out3 needs to be directly connected to in1 
// ... 
alias out3 = in1; 
endmodule 

In Verilog

module abc (input .in1(sig), in2, output out1, out2, .out3(sig)); 
wire sig; 
// out3 needs to be directly connected to in1 
// ... 
endmodule 
+0

OK, aber können Sie sagen, dass entweder "alias" oder "assign" oder die Verbindung beider Ports zu einem internen Netzwerk aus irgendeinem Grund besser ist als die anderen für SystemVerilog (abgesehen von der aktuellen Unterstützung durch Tools)? – user3900460

+1

Wenn Sie eine direkte Verbindung für eine Switch-Level-Netzliste wollen, dann verwenden Sie 'Alias'. Sie verlieren die Stärkeausbreitung durch eine 'assign' Anweisung. Wenn Sie RTL schreiben, wäre ein 'assign' in Ordnung. –