Forum: FPGA, VHDL & Co. Xilinx Webpack 11 -> post route simulation + package


von Heiko L. (drcaveman)


Lesenswert?

Hallo!

Ich habe eine Testbench geschrieben und sie funktioniert auch unter der 
"Behavioral Simulation".

Die "Post-Route Simulation" funktioniert jedoch nicht, da der Project 
Navigator mein eigenes Package nicht kompiliert (die "component", die 
ich in der Testbench teste benötigt das Package aber)- das vhdl- File 
ist nicht in die "Post-Route Simulation"- Dateiliste eingebunden und ich 
finde auch keinen Weg, wie ich das da einfügen kann.

Wie gesagt, die Package- vhdl- Datei wird nur in der "Post-Route 
Simulation" nicht eingebunden- überall anders schon.

Darf man keine Packages in der "Post-Route Simulation" benutzen?
Wie soll das sonst gehen?

von Christian R. (supachris)


Lesenswert?

Bei der Post Rote Simulation wird nur noch ein einziges File für dein 
gesamtes Design simuliert: <designname>_timesim.vhd. Da sind dann keine 
Packages usw. mehr, sondern nur noch die Xilinx Primitiven wie LUTs, 
Slices....

von Heiko L. (drcaveman)


Lesenswert?

Kann man denn der Post- Route Simulation irgendwie ein fertiges Kompilat 
aus der Synthese unterjubeln?

von Christian R. (supachris)


Lesenswert?

Hmmm? Also in der Post-Route Simu kann man neben dem _timesim.vhd 
natürlich auch andere Sachen simulieren, als zum Beispiel weitere 
Designs, Modelle externer Bausteine usw.
Was genau willst du denn machen?

von Heiko L. (drcaveman)


Lesenswert?

Ich habe einen Mux gebaut und simuliert. Synthese klappt auch- jetzt 
wollte ich schauen, wie das aussieht, wenn es denn mal "in Hardware 
gegossen" wurde.
Ich benutze jedoch ein selbst definiertes Package in meinem Mux und die 
vhdl Datei, die dieses Package enthält wird bei der Post- Route 
Simulation nicht mit eingebunden und somit funktioniert das kompilieren 
nicht.

von Christian R. (supachris)


Lesenswert?

Hm, verstehe ich noch nicht ganz. Dein eigenes Package ist doch nur für 
die Synthese relevant. Das wird doch dann umgesetzt in das, was auf dem 
Chip verfügbar ist. Als Simulations-Modell des Designs für die Post 
Place&Route Simulation gibts nur noch eine einzige Datei, die dein 
komplettes Design incl. aller Elemente enthält, so wie sie auf die 
Ziel-Hardware umgesetzt wurden. Und diese _timesim.vhd Datei lässt sich 
mit ISim oder Modelsim simulieren, denn da ist alles enthalten, was zum 
kompilieren nötig ist. Natürlich muss Modelsim die Xilinx-Bibliotheken 
kennen, um die ganzen Xilinx-Primitiven zu kompilieren.

Kannst du dein Design mal gezippt posten?

von Heiko L. (drcaveman)


Angehängte Dateien:

Lesenswert?

Das benötigte Package benutze ich auch in meiner Testbench und da wird 
es nicht mit "einkompiliert"- somit stolpert er in der Testbench schon 
bei "use WORK.<PKG>.ALL;".

Die Dateien hängen gezippt im Anhang.

von Christian R. (supachris)


Lesenswert?

Achso, jetzt versteh ich die Geschichte. Also wenn du sowas mit 
simulieren willst, musst du deine MUX_PKG in eine Library kompilieren. 
Aber bei der Timing-Simulation wirst du ein Problem bekommen. Ich hab 
das mal getan, eine Lib in Modelsim mit deinem Package, aber die 
Simulation klappt trotzdem nicht, weil die Typen nicht zueinander 
passen....wenn du dir die Mux_out_timesim.vhd ansiehst, siehst du, dass 
Xilinx das aufgelöst hat:
1
entity mux_out is
2
  port (
3
    reg_out : out STD_LOGIC_VECTOR ( 7 downto 0 ); 
4
    regs_in : in STD_LOGIC_VECTOR2 ( 31 downto 0 , 7 downto 0 ); 
5
    reg_adr : in STD_LOGIC_VECTOR ( 4 downto 0 ) 
6
  );
7
end mux_out;

Und dann passt dein selbst definierter Typ nicht mehr korrekt dazu:

# ** Failure: (vsim-3807) Types do not match between component and 
entity for port "regs_in".
#    Time: 0 ps  Iteration: 0  Instance: /mux_out_tb/inst_mux_out File: 
netgen/par/mux_out_timesim.vhd Line: 44

Allerdings weiß ich auch nicht, wie man das auflösen kann jetzt.

Lothar, weißt du was?

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


Lesenswert?

> Lothar, weißt du was?
Von Post-Routing-Simulationen lasse ich die Finger weg. U.a. deshalb, 
weil da immer wieder mal so ein Gebastel nötig war. Schon bei der 
automatisch erstellten Verhaltens-Testbench gibt es jedesmal Probleme, 
wenn nicht std_logic am Port zu finden ist.

Wenn nötig knacke ich die Timing-Nuss mit der statischen Timinganalyse 
und passenden Constraints. Das klappt ganz gut und ist m.E. wesentlich 
durchschaubarer und reproduzierbarer.
Also:
Simulation für das Verhalten
Timinganalyse für die Implementierung

von Duke Scarring (Gast)


Lesenswert?

> Allerdings weiß ich auch nicht, wie man das auflösen kann jetzt.
Ich baue da dann immer einen Wrapper drum.
In dem steht u.a. sowas:
1
  slv2_to_slv_mapping : process (sig_slv2) is
2
  begin  -- process slv2_to_slv_mapping
3
    if NETLIST_SIM then
4
      for N in sig'range loop
5
        for M in sig'range loop
6
          sig_slv2(N, M) <= sig(N)(M);
7
        end loop;  -- M
8
      end loop;  -- N
9
    end if;
10
  end process slv2_to_slv_mapping;

Duke

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.