mikrocontroller.net

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


Autor: J.H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity logic is
  port(A,B: in STD_LOGIC;
    C,D: out STD_LOGIC
  );
end logic;

architecture Behavioral of logic is

begin

   C <= A and B;
   D <= A or B;

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

Autor: Mike (Gast)
Datum:

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

Autor: J.H. (Gast)
Datum:

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

Autor: dito (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah sorry, ich dachte du meintest Modelsim.

Autor: Duke Scarring (Gast)
Datum:

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

Autor: J.H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...
entity teilen is
  generic(tv : integer := 1 );
    Port ( EN : in std_logic;
           CLK : in std_logic;
           OUTP : out std_logic);
end teilen;

architecture Behavioral of teilen is

signal hilfe_int : std_logic_vector(tv downto 0) := (others=>'0');

begin
  OUTP <= hilfe_int(hilfe_int'left) when EN = '0' else 'Z';
  
  process(CLK)
  begin
    if(rising_edge(CLK)) then
      hilfe_int <= hilfe_int + 1;
    end if;
  end process;

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.

Autor: Falk Brunner (falk)
Datum:

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

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

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

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.