File mit Testwerten
1 00000001 00000001 00000002 0 1 FFFFFFFF FFFFFFFF 00000000 1 2 00000004 00000005 FFFFFFFE 1 2 FFFFFFFF FFFFFFFF 00000000 0 wr_ram 0001 00F1 11 wr_ram 0002 0015 11 wr_rm 0002 F632 10 rd_ram 0001 00F1 99 rd_ram 0002 F615 99 reset 00 00 00 00 00 00 00 00 00 check 00 00 00 00 00 00 00 00 00 singl 13 01 00 00 00 00 00 00 00 check 13 00 00 00 00 00 00 00 00
Die Daten werden entweder als string mit der Funktion read(<von>,<zu>) oder als Hex-Zahl hread(<von>,<zu>) eingelesen (vgl. std_logic_textio.vhd).
Richtige Zahlenwerte eintragen
Weil die Zahlen als Hex interpretiert werden, entspricht eine 0 4 Bits. Und die Zahl 10 entspricht dem dezimalen Wert 15.
Aus diesem Grund enstehen folgende Anzahl Bits:
00 im File -> std_logic_vector(7 downto 0) beim Einlesen in der Testbench
0 im File -> std_logic_vector(3 downto 0)
7 im File -> std_logic_vector(3 downto 0)
0F5 im File -> std_logic_vector(11 downto 0)
Aufbau der Token
Die Token können alle vom selben Datentyp sein und über alle Testtyps die gleiche Struktur beinhalten. Das vereinfacht ihre Verarbeitung.
<Testtyp> <Wert1> <Wert2> <Ergebnis_Addition> <Ueberlaufbit> 1 00000001 00000001 00000002 0
Im zweiten Beispiel hängt die Funktion der Token von dem Testtyp ab.
<Testtyp> <adress> <value> <byte enable> wr_ram 0001 00F1 11
<Testtyp> <address> <result> <byte enable> rd_ram 0001 00F1 01
Tipp: Fixe Tokenstruktur mit Auslassungen
singl 14 01 00 00 00 00 00 00 00 // verwerfen polyp 13 01 14 01 15 01 14 00 02
Zum Decodieren wird es schwer, wenn unterschiedliche Verarbeitungs-Strukturen je nach Testtyp aufgebaut werden müssen.
Zu empfehlen ist, dass alle Test-Werte in einer Linie stehen und beim Verarbeiten gewisse Token verworfen werden.