Zum Beispiel: IOs A und B sind verbunden, haben eine Verzögerung von 10ns io-to-io zwischen ihnen. Die IOs laufen mit 500 MHz (2 ns).So modellieren Sie die bidirektionale Transportverzögerung
Standardmäßig verwendet Verilog die Trägheitsverzögerung, die als Filter fungiert. Daher wird das Definieren der Verbindungsleitung als wire #(10ns) io;
nicht funktionieren, da die Daten herausgefiltert werden.
wire #(10ns) io;
assign io = io_a_en ? a_data_500MHz : 'z;
assign io = io_b_en ? b_data_500MHz : 'z;
Transportverzögerung ist unidirektional. Wenn Sie für jede Richtung auf einer IO einen erstellen, werden mehrere Treiber und eine Rückkopplungsschleife verursacht.
always @(a) b_reg <= #(10ns) a;
always @(b) a_reg <= #(10ns) b;
assign a = b_reg; // feedback b_reg = b = a_reg = a ... and multi-driver
assign b = a_reg; // feedback a_reg = a = b_reg = b ... and multi-driver
assign a = io_a_en ? a_data_500MHz : 'z;
assign b = io_b_en ? b_data_500MHz : 'z;
Wie sollte eine bidirektionale Transportverzögerung modelliert werden?