IODELAY Fehler

Gast #4693846
Lesenswert?

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
Angehängte Dateien:
Gast #4693855
Lesenswert?

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.
Gast #4693859
Lesenswert?

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?
Gast #4693958
Lesenswert?

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
Gast #4694077
Lesenswert?

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
Gast #4694188
Lesenswert?

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
Angehängte Dateien:
Gast #4694418
Lesenswert?

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.
Gast #4694445
Lesenswert?

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
Angehängte Dateien:
Gast #4694739
Lesenswert?

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.
Gast #4695028
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren