www.mikrocontroller.net

Forum: FPGA, VHDL & Co. problem mit der TB: type mark expected in a subtype indication


Autor: Arne Z. (zachso)
Datum:

Bewertung
0 lesenswert
nicht 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:
entity logik is
  port(  E  : in bit_vector (2 downto 0);
      Y  : out bit_vector (1 downto 0));
end logik;

architecture behaviour of logik is
  begin
    Y(0) <= (E(0) and E(1)) or E(2);
    Y(0) <= (E(0) or E(1)) and E(2);
end behaviour;

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

architecture test of logik_tb is
signal E1  : in bit_vector (2 downto 0);
signal Y1  : out bit_vector (1 downto 0);
    
component logik
  port(  E  : in bit_vector (2 downto 0);
      Y  : out bit_vector (1 downto 0));
end component;
for all: logik use entity work.logik(behaviour);

begin
  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;
C1:    logik port map(E1, Y1);
end test;

und der fehler ist:
xxx:~$ ghdl -a logik.vhd 
xxx:~$ ghdl -a logik_tb.vhd 
logik_tb.vhd:5:18: type mark expected in a subtype indication
/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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Modelsim und deinem Code bekomme ich gleich mal:
# ** 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:
# ** Error: logik_tb.vhd(19): near "in": expecting "STRING" or "IDENTIFIER"
# ** 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 :
-- signal E1  : in  bit_vector (2 downto 0); 
-- signal Y1  : out bit_vector (1 downto 0);
signal E1  : bit_vector (2 downto 0);
signal Y1  : bit_vector (1 downto 0);
Und kaum ist das korrigiert, läuft alles wie geschmiert... ;-)

BTW:
for all: logik use entity work.logik(behaviour);
Diese Zeile kannst du dir sparen.

Autor: zachso (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: zachso (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.