Error: wait statem must contain condition clause with until

#423952
Lesenswert?

Hallo zusammen

Inzischen habe ich es geschaft ein erstes Programm, welches in VHDL 
geschrieben ist, zum Laufen zu bringen. Den Code und ein paar Tipps 
werde ich dann gelegentlich auf meiner Webseite platzieren.

Nun stehe ich aber wieder vor einem Problemchen: Der Titel sagt es 
schon. Ich habe folgenden Code:
1
library IEEE;
2
use IEEE.std_logic_1164.all;
3

4
entity clkstim is
5
  port (
6
    phi1: out STD_LOGIC;
7
    phi2: out STD_LOGIC;
8
    reset: out STD_LOGIC);
9
end clkstim;
10

11
architecture clkstim_arch of clkstim is
12
begin
13
  reset_process: reset <= '1', '0' after 10 ns;
14
  clock_process: process
15
  begin
16
    phi1 <= '1','0' after 10 ns;
17
    phi2 <= '0', '1' after 12 ns, '0' after 18 ns;
18
    wait for 20ns;
19
  end process clock_process;
20
end clkstim_arch;

und erhalte die Meldung:
"wait statement must contain condition clause with until"
Der Fehler tritt in der Zeile mit der Anweisung "wait for 20ns" auf.



Habt ihr vielleicht eine Ahnung, wie man dieses Problem lösen kann? Ich 
arbeitet mit Quartus II

Beste Grüsse und vielen Dank im Voraus
Geri
Gast #424262
Lesenswert?

Ich habe den source mit modelsim compiliert, funzt bestens. Entweder 
Quartus hat hier nen bug, oder er versucht den Code zu synthetisieren. 
Letzteres kann ja nicht klappen wegen der absoluten Verzögerungen. 
Synthese-VHDL ist nicht standarddisiert, da kocht jeder hersteller sein 
eigenes Süppchen. Da ist es gut möglich das ein "wait until " 
synthetisierbar ist.
#424321
Lesenswert?

Dein VHDL Programm ist typisch für einen VHDL Simulator, Quartus ist 
aber ein Synthese Tool.
Bei der Synthese kannst Du keine Verzögerung angeben, dann müßte das 
FPGA ja einen  Oszillator, oder zumindest eine programmierbare 
Verzögerung enthalten.
Bei der Synthese kannst Du nur auf eine Takt-Flanke warten, also

wait until clock'event and clock = '1';

oder

wait until clock = '1';

Grüße
Klaus
#424330
Lesenswert?

Hallo Klaus

Vielen Dank für Deine Info. Das kann ich nachvollziehen.

Mit obigem Programm wollte ich eigentlich auch nur einen Stimulus für 
den Simualtor erzeugen. Ich war bisher der Annahme, man könne einen 
Stimulus in VHDL codieren, ein weiteres Modul (z.B. die Archtiktur eines 
Zählers) einbinden, die Signale miteinander verknüfen und die 
Funktionalität (des Zählers) testen.

Beste Grüsse

Geri
Gast #424418
Lesenswert?

@Gerhard

Das ist prinzipiell richtig. Ich kenne Quartus nicht. ISE von Xilinx 
bietet eine Funktion die Testbench automatisch in VHDL zu erzeugen. Aber 
die Testbenchs sind, wie schon gesagt wurde, nur für die Simulation, 
nicht für die Synthese.

Eventuell kannst Du Deinem Quartus irgenwo mitteilen, das Du Simulation 
machen möchtest (ISE bietet auch beides an.)? Oder Du verwendest 
ModelSim für die Simulation.

Rick

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