Forum: FPGA, VHDL & Co. Anfänger-Frage zu: FPGA Designs entwerfen und testen (vivado)


von TaschenFPGA (Gast)


Lesenswert?

Hallo guten Tag,

habe hier einen IP Core und wollte diesen nach und nach mit einem 
Stimulus versorgen.
Wollte erstmal den Stimulus korrekt synthetisierbar machen.

Habe auf Run Synthesis geklickt

Dort steht jetzt "synth_desing_complete"
Dort steht aber auch place_design ERROR

The design is empty. There are no leaf cells in the design.

Resolution:
Check if opt_design has removed all the leaf cells of your design. Check 
whether you have instantiated and connected all of the top level ports.

Hat das was mit den den Constraints zu tun?

This message can indicate that there are no constraints for the design, 
or it can indicate that the used_in flags are set such that the 
constraints are ignored. This later case is used when running 
synth_design to not write synthesis constraints to the resulting 
checkpoint. Instead, project constraints are read when the synthesized 
design is opened.

Das hier ist der ehrenwerte code:
1
entity design is
2
 Port ( 
3
 clk : in std_logic ;
4
 transceiver : out std_logic_vector(15 downto 0)
5
 );
6
end design;
7
8
architecture Behavioral of design is
9
10
begin
11
12
13
end Behavioral;

von Cle (Gast)


Lesenswert?

Du sagst du willst Stimulus entwerfen aber scheinst es auch 
synthetisieren zu wollen? Das passt nicht zueinander.

Dazu hast du natürlich ein leeres Projekt (keinen Code in der 
architecture), er sagt dir "Achtung, aus irgendeinem Grund gibt es nicht 
in deinem Projekt, vielleicht wurde alles wegoptimiert". Sagt auch deine 
Fehlermeldung "The design is empty. There are no leaf cells in the 
design.". Passiert auch immer mal wenn man In/Output nicht angeschlossen 
hat und das Synthesetool entschieden hat das alles Statisch ist und 
alles wegoptimiert wird. Aber nochmal, willst du synthetisieren? Du 
scheinst erstmal eine Testbench simulieren zu wollen.

von SchattenSeinerSelbst (Gast)


Lesenswert?

Cle schrieb:
> Du sagst du willst Stimulus entwerfen aber scheinst es auch
> synthetisieren zu wollen? Das passt nicht zueinander.

Habe das bestimmt falsch formuliert.
Ein Datengenerator soll ständig Daten erzeugen und an meinem IP Core 
senden.

Cle schrieb:
> assiert auch immer mal wenn man In/Output nicht angeschlossen
> hat und das Synthesetool entschieden hat das alles Statisch ist und
> alles wegoptimiert wird.

ja ok ... hatte gestern auch mal was in der architecture aber das sah 
ähnlich aus. Denke auch, dass das wegoptimiert wird oder so.

Brauche wohl ein besseres Desgin zum Testen.

> Aber nochmal, willst du synthetisieren? Du
> scheinst erstmal eine Testbench simulieren zu wollen.

Stimmt das hast du recht.

 Aber ich muss schauen, dass das ganze synthetisierbar ist.

 Dafür möchte es synthetesiteren lassen:

Vielleicht kann man dann an den Fehlermeldung schon etwas ablesen, ob es 
synthesefähig ist.

Also möchte wirklich wissen wie die komplette Synthese korrekt ablaufen 
würde. Sonst habe ich später nur unsynthetisiertes Zeug drin.

Oder?

....


ah habe gerade mal mehr code synthetisiert und jetzt ging auch run 
implementation :D
wobei ich keine Ahnung habe was das ist :D

von Cle (Gast)


Lesenswert?

SchattenSeinerSelbst schrieb:
> Cle schrieb:
>> Du sagst du willst Stimulus entwerfen aber scheinst es auch
>> synthetisieren zu wollen? Das passt nicht zueinander.
>
> Habe das bestimmt falsch formuliert.
> Ein Datengenerator soll ständig Daten erzeugen und an meinem IP Core
> senden.
Ein Datengenerator in Hardware oder nur zum Simulieren?


>> Aber nochmal, willst du synthetisieren? Du
>> scheinst erstmal eine Testbench simulieren zu wollen.
>
> Stimmt das hast du recht.
>
>  Aber ich muss schauen, dass das ganze synthetisierbar ist.
Du willst ja nur schauen ob dein Design synthetisierbar ist, nicht die 
Testbench. Und bevor du synthetisierst musst du schauen ob dein Design 
in Simulation das richtige macht. Ohne Simulation zusynthetisieren ist 
nicht effektiv zum entwickeln.

>
>  Dafür möchte es synthetesiteren lassen:
>
> Vielleicht kann man dann an den Fehlermeldung schon etwas ablesen, ob es
> synthesefähig ist.
Wenn die Synthese von deinem Design (Design != Testbench) durchläuft 
ohne Fehler ist es synthetisierbar.
>
> Also möchte wirklich wissen wie die komplette Synthese korrekt ablaufen
> würde. Sonst habe ich später nur unsynthetisiertes Zeug drin.
>
> Oder?
Also wenn du noch gar keine Ahnung hast was nicht synthetisierbar ist 
kannst du das natürlich machen, aber lies lieber erstmal etwas dazu 
durch. TrialAndError wird dich sonst eher noch ein paar Wochen kosten.
Dann kann man es zum lernen natürlich ausprobieren.
>
> ....
>
> ah habe gerade mal mehr code synthetisiert und jetzt ging auch run
> implementation :D
> wobei ich keine Ahnung habe was das ist :D
Los, dann mal etwas dazu lesen!

von Polli (Gast)


Lesenswert?

Es ist eigentlich egal, ob der Generator nur zum Simulieren ist oder zum 
echten Testen (BIST) - wenn das wegsynthetisiert wird, ist das meist die 
Folge davon dass die Ausgänge nicht angeschlossen sind. (leaf cells).

von TaschenFPGA (Gast)


Lesenswert?

Cle schrieb:
> Ein Datengenerator in Hardware oder nur zum Simulieren?

Der soll wirklich auf den fpga drauf.

Weil ich damit echte hardware testen möchte.
generator -> verarbeitung -> netzwerkkarte


Cle schrieb:
> Ohne Simulation zusynthetisieren ist
> nicht effektiv zum entwickeln.

stimmt muss das vorher simulieren, ob alles so läuft wie es soll!

Ne dumme Frage noch: wenn der generator dann synthesefähig ist kann er 
ja trotzdem noch in einer testbench getestet werden oder?

Cle schrieb:
> aber lies lieber erstmal etwas dazu
> durch
gute frage. es gibt ein paar anleitungen für synthesefähigen vhdl code.
was empfiehlst du so? xD

Polli schrieb:
> Es ist eigentlich egal, ob der Generator nur zum Simulieren ist oder zum
> echten Testen (BIST) - wenn das wegsynthetisiert wird, ist das meist die
> Folge davon dass die Ausgänge nicht angeschlossen sind. (leaf cells).

von Cle (Gast)


Lesenswert?

TaschenFPGA schrieb:
> Ne dumme Frage noch: wenn der generator dann synthesefähig ist kann er
> ja trotzdem noch in einer testbench getestet werden oder?
Ja, und sollte er auch. Der Generator ist ja später auch "nur eine 
Hardwarefunktion". Die sollte vorher abstrakt getestet werden.

> gute frage. es gibt ein paar anleitungen für synthesefähigen vhdl code.
> was empfiehlst du so? xD
Nicht so flüssig zu lesen, aber die beste Aussagefähigkeit haben die 
Synthese Guides der Hersteller, z.B. Xilinx Vivado Synthesis Guide (z.B. 
Chapter 5):
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_2/ug901-vivado-synthesis.pdf

Sonst ein VHDL Buch deiner Wahl das auf Synthesecode eingeht, hab da 
keine gute Empfehlung.
>
> Polli schrieb:
>> Es ist eigentlich egal, ob der Generator nur zum Simulieren ist oder zum
>> echten Testen (BIST) - wenn das wegsynthetisiert wird, ist das meist die
>> Folge davon dass die Ausgänge nicht angeschlossen sind. (leaf cells).

Stimmt, hierbei ging es ja auch eher um die Fragen zur Synthese.

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


Lesenswert?

SchattenSeinerSelbst schrieb:
> ah habe gerade mal mehr code synthetisiert und jetzt ging auch run
> implementation :D
> wobei ich keine Ahnung habe was das ist :D
Das ist ein Teil deiner Tollchain (= Werkzeugkasten). Du musst die 
Werkzeuge und ihre Funktion kennen, damit du sie richtig anwenden 
kannst:
Editor -> Syntaxcheck -> Synthesizer -> Mapper -> Place&Rout -> Bitgen

> möchte wirklich wissen wie die komplette Synthese korrekt ablaufen
> würde. Sonst habe ich später nur unsynthetisiertes Zeug drin.
Ein echter Geheimtipp: sieh dir den RTL-Schaltplan an. Denn im 
RTL-Schematic zeigt der Synthesizer, was er in deiner VHDL-Beschreibung 
erkannt hat. Du must darin also die Schaltung wiederfinden, die du mit 
deinem VHDL-Code beschrieben hast.

von TaschenFPGA (Gast)


Lesenswert?

Cle schrieb:
> Nicht so flüssig zu lesen, aber die beste Aussagefähigkeit haben die
> Synthese Guides der Hersteller, z.B. Xilinx Vivado Synthesis Guide (z.B.
> Chapter 5):

Stimmt das ist wohl das schlauste! Das werde ich durchgehen und die 
Basics rausholen!
:D

Cle schrieb:
> Buch deiner Wahl das auf Synthesecode eingeht, hab da
> keine gute Empfehlung.

ja habe ein paar Bücher dazu. Muss mir die mal anschauen :D

Cle schrieb:
> Ja, und sollte er auch. Der Generator ist ja später auch "nur eine
> Hardwarefunktion". Die sollte vorher abstrakt getestet werden.

sehr gut!

von TaschenFPGA (Gast)


Lesenswert?

Lothar M. schrieb:
> Ein echter Geheimtipp: sieh dir den RTL-Schaltplan an. Denn im
> RTL-Schematic zeigt der Synthesizer, was er in deiner VHDL-Beschreibung
> erkannt hat. Du must darin also die Schaltung wiederfinden, die du mit
> deinem VHDL-Code beschrieben hast.

Habe ich schon gesehen, dass es da sowas gibt :D
Mir ist momentan nicht klar, wann das korrekt dargestellt wird.
Manche Signale sind zu Ground gezogen:

In Vivado ist die RTL Analyse vor der Synthese.
Warum ist das so?
Kann es sein,dass dann dort ein paar Schaltungen fehlen? Oder in der 
Synthese wegsynthetisiert werden?

Lothar M. schrieb:
> Editor -> Syntaxcheck -> Synthesizer -> Mapper -> Place&Rout -> Bitgen

lese ich mir heute mal ruhig durch in der Anleitung von Vivado.
hier was gerade in meinem kopf ist:

Editor = VHDL Schreiben
Syntaxcheck = VHDL wird gecheckt
synthesizer = macht aus VHDL logik
Mapper = verteilt die logik?
place rout = verteilt sie wirklich
bitgen = damit der FPGA was zum essen hat

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


Lesenswert?

> synthesizer = macht aus VHDL logik
Macht aus deiner schriftlichen Hardwarebeschreibung eine Schaltung. 
Darin taucht dann z.B. ein 7-Bit-Zähler auf.

> Mapper = verteilt die logik?
Der Mapper bildet dann den 7-Bit-Zähler auf 7 Register plus 
Weiterschaltlogik ab.

> place rout = verteilt sie wirklich
Verteilt die Register und die Logik auf die Flipflops und LUTs der 
Logikblöcke im Ziel-FPGA und verdrahtet sie.

> bitgen = damit der FPGA was zum essen hat
Erzeugt die Programmierdatei.

: Bearbeitet durch Moderator
von TaschenFPGA (Gast)


Lesenswert?

Vielen Dank für die Korrektur! :D

Den mapper habe ich auf jeden Fall falsch beschrieben. Der Rest hat 
gepasst.

Muss mir jetzt die Details anschauen.

Dafür checke ich erstmal die Vivado pdfs :D

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.