Hallo,
ich möchte mit freehdl eine testbench für ein design simulieren. Bei dem
design handelt es sich um das example lightshow aus dem ZTEX SDK,
welches mit ISE Webpack synthetisiert auf dem Board auch funktioniert.
Die tb kann ich zwar compilen...
Md M. schrieb:> use ieee.numeric_std.all;> use ieee.std_logic_arith.all;> use ieee.std_logic_unsigned.all;
Schreibe 100 mal:
Ich soll nicht std_logic_arith und std_logic_unsigned verwenden und erst
recht nicht zusammen mit numeric_std.
VHDL hotline schrieb im Beitrag #4496340:
> Ich soll nicht std_logic_arith und std_logic_unsigned verwenden und erst> recht nicht zusammen mit numeric_std.
Gesaved. Ist mir auch irgendwie noch aus meinen ersten VHDL-Gehversuchen
bekannt, jetzt wo ich es lese. Ok, dann sind die Beispiele also
schlecht. Denn egal was davon ich weglasse, es zieht eine Reihe
Fehlermeldungen nach sich.
Ich habe jetzt aus dem Beispiel-Code alles rausgenommen, was Fehler
verursacht hat, ich kann es jetzt also comilen. Aber die tb will so
immernoch nicht.
1
libraryieee;
2
3
useIEEE.std_logic_1164.all;
4
useIEEE.std_logic_arith.all;
5
6
--use IEEE.std_logic_unsigned.all;
7
8
entitylightshowis
9
port(
10
led1:outstd_logic_vector(9downto0);-- LED1 on debug board
11
led2:outstd_logic_vector(19downto0);-- LED2 + LED3 on debug board
Ich hab es jetzt folgendermaßen zumindest irgendwie zum Laufen bekommen:
Ich habe die tb direkt mit in die lightshow.vhd geschrieben, die signals
der entity vorinitialisiert und mir ein paar uses rausgepickt, ohne die
es nicht ging. Am ehesten stört mich natürlich, dass ich die tb mit ins
design file packen muss. Wie kreig ich das denn jetzt bloß gelöst? Den
code habe ich angehängt.
Md M. schrieb:> Was mach ich falsch?
Mehreres, aber jeder hat mal angefangen ;-)
Hier ist die letzten Variante Deines Codes (getrennte Dateien) mit
Modelsim simuliert:
1
$ vlib work
2
3
$ vcom lightshow.vhd
4
Start time: 06:52:04 on Mar 08,2016
5
vcom lightshow.vhd
6
Model Technology ModelSim SE-64 vcom 10.3d Compiler 2014.10 Oct 7 2014
7
-- Loading package STANDARD
8
-- Loading package TEXTIO
9
-- Loading package std_logic_1164
10
-- Loading package NUMERIC_STD
11
-- Loading package std_logic_arith
12
-- Loading package STD_LOGIC_SIGNED
13
-- Compiling entity lightshow
14
-- Compiling architecture RTL of lightshow
15
End time: 06:52:04 on Mar 08,2016, Elapsed time: 0:00:00
16
Errors: 0, Warnings: 0
17
18
$ vcom lightshow_tb.vhd
19
Start time: 06:52:10 on Mar 08,2016
20
vcom lightshow_tb.vhd
21
Model Technology ModelSim SE-64 vcom 10.3d Compiler 2014.10 Oct 7 2014
22
-- Loading package STANDARD
23
-- Loading package TEXTIO
24
-- Loading package std_logic_1164
25
-- Loading package NUMERIC_STD
26
-- Loading package std_logic_arith
27
-- Loading package STD_LOGIC_UNSIGNED
28
-- Compiling entity tb_lightshow
29
-- Compiling architecture tb_arch of tb_lightshow
30
End time: 06:52:10 on Mar 08,2016, Elapsed time: 0:00:00
31
Errors: 0, Warnings: 0
32
33
$ vsim -gui tb_lightshow
34
> add wave *
35
> run 1 ms
1. Erst sollte das DUT kompiliert werden, danach die Testbench.
2. Du verwendest immer noch std_logic_arith und STD_LOGIC_UNSIGNED.
Wirf die Libs raus. numeric_std kennt auch plus und minus, aber
sinnvollerweise nur mit den Datentypen signed und unsigned.
Wer std_logic_vector verwendet muss casten.
3. In Deiner Simulation geht nix los, weil der Takt nicht initialisiert
wird.
Ich verwende gerne die folgende Konstruktion:
Duke Scarring schrieb:>...
Nunja, das ganze hat ja mit Xilinx tools auch out of the box
funktioniert, ohne dass ich was geändert habe - mit ISE Webpack konnte
ich das synthetisieren und per ZTEX SDK in das FPGA schieben. Das heißt
ja, dass die Xilinx tools mit dem Bibliotheken-Mix was anfangen können,
ob das jetzt gut ist oder nicht sei hier egal. Mir ging es ja aber
darum, es mit freehdl zu simulieren. Den Xilinx Simulator habe ich gar
nicht erst versucht. Ich würde auch die Xilinx tools zum synthetisieren
nicht nehmen, wenn es eine open source Alternative gäbe. Und mit meiner
letzten Version konnte ich es ja sogar mit freehdl simulieren, nur
musste ich dafür die testbench mit in das eigentlich design schreiben,
damit freehdl das richtig compiled und linkt. Mich würde jetzt
eigentlich nur interessieren, wie ich freehdl korrekt mit zwei files
füttere. Und ja, ich weiß, dass ich jede Menge Baustellen habe, auch das
mit den Libs weiß ich eigentlich. ich hatte sogar zwei Semester
Digitaltechnik in VHDL, ist aber doch ein paar Jahre her, dass ich
wirklich ein konkretes Vorhaben in VHDL angegangen bin. Deshalb ja auch
die examples, um mein neues Board mal blinken zu sehen und um mir die
Arbeitsumgebung einzurichten usw. Und da hat eben das
freehdl/gtkwave-Gespann aus verschiedenen Gründen seinen unumstößlichen
Platz eingenommen. Aber danke für die steten Hinweise, ich werde sie
beherzigen, sobald ich im Sattel sitze :)