Hallo Leute, ich habe ein Problem. Und zwar bekomme ich bei der Implementierung im Vivado den Fehler, den ich im Bild angehängt habe. Ich habe leider keinen Plan wie ich das beheben soll. Ich habe gelesen das ich die Sweep Phase ausschalten kann. Aber ich weiss nicht wie das funktioniert. Könnt ihr mir erklären was dieser Fehler bedeutet? Ich benutzt IP's die mir nur als Black Box bekannt sind. Danke Grüsse Max
Steht ja alles ganz genau da. Das IODELAY alleine geht nicht, da muss immer ein IDELAYCTL dazu. Das musst du einfach noch mit instanziieren und dann ist gut.
Christian R. schrieb: > Steht ja alles ganz genau da. Das IODELAY alleine geht nicht, da > muss > immer ein IDELAYCTL dazu. Das musst du einfach noch mit instanziieren > und dann ist gut. Ok aber wo finde ich denn dieses IODELAY? Ich benutze im Block Designer eigentlich nur 2 IP's. Auf den HDL Code von diesen IP's kann ich nicht zugreifen. Ich habe lediglich einen Wrapper rumdum gebastelt.
Ich habe jetzt folgendes im README des IP's gefunden: The design will require the instantiation of a XILINX IDELAYCTRL module clocked at 200 Mhz. Xilinx recommends using the IODELAY_GROUP attribute to associate IDELAYs with a particular IDELAYCTRL The IODELAY_GROUP string for the Rx D-PHY is "MIPI_IDLYCTRL"; Refer to Xilinx Constraints Guide (UG625) for details. The IDELAYCTRL instance is not part of the IP. Its instantiation will look something like this: (* IODELAY_GROUP = "MIPI_IDLYCTRL" *) // Specifies group name for associated IODELAYs and IDELAYCTRL IDELAYCTRL #(.SIM_DEVICE("ULTRASCALE")) idelayctrl_1 (.REFCLK(your_200mhz_clk), .RDY(idelayctl_rdy), .RST(~reset_n)); Ich schätze ich muss die Instanzierung im Constraints file vornehmen? Kann mir jemand sagen wie das funktioniert?
Ok ich habe jetzt herausgefunden, dass eine IDELACTRL Instatntiierung in VHDL folgendermaßen aussieht:
1 | IDELAYCTRL_inst : IDELAYCTRL |
2 | generic map ( |
3 | SIM_DEVICE => "7SERIES" -- Set the device version (7SERIES, ULTRASCALE) |
4 | )
|
5 | port map ( |
6 | RDY => RDY, -- 1-bit output: Ready output |
7 | REFCLK => REFCLK, -- 1-bit input: Reference clock input |
8 | RST => RST -- 1-bit input: Active high reset input. Asynchronous assert, synchronous deassert to |
9 | -- REFCLK.
|
10 | );
|
Soll ich das jetzt einfach auf TOP ebene so instanziieren? Das Beispiel in der README ist anscheinend ein Verilog Ausschnitt. Jetzt weiß ich aber nicht was ich mit dem RDY Anschluss machen soll? Und was hat es mit diesem (* IODELAY_GROUP = "MIPI_IDLYCTRL" *) Befehl auf sich? Wie schreibe ich das in VHDL? Danke im Vorraus Gruß Max
Ja, das musst du irgendwo hin packen, wo es für dich am übersichtlichsten ist. Wenn du im ganzen Design nur den einen einzigen IDELAYCNTL hast, brauchst du die Gruppe nicht anzugeben. Falls du mehrere hast, geht das dann im Normalfall über die Constraints, also im XDC File.
Hallo Christian R. Danke für deine Hilfe. Ich habe jetzt eine Instanz im Blockdesigner angelegt. den RDY PIN hab ich jetzt einfach offen gelassen. Der Error bei der Implementierung ist jetzt verschwunden. Leider bekomme ich jetzt stattdessen haufen Timing Verletzungen. D.h. ich habe etwas falsch gemacht oder etwas noch nicht gemacht. Ich weiss nicht wieviele IDELAYCTRL im design sind. Ich habe nur eine erstellt. Vielleicht muss ich doch diesen Gruppennamen, wie er im README steht definieren: (* IODELAY_GROUP = "MIPI_IDLYCTRL" *) Nur wie mache ich das? Im VHDL? Im Constraint(XDC file) ?? Ich wäre dir oder jemandem anderen sehr dankbar wenn ihr mir helfen könnt. Gruss Max
Die Infos sind mal echt spärlich. Poste doch mal die Fehlermeldung. Hängen die direkt mit dem iodelay zusammen oder fängt das Tool jetzt erst an dir neue Baustellen zu zeigen?
Klakx schrieb: > Die Infos sind mal echt spärlich. Poste doch mal die > Fehlermeldung. > Hängen die direkt mit dem iodelay zusammen oder fängt das Tool jetzt > erst an dir neue Baustellen zu zeigen? Die Fehlermeldung die ich oben gepostet habe bekomme ich nicht mehr weil ich diese IDELAYCTRL instanz angelegt habe. Dafür aber viele Timing Verletzungen. Ok hier nochmal eine Zusammenfassung. Ich arbeite mit dem Vivado 2015.4 mit dem Block Designer. Ich benutze einen IP Core dem ich von außen über einen clocking wizard clocks zur verfügung stelle. Wenn ich die Implementierung starte bekomme ich die Fehlermeldung von dem ersten Post. Da steht das ich eine IDELAYCTRL Instanz brauche. Wie sowas aussieht steht in der Readme Datei von dem IP in Verilog. Dann hab ich im Block Designer auch so einen IDELAYCTRL gefunden. Diesen habe ich wie in dem angehängtem Bild angeschlossen. Nach erneuten Implementierung ist der Fehler (von oben) verschwunden und es läuft durch. Das Problem ist aber das ich viele Timing Verletzungen bekomme. Gruss Max
Max schrieb: > Die Fehlermeldung die ich oben gepostet habe bekomme ich nicht mehr weil > ich diese IDELAYCTRL instanz angelegt habe. Dafür aber viele Timing > Verletzungen. Eben, das sind auch Fehler! Und die sollte man sich anschauen bzw. wenn du Hilfe willst, dann schreib die uns hier hin. Das IDELAYCTRL ist eine simple Komponente. An der wird es wahrscheinlich nicht mehr liegen.
Klakx schrieb: > Max schrieb: >> Die Fehlermeldung die ich oben gepostet habe bekomme ich nicht mehr weil >> ich diese IDELAYCTRL instanz angelegt habe. Dafür aber viele Timing >> Verletzungen. > > Eben, das sind auch Fehler! > Und die sollte man sich anschauen bzw. wenn du Hilfe willst, dann > schreib die uns hier hin. > > Das IDELAYCTRL ist eine simple Komponente. An der wird es wahrscheinlich > nicht mehr liegen. Ok verstehe, ich hatte gedacht das diese schon etwas mit dem IDELAYCTRL zu tun haben. ich hab euch 1 Bild zur Timing Summery angehängt. Es sieht so aus als ob es zu Verletzungen im IP selber kommt. Das sollte aber nicht so sein denn der IP sollte funktionieren. Evtl bekommt er von mir nicht die richten Clocks? mfg Max
Max schrieb: > > (* IODELAY_GROUP = "MIPI_IDLYCTRL" *) > Das definert ein Attribute für die darauf folgende Komponente, in deinem Fall "idelayctrl_1" > Nur wie mache ich das? Im VHDL? Im Constraint(XDC file) ?? > In VHDL macht man das mit User defined Attributes, für die genaue Syntax suche einfach danach, oder jemand der in VHDL fit ist postet es hier.
Der Timing Report zeigt Fehler zwischen zwei Taktdomänen basierend auf zwei Plls bzw DCMs. Nun ist die Frage ob du die Übergänge synchronisiert hast. Vllt fehlt auch ein asynchrones FIFO. Kann ich nicht sagen, da ich dein Design nicht kenne. Wie aber vermutet ist das eine andere Baustelle und hat mit IDELAYCTRL wahrscheinlich nichts zu tun.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.