GHDL und gtkwave Grundlagen

Gast #5832037
Lesenswert?

Gerne wird vorgeschlagen, für die Simulation GHDL ( ein VHDL zu exe 
Compiler ) und gtkwave zum Anzeigen der Waveforms zu benutzen.

Hier gibt es ein Video für Windows:

https://www.youtube.com/watch?v=H2GyAIYwZbw

Es wird eine ältere Version 0.33 runter geladen, für die es eine exe 
gibt.  Die aktuelle ist aber 0.36

https://github.com/ghdl/ghdl/releases

Welche Installation ist zu empfehlen?
Gast #5832240
Lesenswert?

>die jeweils neueste.

Danke für die Antwort. Bei der neuesten scheint der Compiler nicht dabei 
zu sein, so dass er getrennt installiert werden muss.

Ich habe eine Parallelinstallation von mingw in

D:\tools\mingw-w64

Wenn ich mein obiges Batchscript laufen lasse, hat er Probleme beim 
"Elaborieren".
Angehängte Dateien:
Gast #5832964
Lesenswert?

Irgendwie, glaube ich, daß es der "falsche" Kompiler benutzt wird:

Ich hab den Pfad angepasst:
1
set path=c:\tools\ghdl\bin;C:\tools\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;C:\tools\mingw-w64\msys2_64\usr\bin

Und es geht... oder kompiliert oder synthetisiert, oder whatever you 
want to call it:
1
C:\02_Elektronik\204_FPGA_Tests\10_GHDLTest>sim
2
Elaborate phase
3
Run simulation
4
script terminated !
5

6
C:\02_Elektronik\204_FPGA_Tests\10_GHDLTest>
Gast #5833242
Lesenswert?

Autor: Markus F. (mfro)
>Die -mcode- Version.

Danke, das ist die Lösung.
Damit funktioniert auch die 32bit -mcode Version mit 64 bit mingw.

Jetzt ist noch die Frage, wie man die Batch-Scripte am besten zur 
Automatisierung nutzt.

Für gtkwave muss man die vcd-Files nutzen, also
1
show half_added_tb.vcd
Angehängte Dateien:
#5833254
Lesenswert?

Wenn man mehrere VHDL-Quelldateien hat, sind die -a und -e -Optionen zum 
Übersetzen nicht mehr so simpel anzuwenden (weil man die in der 
richtigen Reihenfolge absetzen muß). Dann bieten sich die -i und -m 
-Optionen an, die ghdl zu "selbstständigen" Übersetzen anbietet.

Damit kann man sich auch ein einfaches Makefile bauen:
1
work-obj08.cf: $(TOPLEVEL_FILE) $(FILES)
2
    $(GHDL) -i $(GHDL_OPTS) --std=08 $(TOPLEVEL_FILE) $(FILES)
3
    $(GHDL) -m $(GHDL_OPTS) --std=08 tb
Gast #5834823
Lesenswert?

GHDL kann auch Makefile-Vorlagen generieren:
http://ghdl.free.fr/ghdl/Generate-Makefile-command.html

Carl schrieb:
> Für gtkwave muss man die vcd-Files nutzen, also

Nein zum Glück nicht!
siehe http://ghdl.free.fr/site/pmwiki.php?n=Main.WaveViewer
1
Since VCD is Verilog oriented, it is not possible to dump all the VHDL types with VCD. Furthermore, there is no open waveform file format for VHDL. That is the reason why a GHDL waveform format was created.

Nimm das GHDL Format, sonst fehlen dir Signale!
Gast #5835834
Lesenswert?

Mit GHDL 0.36 kann man das Fileformat erzeugen:
1
ghdl -r --ieee=synopsys --std=08 %ghdlFileName% --vcd=%ghdlFileName%.vcd --wave=waveData.waf --stop-time=1ms

Meine gtkwave-Version ist 3.3.100 und ich kann "waveData.waf" auch nicht 
darstellen. Vielleich braucht man eine bestimmte File-Endung.
Gast #5835859
Lesenswert?

Der Onlinegenerator erzeugt mir dieses Script.
Ich versuche, eine Sekunde zu Simulieren, aber gtkwave zeigt nur bis 
1ms.
1
-- Testbench automatically generated online
2
-- at http://vhdl.lapinoo.net
3
-- Generation date : 9.5.2019 04:37:36 GMT
4

5
library ieee;
6
use ieee.std_logic_1164.all;
7

8
entity tb_counter is
9
end tb_counter;
10

11
architecture tb of tb_counter is
12

13
    component counter
14
        port (cout   : out std_logic_vector (7 downto 0);
15
              enable : in std_logic;
16
              clk    : in std_logic;
17
              reset  : in std_logic);
18
    end component;
19

20
    signal cout   : std_logic_vector (7 downto 0);
21
    signal enable : std_logic;
22
    signal clk    : std_logic;
23
    signal reset  : std_logic;
24

25
    constant TbPeriod : time := 1000 ns; -- EDIT Put right period here
26
    signal TbClock : std_logic := '0';
27
    signal TbSimEnded : std_logic := '0';
28

29
begin
30

31
    dut : counter
32
    port map (cout   => cout,
33
              enable => enable,
34
              clk    => clk,
35
              reset  => reset);
36

37
    -- Clock generation
38
    TbClock <= not TbClock after TbPeriod/2 when TbSimEnded /= '1' else '0';
39

40
    -- EDIT: Check that clk is really your main clock signal
41
    clk <= TbClock;
42

43
    stimuli : process
44
    begin
45
        -- EDIT Adapt initialization as needed
46
        enable <= '1';
47

48
        -- Reset generation
49
        -- EDIT: Check that reset is really your reset signal
50
        reset <= '1';
51
        wait for 100 ns;
52
        reset <= '0';
53
        wait for 100 ns;
54

55
        -- EDIT Add stimuli here
56
        wait for 1000000 * TbPeriod;
57

58
        -- Stop the clock and hence terminate the simulation
59
        TbSimEnded <= '1';
60
        wait;
61
    end process;
62

63
end tb;
64

65
-- Configuration block below is required by some simulators. Usually no need to edit.
66

67
configuration cfg_tb_counter of tb_counter is
68
    for tb
69
    end for;
70
end cfg_tb_counter;
Angehängte Dateien:
Gast #5836285
Lesenswert?

Carl schrieb:
> Die Simulation dürfte ja ewig dauern.
Ja, dauert sie.

Ich bau mir dann gerne so ein Konstrukt:
1
    function divider_sim_or_syn return natural is
2
        variable result : natural;
3
    begin
4
        result := 50_000_000;
5
        -- pragma translate_off
6
        result := 50;
7
        -- pragma translate_on
8
        return result;
9
    end function;

Duke
(Firma: www.elpra.de) Persönliche Seite #5841207
Lesenswert?

René D. schrieb:
> Xilinx setzt Multiplikation in einem DSP Block
> um.

Jein, kommt ganz darauf an. Haengt ganz davon ab, wie breit die Faktoren 
sind, wieviele DSP Slices fuer andere und kritischere Operationen 
benoetigt werden und den Synthese Settings.

Am einfachsten ist es immer, einfach mal Minimalbeispiele durchzumachen 
und sich das Synthese Ergebnis anzuschauen. Dann bekommt man ganz gut 
ein Gefuehl davor.
Gast #5842421
Lesenswert?

Wie ist eigentlich GHDL zu Modelsim von Mentorgraphics zu bewerten?

Ich habe jetzt nur GHDL benutzt und nach meinem Eindruck ist es rasend 
schnell. Hätte man mit Modelsim irgendwelche sonstigen Vorteile?
(Firma: www.elpra.de) Persönliche Seite #5842435
Lesenswert?

Carl schrieb:
> Wie ist eigentlich GHDL zu Modelsim von Mentorgraphics zu bewerten?
>
> Ich habe jetzt nur GHDL benutzt und nach meinem Eindruck ist es rasend
> schnell. Hätte man mit Modelsim irgendwelche sonstigen Vorteile?

Modelsim beinhaltet deutlich mehr Features, je nachdem welche Lizenz mit 
welchen Optionen du erwirbst. Da kommt GHDL natuerlich nicht ansatzweise 
ran.

Hier ist mal eine alte Auflistung:

http://en.wedasoft.at/files/uploads/we_products/4/de_modelsim_comparisonfinal_pdf

Die SE Version gibt es in dem Sinne nicht mehr, das laeuft jetzt unter 
Questa Series und ist dort wieder unterteilt in Questa Core, Questa 
Prime und Questa Ultra:

http://www.ednc.com/wp/wp-content/uploads/2015/08/QuestaCompare-April2014.pdf

Aber ich gebe dir auf jedenfall recht. GHDL ist ein tolles Stueck 
Software, ich verwende das meistens in Kombination mit VUnit und dann in 
einem Docker Container. Vom Funktionsumfang kann es aber den 
kommerziellen Loesungen nicht das Wasser reichen. Allerdings auch im 
Preis, wenn du mal anfragst was die Mentor Produkte kosten, dann hauts 
einen erstmal vom Stuhl. ;-)
#5842438
Lesenswert?

Carl schrieb:
> Mit GHDL 0.36 kann man das Fileformat erzeugen:
>
>
1
> ghdl -r --ieee=synopsys --std=08 %ghdlFileName% --vcd=%ghdlFileName%.vcd 
2
> --wave=waveData.waf --stop-time=1ms
3
>
>
> Meine gtkwave-Version ist 3.3.100 und ich kann "waveData.waf" auch nicht
> darstellen. Vielleich braucht man eine bestimmte File-Endung.

Habt Ihr schon mal das File Format GHW versucht?

Auszug der Manpage (Linux) von GTKwave:
1
GHW is the native VHDL  format  generated  by GHDL

Die unterstützten File Formate:
1
gtkwave - Visualization tool for VCD, LXT, LXT2, VZT, FST, and GHW files
Gast #5845624
Lesenswert?

>Habt Ihr schon mal das File Format GHW versucht?

Ich hab's grad mal ausprobiert:
Mann muss bei GHDL die option

--wave=testTaden.ghw

verwenden, um das File zu erzeugen. Es ist nur 1/4 so groß wie das 
vcd-File und kann mit GTKWave betrachtet werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren