www.mikrocontroller.net

Forum: FPGA, VHDL & Co. LVDS in ISE simulieren


Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich frage mich gerade, wie ich einen Takt bzw. ein Datenkanal, der per 
LVDS in den Spartan3A DSP gegeben wird, simulieren kann.

Ich bin bisher immer wie folgt vorgegangen:
New Source => Testbench waveform und dann im Fenster meinen Referenztakt 
oben rechts angegeben und dann alle Eingänge entsprechend dazu gesetzt 
oder eben nicht gesetzt.

Nun sind ja zwei Pads mit einem LVDS Signal belegt, die dann mit Hilfe 
eines IBUFDS bzw. IBUFGDS in ein verwertbares Signal gewandelt werden. 
Wie kann ich in der Simulation auf diesen Resultierenden Takt zugreifen? 
Bzw wie teile ich dem testbench mit, dass sich mein Takt/ meine Daten, 
aus zwei Pads ergeben, denn die IBUFDS bzw. IBUFGDS wird ja erst 
mitsimuliert und kann nicht einfach weggelassen werden.

DANKE!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Testbench einfach den Takt invertieren und auf den _P Eingang 
geben. Fertig. Oder halt einen 2. Takt mit 180° Phasenlage zum ersten 
erzeugen, wenn du dieses grafische Dingens da benutzt....

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieses "grafische Dingens" war so in dem Einsteigertutorial von Xilinx 
beschrieben. Habe bisher noch keine Anleitung dazu gefunden, wie ich 
eine Testbench selber schreiben kann. Wenn ich mir aus dem Wizzard eine 
.vhw Datei erstellen lassen, sieht das ganze auch sehr "unbekannt" aus, 
also nicht das ich mir das hätte selbst beibringen können...

Ich werd mal einen Blick in das Buch VHDL Synthese werfen, vielleicht 
steht ja dort etwas dazu.

Denn mit deinem Tip, einfach den einen Takt zu invertieren und auf das 
_p Pad zu geben, damit kann ich momentan leider noch nichts anfangen. 
Steht in meinem Kopf aktuell noch im Widerspruch zum eigentlichen 
Design, wo ja das _P Pad ein extra Eingang ist. Das würde bedeuten, dass 
ich im Testbench EIngänge auch "extern" verschalten kann?

DANKE

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

Bewertung
0 lesenswert
nicht lesenswert
> Habe bisher noch keine Anleitung dazu gefunden, wie ich
> eine Testbench selber schreiben kann.
Rechtsklick in dein Projekt --> New Source --> Testbench
Und dann in diese VHDL-Datei deine Stimulidaten eingeben.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich kannst/musst du die Eingänge extra verschalten. Für eine 
normale Testbench macht es prinzipiell erst mal keinen Unterschied, ob 
sie ein einzelnes VHDL Modul oder ein ganzes Top-Level-Design incl. 
aller Unter-Module anspricht.

VHDL-Testbench erzeugt ISE automatisch: New Source -> VHDL Testbench -> 
Dann das Top-Level File auswählen und schon erzeugt der das VHDL File 
zum simulieren. Im Normalfall erkennt der auch die CLKs, da musst du nur 
noch die Periodendauer eintragen.

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

Bewertung
0 lesenswert
nicht lesenswert
> Das würde bedeuten, dass ich im Testbench EIngänge
> auch "extern" verschalten kann?
Eine Testbench ist eine normale VHDL-Datei, mit einer Entity, die keine 
Ports nach aussen hat. In diese entity wird als Komponente dein Design 
eingebunden.

Sieh dir einfach mal eine einfache Testbench an:
http://www.lothar-miller.de/s9y/categories/46-Encoder
oder
http://www.lothar-miller.de/s9y/categories/44-BCD-Umwandlung

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe jetzt den Testbench erstellt:
---------------------------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
USE ieee.numeric_std.ALL;
 
ENTITY tb_IDDR2_Dataout IS
END tb_IDDR2_Dataout;
 
ARCHITECTURE behavior OF tb_IDDR2_Dataout IS 
 
    -- Component Declaration for the Unit Under Test (UUT)
 
    COMPONENT LVDS_CLOCK_IN
    PORT(
         AFE_CLK_P : IN  std_logic;
         AFE_CLK_N : IN  std_logic;
         AFE_DAT_P : IN  std_logic;
         AFE_DAT_N : IN  std_logic;
         DCM_RESET : IN  std_logic;
         DDR_RESET : IN  std_logic;
         SET_DDR : IN  std_logic;
         CLOCK_OUT0 : OUT  std_logic;
         DATA_OUTQ0 : OUT  std_logic;
         DATA_OUTQ1 : OUT  std_logic
        );
    END COMPONENT;
    

   --Inputs
   signal AFE_CLK_P : std_logic := '0';
   signal AFE_CLK_N : std_logic := '0';
   signal AFE_DAT_P : std_logic := '0';
   signal AFE_DAT_N : std_logic := '0';
   signal DCM_RESET : std_logic := '0';
   signal DDR_RESET : std_logic := '0';
   signal SET_DDR : std_logic := '0';

   --Outputs
   signal CLOCK_OUT0 : std_logic;
   signal DATA_OUTQ0 : std_logic;
   signal DATA_OUTQ1 : std_logic;
 
BEGIN
 
  -- Instantiate the Unit Under Test (UUT)
   uut: LVDS_CLOCK_IN PORT MAP (
          AFE_CLK_P => AFE_CLK_P,
          AFE_CLK_N => AFE_CLK_N,
          AFE_DAT_P => AFE_DAT_P,
          AFE_DAT_N => AFE_DAT_N,
          DCM_RESET => DCM_RESET,
          DDR_RESET => DDR_RESET,
          SET_DDR => SET_DDR,
          CLOCK_OUT0 => CLOCK_OUT0,
          DATA_OUTQ0 => DATA_OUTQ0,
          DATA_OUTQ1 => DATA_OUTQ1
        );
   
   AFE_CLK_N <= NOT AFE_CLK_P;

   -- No clocks detected in port list. Replace <clock> below with 
   -- appropriate port name 
 
   constant AFE_CLK_Pperiod := 10 ns; --  <== FEHLER
 
   AFE_CLK_P_process :process
   begin
    AFE_CLK_P <= '0';
    wait for AFE_CLK_Pperiod/2;
    AFE_CLK_P <= '1';
    wait for AFE_CLK_Pperiod/2;
   end process;
 

   -- Stimulus process
   stim_proc: process
   begin    
      -- hold reset state for 100ms.
      wait for 100ms;  

      wait for AFE_CLK_Pperiod*10;

      -- insert stimulus here 

      wait;
   end process;

END;
Nun meldet er mir in Zeile 89 einen Fehler, nahe des Ausdruckes 
constant... ich habe lediglich das automatisch erzeugte <clock> ersetzt, 
da er keinen CLK gefunden hat.
Der Aufbau dieser Testbench ist mir nun klar, nur habe ich auch die 
beiden LVDS Takteingänge AFE_CLK_N und AFE_CLK_P richtig verschaltet mit 
AFE_CLK_N <= NOT AFE_CLK_P; ?

VIELEN DANK für die schnelle und umfangreiche Hilfe :)

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

Bewertung
0 lesenswert
nicht lesenswert
>    constant AFE_CLK_Pperiod := 10 ns; --  <== FEHLER
Konstanten werden woanders definiert...
Probiers mal dort wo auch die Signale definiert werden.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe es jetzt hinter und vor den signalen versucht, dann kommt dieser 
Fehler:
Line 55. Syntax error near :=

Eigentlich war ich davon ausgegangen, dass so ein automatisch 
generiertes File fehlerfrei ist, vor allem was die Platzierung der 
Deklarationen angeht. Das das Programm nicht wissen kann, welches Pad 
nun mein Takt ist und ich das nachtragen muss, ist ja in Ordnung, aber 
dass ich bei Syntax Check über 20 und mehr Fehler stolpere, die nix mit 
meinen Änderungen zu tun haben, finde ich schon sehr komisch.

Kann ich denn im eigentlichen Design Fehler gemacht haben, die sich hier 
fortsetzen?
Aber der Syntaxcheck des Designs ist fehlerfrei, läßt sich auch umsetzen 
und ein Bitstream erhalte ich auch. Programmiert habe ich es auch schon, 
nur leider wird eine Teilfunktion (nämlich ein IDDR2) nicht richtig 
ausgeführt und ich wollte nun mit Hilfe der Simulation schauen, woran es 
liegt. NUr deswegen bin ich auf das Problem gestoßen.

DANKE!

PS: Hier nochmal der VOllständigkeithalber mein Design:
entity LVDS_CLOCK_IN is
    Port ( AFE_CLK_P : in  STD_LOGIC;
          AFE_CLK_N : in  STD_LOGIC;
        AFE_DAT_P : in  STD_LOGIC;
           AFE_DAT_N : in  STD_LOGIC;
        DCM_RESET : in STD_LOGIC;
        DDR_RESET : in STD_LOGIC;
        SET_DDR : in STD_LOGIC;
        CLOCK_OUT0 : out STD_LOGIC;
        DATA_OUTQ0 : out STD_LOGIC;
        DATA_OUTQ1 : out STD_LOGIC);
end LVDS_CLOCK_IN;

architecture Behavioral of LVDS_CLOCK_IN is

signal CLOCK_INT : STD_LOGIC;
signal CLOCK_OUT0_int : STD_LOGIC;
signal CLOCK_OUT180_int : STD_LOGIC;
signal CLKFB_in : STD_LOGIC;
signal DATA_INT : STD_LOGIC;

constant IDDR2_CE : STD_LOGIC := '1';

begin

A : IBUFGDS
      port map (O => CLOCK_INT,
                I => AFE_CLK_P,
                IB => AFE_CLK_N);
           
B : IBUFDS
      port map (O => DATA_INT,
                I => AFE_DAT_P,
                IB => AFE_DAT_N);

C : BUFG
      port map (I=>CLOCK_OUT0_int,
                O=>CLOCK_OUT0);

D : BUFG
      port map (I=>CLOCK_OUT0_int,
                O=>CLKFB_in);

E : DCM_SP
   generic map (
      CLKDV_DIVIDE => 2.0, --  Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
                           --     7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
      CLKFX_DIVIDE => 2,   --  Can be any interger from 1 to 32
      CLKFX_MULTIPLY => 2, --  Can be any integer from 1 to 32
      CLKIN_DIVIDE_BY_2 => FALSE, --  TRUE/FALSE to enable CLKIN divide by two feature
      CLKIN_PERIOD => 6.25, --  Specify period of input clock
      CLKOUT_PHASE_SHIFT => "NONE", --  Specify phase shift of "NONE", "FIXED" or "VARIABLE" 
      CLK_FEEDBACK => "1X",         --  Specify clock feedback of "NONE", "1X" or "2X" 
      DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- "SOURCE_SYNCHRONOUS", "SYSTEM_SYNCHRONOUS" or
                                             --     an integer from 0 to 15
      DLL_FREQUENCY_MODE => "LOW",     -- "HIGH" or "LOW" frequency mode for DLL
      DUTY_CYCLE_CORRECTION => TRUE, --  Duty cycle correction, TRUE or FALSE
      PHASE_SHIFT => 0,        --  Amount of fixed phase shift from -255 to 255
      STARTUP_WAIT => FALSE) --  Delay configuration DONE until DCM_SP LOCK, TRUE/FALSE
   port map (
      CLK0 => CLOCK_OUT0_int,     -- 0 degree DCM CLK ouptput
      CLK180 => CLOCK_OUT180_int, -- 180 degree DCM CLK output
      CLK270 => open, -- 270 degree DCM CLK output
      CLK2X => open,   -- 2X DCM CLK output
      CLK2X180 => open, -- 2X, 180 degree DCM CLK out
      CLK90 => open,   -- 90 degree DCM CLK output
      CLKDV => open,   -- Divided DCM CLK out (CLKDV_DIVIDE)
      CLKFX => open,   -- DCM CLK synthesis out (M/D)
      CLKFX180 => open, -- 180 degree CLK synthesis out
      LOCKED => open, -- DCM LOCK status output
      PSDONE => open, -- Dynamic phase adjust done output
      STATUS => open, -- 8-bit DCM status bits output
      CLKFB => CLKFB_in,   -- DCM clock feedback
      CLKIN => CLOCK_INT,   -- Clock input (from IBUFG, BUFG or DCM)
      PSCLK => open,   -- Dynamic phase adjust clock input
      PSEN => open,     -- Dynamic phase adjust enable input
      PSINCDEC => open, -- Dynamic phase adjust increment/decrement
      RST => DCM_RESET        -- DCM asynchronous reset input
   );

F : IDDR2
generic map (
   DDR_ALIGNMENT => "NONE", -- Sets output alignment 
                            -- to "NONE", "C0" or "C1"
   INIT_Q0 => '0', -- Sets initial state of the Q0  
                   --   output to ?0? or ?1?
   INIT_Q1 => '0', -- Sets initial state of the Q1 
                   --   output to ?0? or ?1?
   SRTYPE => "SYNC") -- Specifies "SYNC" or "ASYNC" 
                      --   set/reset
port map (
   Q0 => DATA_OUTQ0, -- 1-bit output captured with C0 clock
   Q1 => DATA_OUTQ1, -- 1-bit output captured with C1 clock
   C0 => CLOCK_OUT0_int, -- 1-bit clock input
   C1 => CLOCK_OUT180_int, -- 1-bit clock input
   CE => IDDR2_CE, -- 1-bit clock enable input
   D => DATA_INT,   -- 1-bit DDR data input
   R => DDR_RESET,   -- 1-bit reset input
   S => SET_DDR    -- 1-bit set input
);

         
end Behavioral;

Ich möchte einfach einen LVDS Takt und einen LVDS Datenstream einlesen 
und dann in 3,3V Pegeln an drei Ausgängen wieder messbar machen. Der 
Ausgangstakt des DCM ist messbar und plausibel, nur die beiden Ausgänge 
des IDDR2 spucken noch nix aus.

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

Bewertung
0 lesenswert
nicht lesenswert
> constant AFE_CLK_Pperiod := 10 ns; --  <== FEHLER
Jetzt sehe ich es: die Konstante hat keinen Typ :-o

Da es eine Zeit ist, könnte man das so machen:
constant AFE_CLK_Pperiod : time := 10 ns; --  <== FEHLER

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1000 DANK !!!
Oh je oh je... wo soll das nochmal hinführen mit mir, dem alten 
Programmiergenie :D

Ok, ich hoffe ich kann das jetzt Untersuchen, wo mein Fehler im Design 
liegt....

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas schrieb:
> 1000 DANK !!!
> Oh je oh je... wo soll das nochmal hinführen mit mir, dem alten
> Programmiergenie :D

Naja, Programmieren und Hardware beschreiben sind zwei völlig 
verschiedene Dinge. Sieht nur ähnlich aus...

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das es zwei Paar Schuhe sind weiß ich... aber die Tätigkeit ist in 
meinen Augen sehr ähnlich. Ich sitze vorm Rechner und mache mir 
Gedanken, wie ich dieses und jenes Problem in eine bestimmte Syntax 
zwängen kann.
Ich mag es lieber Hardware mit Platinen und fertigen Bauelementen zu 
gießen :)

DANKE für Eure Hilfe!

Ich mußte jetzt erstmal ISE neu installieren, weil mir bei einer 
vorangegangenen Simulation etwas abgeschmiert ist. Ich hoffe ich kann 
den Testbench jetzt testen und meinen Fehler beim IDDR2 finden :)

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
NUn hänge ich bei diesem Fehler :(

ERROR: no Simulation Engine found in the Transform Input that matches 
tb_IDDR2_Dataout_isim_beh.exe

Irgendwas scheint in meinem uhrsprünglichen Design noch falsch zu sein, 
denn darauf basiert ja der Testbench.

Autor: MichaM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich noch einmal.
Nachdem ich nun quasi von vorne anfangen muss, weil ich den Fehler in 
meinem Design nicht finde, hänge ich nun wieder an der LVDS 
Simulationsgeschichte.

Wenn ich einen LVDS Takt habe, habe ich ein _p und ein _n Pad als Takt, 
die dann über ein IBUFGDS aufgelöst werden. Also habe ich auch im 
Testbench zwei Pads, die dem Takt entsprechen. Diese beiden Pads habe 
ich dann wie folgt gesetzt:
AFE_CLK_P_process :process
   begin
    AFE_CLK_P <= '0';
    AFE_CLK_N <= '1';
    wait for AFE_CLK_P_period/2;
    AFE_CLK_P <= '1';
    AFE_CLK_N <= '0';
    wait for AFE_CLK_P_period/2;
   end process;

Nun kommt aber die Fehlermeldung, dass ich keinen Clock Port habe:
ERROR:HDLCompiler:245 - "tb_test2.vhd" Line 42. Binding entity lvds_clock_in does not have port clock

Wie kann ich dem Simulator sagen, dass der Takt sich aus zwei Pads 
zusammen setzt?

Der Syntax Check läuft problemlos durch, die Fehlermeldung taucht erst 
beim eigentlichen simulieren auf.

DANKE!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich hab das schon so simuliert. Allerdings mit ModelSim. Hast du 
denn die unisim Library mit drin?

In dem File, in dem du die IBUFGDS drin hast, musst du auch die Xilinx 
Lib drin haben:
library UNISIM;
use UNISIM.VComponents.all;

Autor: MichaM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die UNISIM ist mit eingebunden, sonst würde er ja auch in dem Topfile 
was zu meckern haben.

Ich bin gerade etwas ratlos, wie ich diesem Programm mitteilen soll, das 
er doch bitte diesen LVDS Takt hat.
Kann ich denn irgendwie den Takt (CLOCK_INT) nach dem IBUFGDS "anzapfen" 
und den Testbench nach diesem Signal laufen lassen? Ich könnte zwar 
einfach einen Takt annehmen (den resultierenden Takt der LVDS Signale 
kenne ich ja) und den IBUFGDS weglassen, aber dann muss ich ja immer zum 
simulieren alles umschreiben, was dann bei forgeschrittenem Design 
sicher sehr aufwändig wird...
Zumal ich dann bei LVDS Ausgängen wieder das gleiche Problem bekommen 
könnte.

DANKE!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du mal ModelSim XE Starter installieren, und schauen, ob es da 
klappt? Ich hab gerade nochmal geschaut, ich hab das genauso simuliert, 
und das hat funktioniert. Hatte zwar hinter den differenziellen 
Eingängen direkt einen DCM, aber der hat auch nur einen IBUFGDS am 
Eingang dann.
Oder kannst du das ganze Projekt mal zippen und reinstellen? Also nur 
die Source Files, dann schau ich mal im ModelSim.

Autor: MichaM (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Achso, hab ich noch gar nicht beachtet... ich habe hinter dem IBUFGDS 
auch einen DCM hängen, also hat der das schon integriert?
Muss ich mal schauen, ob ich einen DCM mit diff. Eingängen finde. Hab 
das bisher immer mit einen extra IBUFGDS gelöst.

Im Anhang die beiden Dateien... das Design File (ist nur eins) und der 
dazugehörige Testbench.

MfG & DANKE

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also den DCM kann man im Core-Generator auf differenziellen Eingang 
stellen.

Autor: Christian R. (supachris)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also ModelSim XE simuliert das erst mal problemlos. Muss irgendwie an 
ISIM liegen.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein wenig mit Modelsim rumprobiert und nun funktioniert es.

Aber ich habe noch zwei kleinere Fragen:
- Wieso speichert Modelsim, wenn ich die Parameter der Takte und 
Einsgangssignale festelege, diese Werte nicht? Ich gehe meinetwegen mit 
Rechtsklick - Clock und gebe alles ein. Wenn ich dann wieder einen 
Rechtsklick mache, steht alles wieder auf Standard. Sehr nervig, wenn 
man nur eine kleine Änderung machen kann.

- Wie komme ich nochmal in den DCM Wizzard? Ich suche schon eine ganze 
Weile, habe ihn auch schon mal benutzt, aber ich finde ihn einfach nicht 
mehr. Auch das Tutorial, was ich damals genutzt habe und wo drin stand, 
ist scheinbar offline.

DANKE!!!

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: Kannst du dir in deiner Simulation den Taktaussetzer bei ca. 50ps 
erklären? Dieses Bild stellt sich auch ab und zu bei mir ein... gibt es 
dafür eine Erklärung?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu deinen Fragen:

1. Was für Takte und Eingangssignale? Die werden in der TestBench in 
VHDL beschrieben. Kann man zwar auch per forca machen, ist aber etwas 
unschön. Und das VHDL bleibt ja gespeichert. Desweiteren kannst du dir 
eine .do Datei schreiben, die die Simulation startet, die Signale in das 
Wave Fenster einträgst usw.

2. Im ISE New Source -> IP Core

3. Die Taktaussetzer sind normal bei dem DCM, da initialisiert sich das 
DIng, bzw. die DLL da drin rastet ein. Deswegen ist da ein LOCK Ausgang 
dran, der zeigt an, dass der DCM Takt stabil ist. Hab ich extra deswegen 
mit ins Bild reingenommen

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem TestBench hab ich noch nicht hinbekommen. Da muss ich gleich 
nochmal schauen, dass ich meine Testbench vhdl Datei zum laufen bekomme. 
Habe es bisher immer über force/clock gemacht, so wie es in diversen 
Tutorials gemacht wird. Ein Tutorial mit Testbench habe ich noch nicht 
gefunden, werde danach nochmal intensiver suchen.

Vielen Dank für deine umfassende Hilfe!!!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab einfach deine Testbench genommen, funktioniert doch einwandfrei. 
Nur die anderen Eingangssignale musst du dann selbst hinzufügen (bei 
"Place Stimulus here"

Meinetwegen

nWE <= '0';
Data <= x"0000";

wait for rising_edge(CLK);

nWE <= '1';
Data <= (others => 'Z');

wait für 200 ns;

....


So mal als fingiertes Beispiel....

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, aber wie bekomme ich den Testbench simuliert.
Ich kann ihn öffnen, aber wie kann ich Modelsim sagen, dass er die 
ganzen Simulationsparameter und waveforms aus der Datei nehmen soll?

Ist sicher eine ganz simple Sache, aber ich komm gerade nicht drauf.

Du hast in deinem Screen ja die tb_test3 im workspace drin, nicht mal 
das schaffe ich.

DANKE!!!

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okich habs... hatte vergessen den TEstbench dem Projekt inzuzufügen... 
mal schauen wie ich den jetzt gestartet bekomme :)

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am besten eine .do Datei schreiben:

vsim work.tb_test3 -t 1ps
add wave *
run 20000ns

Und die .do Datei auch dem Projekt hinzufügen und dann einfach Execute.

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.