2016-04-26 12 views
1

An alle, Ich bin neu in VHDL. Ich habe ein funktionierendes Design, aber meine Simulation läuft immer weiter, bis ich die Simulation abbringe. Wie unterbreche ich im Prüfstand die Simulation nach x Taktzyklen? Ist das im Uhrprozess gemacht?So führen Sie die Simulation für eine bestimmte Anzahl von Taktzyklen durch

clk_process :process 
    begin 
    clk <= '0'; 
    wait for clk_period/2; 
    clk <= '1'; 
    wait for clk_period/2; 
end process; 

Bitte und Danke!

Antwort

0

In VHDL-2008:

if now >= clk_period * x then 
    std.env.stop; 
end if; 

In früheren Versionen (funktioniert noch im Jahr 2008 aber!):

assert now < clk_period * x report 
    "Stopping simulation : this is not a failure!" severity failure; 

Diese letztere Neugier (missbrauchen zu einer Assertion) tatsächlich in Janick Bergeron Buch empfohlen "Testbenches schreiben"!

Die Uhr Prozess ist so gut ein Ort wie jeder für sie, aber ein separater Prozess (wahrscheinlich empfindlich auf Uhr) für die Simulation Kontrolle kann marginal sauberer Design sein.

+0

Ich möchte Simulation nach 1000 Taktzyklen stoppen. Könnten Sie mir bitte zeigen, wie Sie den VHDL-2008-Code in den Clock-Prozess integrieren würden? ist das einfach wenn clk> = clk_period * 1000 dann std.env.stop; Ende wenn; – Craig3832

+0

habe ich schon getan. Setzen Sie X einfach auf 1000. Beachten Sie, dass Ihr Kommentar nicht funktioniert, weil 'clk' nicht vom Typ' time' ist. –