Forum: FPGA, VHDL & Co. Process "Check Syntax" failed


von Christoph B (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
ich benutzte xilinx und habe folgendes problem:

ich lass die Syntax von meiner TB checken und dann kommt folgendes:


Started : "Check Syntax".
Running vhpcomp
Compiling vhdl file "C:/Dokumente und 
Einstellungen/roGl/Desktop/3/3a.vhd" in Library isim_temp.
Entity <tr> compiled.
Entity <tr> (Architecture <compl3>) compiled.
Compiling vhdl file "C:/Dokumente und 
Einstellungen/roGl/Desktop/3/TB4.vhd" in Library isim_temp.
Entity <tb4_vhd> compiled.
Entity <tb4_vhd> (Architecture <behavior>) compiled.
Parsing "TB4_vhd_stx.prj": 0.25

Process "Check Syntax" failed


und ich habe keinen blassen schimmer was ich da machen soll!
Ich hab schon die aktuellen Updates runtergeladen und es ändert sich 
nichts!

Es wär super wenn euch dafür ne Lösung oder zumindest ein Grund 
einfällt!

Danke

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hast du schon mal so richtig einfache Projekte gemacht?
Oder legst du gleich mit dem Monsterprojekt los?

Das sieht recht bedenklich aus:
1
use IEEE.STD_LOGIC_ARITH.ALL;      ---- entweder die beiden hier
2
use IEEE.STD_LOGIC_UNSIGNED.ALL;   
3
4
use ieee.numeric_std.all;          ---- oder die hier
5
:
6
architecture compl3 of TR is
7
:
8
begin
9
:
10
verrechnung: process (clk,zahl2, operator) -- sieh dir mal die Sensitivliste an...
11
begin
12
zahl1i <= zahl1;                           -- da fehlt mindestens zahl1
13
zahl2i <= zahl2;
14
15
if (operator = "0000") then       -- man darf, um die Lesbarkeit zu erhöhen, 
16
z1 (22 downto 0)<=zahl1i+zahl2i;  -- in VHDL am Zeilenanfang Leerzeichen einfügen
17
end if;
18
if (operator ="0001") then
19
z1 (22 downto 0)<=zahl1i-zahl2i;
20
end if;
21
if (operator = "0010") then
22
z1<=zahl1i*zahl2i;
23
--if (operator = "0011") then z1:=zahl1i/zahl2i;   --- das hast du selbst gemerkt, dass das nicht geht....
24
elsif (clk'event and clk = '1') then  --- der Takt hier? Ist das schon so gewollt????
25
z1<="0000000000000000000000000000000000000000000000";
26
end if;
27
:
28
loop05: for i in 9 downto 0 loop   --- lies dir mal das Thema loops in VHDL durch
29
if (z1>= "0000000000000000000000000000011000011010100000") --100000
30
then BCD05<=i;
31
z1<=z1 - "0000000000000000000000000000011000011010100000";
32
end if;
33
end loop loop05;
34
:
35
end if;
36
37
bcd0o <= bcd0;
38
bcd1o <= bcd1;
39
bcd2o <= bcd2;
40
bcd3o <= bcd3;
41
bcd4o <= bcd4;
42
bcd5o <= bcd5;
43
bcd6o <= bcd6;
44
45
end process verrechnung;  -- aber holla, alles in 1 Prozess. Und der ist teilweise getaktet. Das ist gewagt...
46
end compl3;

von Christoph B (Gast)


Lesenswert?

Ja ich hab mal die Taktung weggelassen und die SL aktuellisiert.
Die Libary hab ich aus rausgelöscht obwohl der die selbstständig 
einfügt.
-> es geht immer noch nicht!...

was meinst du mit der Zeile:
loop05: for i in 9 downto 0 loop   --- lies dir mal das Thema loops in 
VHDL durch
ist 1:1 aus unserem skript raus!...
was soll da nicht passen?
Danke!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> ist 1:1 aus unserem skript raus!...
1
    for i in 9 downto 0 loop
Klar, das ist eine Schleife nach VHDL-Syntax.
> was soll da nicht passen?
Die Art und Weise, wie diese loop verwendet wird, passt nicht. Eine 
Schleife in VHDL erzeugt paralelle Hardware (Kombinatorik).

Aber das:
1
loop05: for i in 9 downto 0 loop   
2
   if (z1 >= "0000000000000000000000000000011000011010100000") then  --100000
3
      BCD05 <= i;
4
      z1 <= z1 - "0000000000000000000000000000011000011010100000";
5
   end if;
6
end loop loop05;
Das kannst du zwar simulieren, aber das wirst du nicht so ohne weiteres 
in Hardware abbilden können. Das ist eine gut versteckte kombinatorische 
Schleife:
http://www.lothar-miller.de/s9y/categories/36-Kombinatorische-Schleife


Die Umwandlung einer Zahl in eine BCD-Zahl geht besser so:
http://www.lothar-miller.de/s9y/categories/44-BCD-Umwandlung

von Duke Scarring (Gast)


Lesenswert?

@Christoph B
>Compiling vhdl file "C:/Dokumente und Einstellungen/roGl/Desktop/3/3a.vhd

Seit wann kann Xilinx denn richtig mit Leerzeichen (und Punkten) im Pfad 
umgehen?

Duke

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Duke Scarring schrieb:
> Seit wann kann Xilinx denn richtig mit Leerzeichen (und Punkten) im Pfad
> umgehen?
Ich denke, seit der Pfad und der Dateiname in Anführungszeichen gesetzt 
werden. Aber ein kleines Fragezeichen verbleibt, weil z.B. aus
1
Synthesizing Unit <test>.
2
    Related source file is "F:/Projekte/FPGA/Pfad mit Leerzeichen/test/test.vhd".
Zwischendurch mal das wird:
1
F:/Projekte/FPGA/Pfad has been created.
Ich würde den Pfad so wählen, dass diese "Sonderzeichen" nicht 
vorkommen...

von Christoph B (Gast)


Lesenswert?

Lösung:
Das "Syntax failed" kommt ist einfach ein bug!
Die TB funktioniert genauso!....

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.