Forum: FPGA, VHDL & Co. Unbekannter Zustand in Testbench -> StX


von Bernd S. (Firma: Uni) (stuerzibernd)


Lesenswert?

Hallo,

ich hab das Problem, dass mir das Simulationstool sagt, dass meine 
Signale im
Modul DUT einen unbekannten Zustand (StX) haben.
Ich vermute, dass daher meine testbench zum IP-Core nicht funkioniert.

LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;

ENTITY Decoder_Test IS
END ENTITY Decoder_Test;


ARCHITECTURE Test OF Decoder_Test IS

  component TbdViterbi is
    port (
      iClk                : in  std_ulogic;
      inResetAsync        : in  std_ulogic;
      iData0              : in  std_ulogic;
      iData1              : in  std_ulogic;
      oData               : out std_ulogic;
      oValid              : out std_ulogic);
    end component;

  signal Clk             : std_ulogic;
  signal ResetAsync      : std_ulogic := '0';
  signal DataOut         : std_ulogic;
  signal ValidOut        : std_ulogic;

  signal in0            : std_ulogic;
  signal in1            : std_ulogic;

  constant t    : time := 10 ns;

BEGIN

  Clock: process
  begin
    Clk <= '0'; wait for t/2;
    Clk <= '1'; wait for t/2;
  end process;


  DUT: entity work.TbdViterbi(Rtl)
      port map (
      iclk         => Clk,
      inResetAsync => ResetAsync,
      iData0        => in0,
      iData1       => in1,
      oData        => DataOut,
      oValid       => ValidOut);

 Test1_2: process
 begin
    wait for t;
    ResetAsync <= '1';
    in0 <= '1';
    in1 <= '1';
    wait for t;
    din0 <= '1';
    din1 <= '0';
    wait for t;
    din0 <= '1';
    din1 <= '0';
    wait for t;
    din0 <= '0';
    din1 <= '0';
    wait for t;
    din0 <= '1';
    din1 <= '0';
    wait for t;
    ResetAsync <= '0';
  end process;


END ARCHITECTURE Test;


Das Modul DUT: entity work.TbdViterbi(Rtl) ist eine Schnittstelle um den 
Verilog-IP Core auf VHDL-Signale zu casten. Der funktioniert. Hab ihn 
schon so in einer anderen Signalverarbeitungskette eingesetzt.

Wäre dankbar, wenn mir jemand helfen könnte. Ich seh's irgendwie nicht.

von jw (Gast)


Lesenswert?

Fällt auf den ersten Blick nix auf (außer: was ist "din0","din1"?).

Da brauchts ein paar mehr Informationen. Erstmal ein Screenshot der 
Simulation, dann Infos zum core.

von Klaus Falser (Gast)


Lesenswert?

Zu welcher Zeit wird das Signal zu 'X'?
Wenn es zum Zeitpunkt t=0 ist, dann liegt es daran, dass die Signale 
nicht initialisiert sind.
Am besten in der Testbench alle Signale, auch Clk, die in das Modul 
gehen, initialisieren.

von Gast (Gast)


Lesenswert?

Als erstes würd ich mal den Testbench checken ob der in der Sim auch 
tatsächlich nur St0/St1 liefert. Dann schau dir alle Inputs im DUT 
(nicht aussen!) an, ob die alle definiert sind. Wenn das nicht hilft, 
verfolge das betreffende Signal in der Simulation rückwärts, irgendwann 
wirst du ein Teil finden wo StZ reingeht und folgerichtig StX rauskommt.

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.