Forum: FPGA, VHDL & Co. Zeit messen in Testbench


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von jan (Gast)


Lesenswert?

Hallo,

ich habe mich gerade gefragt, ob es möglich ist in einer Testbench die 
Zeit zwischen zwei Events (z.B. mittels signal'ACTIVE) zu messen. Ich 
habe ein UART-Modul und würde gerne automatisiert testen, ob und wie 
genau die gewünschte Baudrate eingehalten wird. Da ich bisher nichts 
dadrüber gefunden hab, versuch ich es mal hier :-)

von Duke Scarring (Gast)


Lesenswert?

Ich verwende dafür das folgende Konstrukt:
1
  time_check_data_setup: process
2
      variable change: time;
3
  begin
4
     wait until data'event;
5
     change := now;
6
     wait until falling_edge(enable);
7
   
8
     assert (now - change) >= t_ah_c
9
        report "Data setup time to short"
10
        severity error;
11
  end process;

Duke

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Die aktuelle Simulationszeit ist im Wert NOW abgelegt.

Du kannst also einfach z.B. bei einer Flanke des Signals bei einer 
Flanke auf dem Signal S den Zeitwert S'last_event von NOW abziehen. 
Oder auch irgendwas mit dem S'active rumtricksen...

Eine Anwendung von NOW findest du dort im 
Beitrag "Re: [VHDL] Daten von ADC in BRAM speichern"

EDIT: Pech, Zweiter. Das kommt davon, wenn man das Fenster zu lange 
offen lässt... ;-)

von jan (Gast)


Lesenswert?

Super! Das funktioniert wunderbar :-) DANKE!

von jan (Gast)


Lesenswert?

So hab ich es jetzt übrings eingebaut:
1
  process
2
    variable change: time;
3
  begin
4
    wait until rising_edge(enableTimeCheck0);
5
    wait until uart0_tx'transaction = '1' or uart0_tx'transaction = '0';
6
    change := now;
7
    wait until uart0_tx'transaction = '1' or uart0_tx'transaction = '0';
8
    timeDiff0 <= now - change;
9
    wait;
10
  end process;

Den Wert timeDiff0 prüfe ich dann später auf Abweichungen von dem 
erwarteten Wert.

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
Noch kein Account? Hier anmelden.