Es geht bei meiner Frage um die Simulation. Deren Bedeutung bekommt man
ja intensiv erklärt, aber leider sind die ja fast noch komplizierter,
als die Synthese an sich.
So strauchel ich auch und zwar dabei, als erstes Ziel einfach Testdaten
aus einer Datei zu lesen.
Es gibt ja mehrere Lösungen, wie so eine Datei aussehen kann. z.B. eine
csv Datei mit Hex werten, csv mit dezimal Werten, eine Binardatei oder
(was wohl am einfachsten ist zu Beginn) eine Datei mit
Stringrepräsentationen der Stimuli. Also so bei 4 bit breiten Stimuli.
1100
1010
0000
(..)
Also pro Zeile nur ein Wert der Verarbeitet wird. Komplizierter und
damit komfortabler werden möchte ich wenn ich so Erfahrung habe.
Nun zum Problem. Ich habe mir std.textio angeschaut und versucht eine
ganz einfache Testbench zu machen. Das dut ist einfach 4 bit in und
Ausgabe an 4 bit out.
Das (hoffentlich) Relevante aus der Testbench
1 | LIBRARY ieee;
|
2 | USE ieee.std_logic_1164.ALL;
|
3 | use std.textio.all;
|
4 |
|
5 | (...)
|
6 |
|
7 | stim_proc: process(clk)
|
8 |
|
9 | file infile: text;
|
10 | variable L : LINE;
|
11 | variable str_stimulus: string(dat'range);
|
12 | --variable stimulus : std_logic_vector(7 downto 0);
|
13 |
|
14 | begin
|
15 | file_open(infile,"noname.txt",READ_MODE);
|
16 |
|
17 | wait until rising_edge(clk);
|
18 |
|
19 | while not endfile(infile) loop
|
20 | readline(infile, L);
|
21 | if( L'length = 0 ) then next;
|
22 | read( L, str_stimulus);
|
23 | dat <= to_std_logic_vector(str_stimulus); --dat ist ein 4bit std_logic_vector. Eingang vom dut
|
24 | end loop;
|
25 |
|
26 | -- wait;
|
27 | end process;
|
Das funktioniert nicht. <to_std_logic_vector> is not declared. Ist das
der einzige Fehler? Wie wandle ich den gelesenen String in den
std_logic_vector um.
Mache ich es grundsätzlich richtig und wie handhabt ihr Testdaten, die
aus einer Datei kommen? Man liest da leider sehr wenig auf den
einschlägigen vhdl Seiten