problem mit der TB: type mark expected in a subtype indication

OP #1629069
Lesenswert?
• ▲
▼
Hallo, ich habe gerade eine kleine uebung gemacht und hier das problem 
dass dich der VHDL-Code nicht kompilieren laesst mit GHDL, was amche ich 
da falsch?

Weil es so wenige Zeilen sind Kopiere ich ihn mal direkt hier rein, ich 
hoffe das ist so in Ordnung.

logik.vhd, funktioniert:
1
entity logik is
2
  port(  E  : in bit_vector (2 downto 0);
3
      Y  : out bit_vector (1 downto 0));
4
end logik;
5

6
architecture behaviour of logik is
7
  begin
8
    Y(0) <= (E(0) and E(1)) or E(2);
9
    Y(0) <= (E(0) or E(1)) and E(2);
10
end behaviour;

dies ist die testbench, hier bricht er am ende ab:
1
entity logik_tb is
2
end logik_tb;
3

4
architecture test of logik_tb is
5
signal E1  : in bit_vector (2 downto 0);
6
signal Y1  : out bit_vector (1 downto 0);
7
    
8
component logik
9
  port(  E  : in bit_vector (2 downto 0);
10
      Y  : out bit_vector (1 downto 0));
11
end component;
12
for all: logik use entity work.logik(behaviour);
13

14
begin
15
  E1 <= "000", "001" after 10 ns, "010" after 20 ns, "011" after 30 ns, "100" after 40 ns, "101" after 50 ns, "110" after 60 ns, "111" after 70 ns;
16
C1:    logik port map(E1, Y1);
17
end test;

und der fehler ist:
1
xxx:~$ ghdl -a logik.vhd 
2
xxx:~$ ghdl -a logik_tb.vhd 
3
logik_tb.vhd:5:18: type mark expected in a subtype indication
4
/usr/lib/ghdl/bin/ghdl: compilation error

waere sehr schoen wenn mir irgendjemand sagen koennte warum das nicht 
klappt, an der logik.vhd scheint es nicht zu liegen. leider reichen 
meien kenntnisse auch nicht wirklich um selber herauszufinden woran das 
liegen koennte. Beide dateien liegen im gleichen Ordner.

danke
arne
Moderator (Firma: Titel) Persönliche Seite #1629129
Lesenswert?
• ▲
▼
Mit Modelsim und deinem Code bekomme ich gleich mal:
1
# ** Failure: (vsim-3344) Signal 'y' has multiple drivers but is not a resolved signal.
Ok, in logik.vhd aus dem Y(0) ein Y(1) gemacht, dann sagt er:
1
# ** Error: logik_tb.vhd(19): near "in": expecting "STRING" or "IDENTIFIER"
2
# ** Error: logik_tb.vhd(20): near "out": expecting "STRING" or "IDENTIFIER"
Und tatsächlich, in der Zeile 19 und 20 ist ein Fehler, denn Signale 
haben keine Richtung :
1
-- signal E1  : in  bit_vector (2 downto 0); 
2
-- signal Y1  : out bit_vector (1 downto 0);
3
signal E1  : bit_vector (2 downto 0);
4
signal Y1  : bit_vector (1 downto 0);
Und kaum ist das korrigiert, läuft alles wie geschmiert... ;-)

BTW:
1
for all: logik use entity work.logik(behaviour);
Diese Zeile kannst du dir sparen.
Gast #1629307
Lesenswert?
• ▲
▼
Oha, danke
da haste 2 Fehler gefunden obwohl mir nur einer aufgefallen ist. Y(1) 
ist natuerlich auch so gedacht gesesen, da wars wohl gestern abend schon 
ein wenig spaet.
Aber warum meckert denn ghdl nicht wenn ich die logik.vhd kompiliere? da 
muesste er doch eigentlich auch schon die hufe hochwerfen und sagen dass 
ich hier das den gleichen port 2mal belege? oder habe ich das falsch 
verstanden?

danke,
arne
Gast #1629315
Lesenswert?
• ▲
▼
ghdl ist eben noch Version 0.29...
Dafür ist die Leistung schon recht beachtlich.

Im Gegensatz zeigt Modelsim vcom nicht die Spalte an in der sich ein 
Fehler befindet.

Zum Gegenchecken bei kniffligen Problemen ist es ganz gut, den jeweils 
anderen Compiler zu haben.

Duke
Gast #1629405
Lesenswert?
• ▲
▼
ja, leider habe ich kein modelsim fuer linux, also die installdateien 
schon, nur ohne lizenz sind die wertlos :(
ich werde mir wohl demnaechst mal das webpack angucken, installiert ist 
es schon laenger, nur erschlaegt es einen immer wenn ich es auf mache ;)

danke jedenfalls,
arne

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