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:
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.
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
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!
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).
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).
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.
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.
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!
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
> 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.
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