Forum: FPGA, VHDL & Co. ise 6.3 behavioral simulation


von J.H. (Gast)


Lesenswert?

Auf Grund des Pollin Threads habe ich nun ise 6.3 installiert - es 
reicht -doch- erst mal kleine Brötchen zu backen.

Die Bestätigung folgt sofort: ich schaffe es nicht, eine 
Verhaltenssimulation zu starten. Und zwar finde ich gar nicht, wo das 
gemacht wird.

Vielleicht hilft mir wer: ich habe, eben um es leicht zu haben, einen 
Minicode eingegeben:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.STD_LOGIC_ARITH.ALL;
4
use IEEE.STD_LOGIC_UNSIGNED.ALL;
5
6
entity logic is
7
  port(A,B: in STD_LOGIC;
8
    C,D: out STD_LOGIC
9
  );
10
end logic;
11
12
architecture Behavioral of logic is
13
14
begin
15
16
   C <= A and B;
17
   D <= A or B;
18
19
end Behavioral;

So dann mit Rechtsklick auf dieses vhdl file, <new Source>, Test bench 
waveform hinzugefüht. Da dann A und B verdreht. Hängt im Projekt Baum 
auch unter der vhdl datei.

Wie und Wo kann ich denn nun die Simulation starten? User constraits 
oder ähnliches habe ich nicht eingegeben, aber das sollte für das 
Verhalten doch auch unerheblich sein oder?

Was ich unter ise 6 Tutorial gefunden habe ist das Selbige nur für ise 8 
und das stürtzt sich zudem auch auf modelsim.

Vielleicht hilft mir ja wer auf dem kleinen Dienstweg, denn ich hoffe ja 
doch, daß mich die Entwicklungsumgebung nciht in die Knie zwingen wird 
:-)


danke

von Mike (Gast)


Lesenswert?

Du musst angeben wie lange die Simulation laufen soll. Unten in der 
Konsole kannst du z. B. "run 100 ns" angeben, wenn deine Clock-Periode 
10 ns hat.

von J.H. (Gast)


Lesenswert?

Also ich bin auf der xyz.tbw, hab also noch rechts die diversen 
Zeitverläufe und muss dann unten in dem consolenfenster einen run Befehl 
eingeben, damit die simulation losläuft?
Kein Menupunkt im Process_View ala "Check Syntax" oder generell 
"implement"?
Kann nur nichts in die console tippen, falls das der einzige Weg ist. 
:-(

von dito (Gast)


Lesenswert?

Ah sorry, ich dachte du meintest Modelsim.

von Duke Scarring (Gast)


Lesenswert?

@J.H.:
Besorg Dir mal ein aktuelles Modelsim XE. Der in ISE integrierte 
Simulator wurde erst mit der Version 8 langsam brauchbar (ist aber immer 
noch kein Vergleich zu Modelsim).

Duke

von J.H. (Gast)


Lesenswert?

Ok alles klar, danke euch ich habe jetzt model sim installiert und das 
scheint auch zu funktionieren.

3 fragen hab ich noch die packe ich hier rein um nicht das Forum mit 
neuen threads zu sehr zu zu müllen. (Wie wäre es da übrigens mit einer 
Anfänger Sektion mit solchen dämlicheren Fragen um das zu trennen?)

1) Kann man auch interne signale im model sim verfolgen? Ich habe die 
Testbench jetzt über "add new Source" + "Testbench waveform" erstellt, 
da sind aber nur die Portsignale verfügbar.

2) / 3)
habe folgendes ausprobiert und simuliert: vielleicht sinnvefreit, aber 
sollte ein Frequenzteiler sein, den man abschalten kann. Blöde 
zugegeben, aber das sind ja alle rein akademischen Aufgaben irgendwie...
1
entity teilen is
2
  generic(tv : integer := 1 );
3
    Port ( EN : in std_logic;
4
           CLK : in std_logic;
5
           OUTP : out std_logic);
6
end teilen;
7
8
architecture Behavioral of teilen is
9
10
signal hilfe_int : std_logic_vector(tv downto 0) := (others=>'0');
11
12
begin
13
  OUTP <= hilfe_int(hilfe_int'left) when EN = '0' else 'Z';
14
  
15
  process(CLK)
16
  begin
17
    if(rising_edge(CLK)) then
18
      hilfe_int <= hilfe_int + 1;
19
    end if;
20
  end process;
21
22
end Behavioral;

2) Muss ich das enable 'EN' irgendwie dieser ominösen Eintaktung 
unterziehen? In der Simulation habe ich da von tristate bis gewollten 
start ein Fitzel übrig bis zum nächsten CLK erscheint mir auch logisch. 
Einziger Weg wäre, enable auch nur parallel zum takt auszuwerten?

3) Ist in dem prozess das if(...clk...) ... end if in ordnung ohne ein 
else? Allgemein las ich ja auf Lothars Homepage die Notwendigkeit voller 
if Konstrukte wegen der Latch Problematik. Hier gehts ja ohne Latch 
eigentlich gar nicht - hilfe_int muss ja gespeichert werden.

Und, in dem Zusammenhang, was ist das schlimme, wenn ungewollt ein latch 
entsteht? Geht das nur auf die Laufzeiten oder den Platzbedarf, oder 
was?


bin aber schon ganz froh, daß ich Kleinigkeiten probieren und simulieren 
kann - es ist nur hart zu überprüfen, ob das was man gedengelt hat auch 
sinnvoll ist oder gegen jede Sinnhaftigkeit und Regel verstößt.
Nachher gewöhne ich mir noch Mist an.

von Falk B. (falk)


Lesenswert?

@  J.H. (Gast)

>1) Kann man auch interne signale im model sim verfolgen?

Sicher. Im Fenster Structure auf dein VHDL-Objekt clicken, dann 
erscheinen im Fenster Signals die internen Signale. Alle markieren und 
mit Menu View-> Wave_Selected anzeigen.

> Ich habe die
>Testbench jetzt über "add new Source" + "Testbench waveform" erstellt,
>da sind aber nur die Portsignale verfügbar.

+ Logisch, das ist die automatisch generierte Testbench +Anzeige. 
Praktisch wertlos. Das macht man alles selber

<Chraskurs>

Im Modelsim Kommandofenster Menu Transcript -> clear
in der Modelsim Kommandozeile "restart -force -nowave"
Dann wie oben beschrieben die Signale ins Wave bringen
Im Modelsim Kommandofenster Menu Transcript -> Save, Alle bisherigen 
Kommandos werden in einem Script gespeichert
In der Kommandozeile run 10ms eingeben (oder welche Zeit auch immer

Diese Script kann man dan leicht über Macro -> Execute Macro wieder 
aufrufen.

</Chraskurs>


>2) Muss ich das enable 'EN' irgendwie dieser ominösen Eintaktung
>unterziehen?

nein.

>3) Ist in dem prozess das if(...clk...) ... end if in ordnung ohne ein
>else?

Ja.

> Allgemein las ich ja auf Lothars Homepage die Notwendigkeit voller
>if Konstrukte wegen der Latch Problematik.

Nöö, das gilt nur für rein kombinatoreisch Prozesse, nicht für 
getaktete.

> Hier gehts ja ohne Latch
>eigentlich gar nicht - hilfe_int muss ja gespeichert werden.

Das macht man hier aber mit FlipFlops, schliesslich steht da was von 
rising_edge(clk) ;-)

>Und, in dem Zusammenhang, was ist das schlimme, wenn ungewollt ein latch
>entsteht?

Ist ne längere Geschichte. Resultat. LASS ES!!

> Geht das nur auf die Laufzeiten oder den Platzbedarf, oder
>was?

Vieles.

MFG
Falk

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


Lesenswert?

>Und, ..., was ist das schlimme, wenn ungewollt ein latch entsteht?
Dass es ungewollt entsteht, das ist das Schlimme daran  :-o

Latches an sich sind nicht schlimm (das ist sogar eine eigene 
Betriebsart der FFs in den FPGA-Slices bei Xilinx), aber wenn du das 
ungewollt produzierst, passiert es gern, dass deine Simulation nicht 
mehr zur Realität passt.

> Ist ne längere Geschichte. Resultat. LASS ES!!
Is so.
Wenn bei der Synthese Warnungen und Meldungen mit "... Latch ..." 
auftauchen, ist jede einzelne es wert, genauer angeschaut zu werden.

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.