Hallo, ich bin mal wieder in der Simulationsphase. Das funktioniert auch alles wie es soll, aber sobald ich eine PLL einbaue ist die Simulation irre langsam. Gut, klar ich kann warten, aber ich muss hier duch recht lange simulieren, mehrere ms und das dauert jetzt rund 10 Minuten für 10 ms. Das hat vorher ohne Xilinx PLL nur wenige Sekunden gedauert. Die PLL macht auch nicht viel, nur aus 100MHz einmal 100MHz und zusätzlich 50MHz. Gibt es da einen Trick wie man das schneller macht? Vielen Dank!
Vielleicht einfach die PLL für die Simulation durch einen einfachen Takt ersetzen wenn dir die Frequenz eh bekannt und fest ist. So nach dem Prinzip:
1 | clk_pll <= not clk_pll after 10ns; |
Das könnte ich machen, aber Sinn einer Simulation ist es doch das genau so zu simulieren wie es später auch verwendet wird.
:
Bearbeitet durch User
Ein komplexes System simuliert man eher selten komplett (genau aus dem Grund, es wird extrem langsam), und gerade sowas wie eine PLL lässt sich auch nicht exakt simulieren. Die Frequenz schon, aber Phasenlage zum Eingang, Anschwingverhalten/locked und so Dinge nicht wirklich (und ansonsten kann man die auch so ungefähr nachbilden). Natürlich versucht das die Xilinx PLL Simulation möglichst gut, deshalb wirds wahrscheinlich auch langsam. Die Frage ist, brauchst du das?
Das weiß ich nicht. Später schon, aber für die Simulation kann ich sie rauswerfen.
Gustl B. schrieb: > mehrere ms und das dauert jetzt rund 10 Minuten für 10 ms. Bei mir dauern 10 ms Simulationszeit mit MMCM (iSIM) ca. 5 Minuten - keine Ahnung ob das jetzt am Unterschied MMCM vs. PLL liegt - oder am Rechner. Ansonsten gibt es noch eine Option -nodebug, die reduziert die Simulationslaufzeit tatsächlich auf wenige Sekunden. Compile for HDL Debugging (Advanced) Specifies whether or not to generate output that has debugging information. When set to True (checkbox is selected), debug information is compiled during simulation. When set to False (checkbox is clear), output has no debug information and simulation runs faster. By default, this property is set to True (checkbox is selected).
Wohoooo!!! https://www.xilinx.com/support/answers/64061.html Damit wird es wieder fast so schnell wie vorher:
1 | set_property unifast true [current_fileset simset] |
Gustl B. schrieb: > Wohoooo!!! > > https://www.xilinx.com/support/answers/64061.html > > Damit wird es wieder fast so schnell wie vorher: > set_property unifast true [current_fileset simset] Davon mal abgesehen, lass die PLL wirklich einfach raus. In der Simulation bringt sie dir nicht wirklich was, außer dass dein Rechner mehr nachdenken muss. Generiere die Takte wie 'ich' geschrieben hat. Eine Ausnahme könnte sein, wenn du das Toplevel deines Designs simulieren willst. Dann ist die PLL logischerweise mit drin und wird auch mit simuliert. Normalerweise simuliert man aber nicht unbedingt das Toplevel, sondern eben einzelne Blöcke.
Ich nutze auch ganz gern folgende Konstrukte um die Simulationszeit zu verkürzen:
1 | function simulation_active return std_ulogic is |
2 | variable result : std_ulogic; |
3 | begin
|
4 | result := '0'; |
5 | -- pragma translate_off
|
6 | result := '1'; |
7 | -- pragma translate_on
|
8 | return result; |
9 | end function simulation_active; |
10 | ...
|
11 | synthesis : if simulation_active = '0' generate |
12 | end generate; |
13 | ...
|
14 | simulation : if simulation_active = '1' generate |
15 | end generate; |
oder auch
1 | function counter_max return positive is |
2 | variable result : positive; |
3 | begin
|
4 | result := 5_000_000; |
5 | -- pragma translate_off
|
6 | result := 10; |
7 | -- pragma translate_on
|
8 | return result; |
9 | end function counter_max; |
10 | ...
|
11 | signal counter : integer range 0 to counter_max; |
Wahlweise kann man das ja auch noch mit generics kombinieren. Duke
Das ist sehr hilfreich, wenn es um Dinge geht, die man über Sekunden beoachten will und wo nur alle Nase lang ein Ereignis eintrifft. Da kannst Du nicht einfach die Freuqenz erhöhen, sondern muss auch die Abtastraten im VHLD anpassen, weil sonst nichts mehr stimmt. PLLs simuliere Ich schon lange nicht mehr. Raus und gegen was Einfaches ersetzen.
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.