Forum: FPGA, VHDL & Co. verilog sig1 <= #1 sig2 ; was macht #1 bei der synthese


von Martin O. (ossi-2)


Lesenswert?

Ich beschäftige mich momentan damit, den aemb softcore auf
einen xilinx zynq zu portieren (bin FPGA newbie).
Darin kommt der folgende (in der simulation funktionierende)
verilog code vor

   always @(posedge gclk)
     if (grst) begin
  /*AUTORESET*/
  // Beginning of autoreset for uninitialized flops
  rDWBDO <= 32'h0;
  // End of automatics
     end else if (gena) begin
  rDWBDO <= #1 xDWBDO;
     end

Was für eine Auswirkung hat das #1 bei
  rDWBDO <= #1 xDWBDO;
auf die Synthese? In der Simulation bewirkt es, soweit ichs kapiere,
eine Verzögerung um eine Zeiteinheit. Wofür kodiert man so, wenn
gclk selbst (der steuernde Takt) mehrere Zeiteinheiten lang high bzw. 
low ist?

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Die Synthese wird das intra-assignment delay ignorieren.

Für diese Schreibweise kann es verschiedene Gründe geben. Der weitaus 
häufigste und schlechteste Grund ist die Visualisierung von Kausalitäten 
zwischen Signalen im Waveform Viewer. Entsprechendes gilt für VHDL.

von Martin O. (ossi-2)


Lesenswert?

Besten Dank, insbesondere für das Stichwort "intra assignment delay".

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Marcus H. schrieb:
> Entsprechendes gilt für VHDL.
Ja,  mit solchen symbolischen Delays kann man sich sauber was in die 
Tasche lügen. So ein "#1" entsprichtin VHDL in etwa eine "after 10 ns", 
und dann lies mal den 
Beitrag "Functional Simulation mit Modelsim" und 
den darin verlinkten 
Beitrag "Re: Frage zu Pseudozufallsgenerator!?"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.