Simulation mit PLL beschleunigen (iSIM)

#5313889
Lesenswert?

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

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?
#5313958
Lesenswert?

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

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

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

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.

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