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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.