Wenn man z.B. einen Block (z.B. Zähler) designed, und dessen Ausgangssignale nicht benutzt, wird normalerweise der Block nicht synthetisiert. Das ist auch sinnvoll. Ich habe aber oft am Anfang von Projekten die Teile, die die Ausgangssignale benutzen werden, noch nicht beschrieben. Gibt es (z.B. sozusagen mit "dummy"-Signalen) eine einfache Möglichkeit, die Synthese eines Blockes zu erzwingen?
Du kannst einen Logic Analyzer IP-Core einfügen und die Ausgänge Deines Moduls an die Eingänge des ILA anschliessen. So wird die Synthese den Block nicht wegoptimieren und Du kannst Dir die Werte anschauen.
Martin O. schrieb: > die Synthese eines Blockes zu erzwingen? Es hilft nichts, wenn der Synthesizer den Block drin lässt. Einer der nächsten Schritte wirft ihn sicher raus... Du musst also irgendwas an diesen Block anschließen, das auch tatsächlich irgendwie aussen verwendet wird. Der LA ist eine solche Einheit. Du könntest diese Signale aber auch einfach alle verxodern und auf das einen Pin herausführen. Dann werden sie auch verwendet.
Martin O. schrieb: > Wenn man z.B. einen Block (z.B. Zähler) designed, und dessen > Ausgangssignale nicht benutzt, wird normalerweise der Block nicht > synthetisiert. Das ist auch sinnvoll. Ich habe aber oft am Anfang von > Projekten die Teile, die die Ausgangssignale benutzen werden, noch nicht > beschrieben. > > Gibt es (z.B. sozusagen mit "dummy"-Signalen) eine einfache Möglichkeit, > die Synthese eines Blockes zu erzwingen? ich versteh das Problem nicht, normalerweise werden Componenten also Blöcke beim ersten auftreten vom Synthesetool analysiert und übersetzt unabhängig davon ob der Blockj in der Top entity (die später analysiert wird) genutzt wird. Wird der block nicht vewrwendet wird er bei der dead logic/unused blocks Analyse wieder weggeschmissen, aber Infos zur Synthese sollten sich schon in den log-files winden lassen. Vielleicht musst du nur die Komponenten in eigenes *.vhd file schieben und im Makefile/Toolchain das file explizit angeben. oder alle unbenutzten Signale zweimal über FF dann verordern und anschliessend an irgend ein Pin nach draußen führen.
Vielleicht sowas wie
1 | (* KEEP = "TRUE" *) reg [10:0] state_reg; |
in Verilog (nicht-Xilinx oder VHDL dann ähnlich, siehe Syntheseguide des Tools)? Mit mark_debug (bei Xilinx) kann man dann den Debugging IP Core im synthetisierten Design einfügen, aber das macht auch nur etwas um ein KEEP herum..
Du kannst den Block as Toplevel definieren, dann baut er das auch. Ist ok um eine Abschätzung zum Timing oder Größe zu bekommen.
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.