www.mikrocontroller.net

Forum: FPGA, VHDL & Co. DCM und Ram Simulieren


Autor: Fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Habe zwar schon einen Beitrag zu diesen Thema im Forum gefunden 
allerdings konnte ich mein Problem auch mit diesen nicht lösen. Ich 
verwende in meinen Desing eine DCM von Xilinx und ein Blockram und würde 
beides gerne in Modelsim simulieren. Habe dazu in meine do file die vhdl 
Files des Rams und der DCM dazugenommen und in der Testbench folgende 
Zeilen einegefügt:

library UNISIM;
use UNISIM.Vcomponents.ALL;

Wenn ich nun mein do fiole ausführe erhalte ich von der Testbench zwar 
den 40Mhz Takt aber mein mit der dcm erzeugte 80MHz takt kommt nicht!?

Muss ich sonst noch etwas beachten wenn ich die dcm simulieren muss? 
Habe gelesen das man die Zeit auf 1ps stellen muss?!

Danke im vorhinein für die Hilfe.

MFG Fresh

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Normalerweise sollten DCM und Blockram sich ohne Probleme simulieren 
lassen, wobei mir jetzt nicht klar ist, wofür Du die do Files brauchst.

Nach meiner Erfahrung muss die Auflösung auf < 1ns gesetzt werden, es 
kommt aber eine Meldung, wenn man das nicht macht.
Ob deshalb die DCM nicht anschwingt oder simuliert, weiss ich nicht.
Vielleicht hast Du noch ein Problem mit dem Reset der DCM.

Wenn Du ein paar Quellen zeigt, dann kann man sie mit einem 
funktionierenden Design vergleichen. Vielleicht probierst Du zuerst auch 
nur mit einem einfachen Programm, das nur die DCM enthält.

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

Bewertung
0 lesenswert
nicht lesenswert
> Ich verwende in meinen Desing eine DCM von Xilinx und ein Blockram
Wie hast du die erzeugt?
Selber instantiiert oder mit dem Wizzard gerneriert?
Welche Version (Tools+Core)?

Autor: Wolfgang Kopp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Fresh,

man kann den DCM mit Modelsim einfach simulieren, mit UNISIM bist du da 
genau richtig.

Ggf. hast du den feedback (CLKFB) nicht richtig angeschlossen. Z.B.:

        DCM1: DCM
            generic map (
                CLKFX_DIVIDE    => 1,
                CLKFX_MULTIPLY  => 3,
                CLKIN_PERIOD    => 10.0)
            port map (
                CLKIN       => iClk,
                CLKFB       => CLK1,
                DSSEN       => GND,
                PSINCDEC    => GND,
                PSEN        => GND,
                PSCLK       => GND,
                RST         => sReset,
                CLK0        => CLK1,
                CLKDV       => open,
                CLKFX       => sClkFx1,
                LOCKED      => dcmlocked1);


Lass die Simulation auch etwas länger laufen, kann sein ,dass die DCM 
länger zum anlaufen benötigt...


Wolfgang

Autor: Fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Danke für die Antworten. Habe gerade ein Problem entdeckt welches 
vielleicht die Lösung ist. Ich habe die simulation Libs compeliert und 
dabei sagt er das es ModelSim6.3c benötigt. Ich arbeite aber mit 
QuestaSim 6.3e. Kann das ein Problem sein bei der Simulation?!?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, du musst die Libs schon mit deinem Simulator für deinen Simulator 
kopilieren. Die Quellcodes sind ja im Xilinx Programm-Ordner.

Autor: Fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber er zeigt mir im questasim im workspace bereits die ordner unisim 
und xilinxcorelib an und dort sollten die ja drin sein wie ich anehme 
oder?

MFG Fresh

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie Klaus oben schon schrieb: Hast du ueberprueft, dass dein Simulator 
mit '1ps' Aufloesung arbeitet?

Das scheint der DCM zu brauchen, sonst geht da gar nix. Ich arbeite hier 
unter Linux mit GHDL und habe bisher auch nicht heraus gefunden, wie ich 
den DCM zum 'funken' kriege. Ich hab' mir dann fuer Simulation einen 
eigenen DCM geschrieben...

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: Du hast doch auch ein BRAM instanziiert? Dann lass doch deinen 
Design mal mit der Eingangsclock laufen. Tut das BRAM dann? Das wuerde 
naemlich den Verdacht mit der Simulatoraufloesung erhaerten...

Autor: Fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Also ich habe in der Arbeit das Questasim 6.3e und zuhause eine ältere 
Modelsim Version. Mit der Modelsim Version funktioniert zumindest die 
DMC einmal. Wenn ich in der Arbeit die simulation Libs compiliere sagt 
er das er Questasim 6.3c benötigt. Wie bzw woher bekomme ich nun die 
Libs für die 6.3e version?! Danke im vorhinein!

MFG fresh

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Üblicherweise sind die Libraries nicht so spezifisch, dass sie genau 
eine bestimmte Version eines Simulators benötigen, deshalb wundert mich 
dies.

Compilierst Du die Libraries wirklich aus dem Quellcode?
Versuch es mit der allerneusten Version von Xilinx.
Du musst auch unterscheiden, es gibt mehrere Libraries, welche macht 
Probleme beim compilieren?
UNISIM ist wichtig für die funktionale Simulation.
Die Core-Generator Library ist für alles, was mit dem CoreGenerator 
erzeugt wird, der DCM core ist aber in UNISIM.
SIMPRIM ist nur für die Timing-Simulation, diese braucht man 
normalerweise nicht.

Man kann die Libraries auch getrennt compilieren, im Prinzip sollest Du 
nur UNISIM brauchen, die core generator library eventuell für das BRAM.

Autor: Fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Also meine DCM läst sich nun simulieren aber dafür kann ich den Blockram 
nichts reinschreiben. Habe nun eine eigene kleine Simulation für den 
Blockram erstellt und dort ist ständig die Adresse und die Daten 
angelegt und auch das WEN ist auf 1 gesetzt aber im Speicher steht nur 
"UUUUU...". Der Speicher ist mit den CoreGen generiert. Hätte eigtenlich 
aufgrund der vhd datei gedacht das er mit 0 initialisiert ist.

MFG fresh
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
-- synthesis translate_off
Library XilinxCoreLib;
-- synthesis translate_on
ENTITY ram_swconfig IS
  port (
  clka: IN std_logic;
  dina: IN std_logic_VECTOR(24 downto 0);
  addra: IN std_logic_VECTOR(9 downto 0);
  wea: IN std_logic_VECTOR(0 downto 0);
  clkb: IN std_logic;
  addrb: IN std_logic_VECTOR(9 downto 0);
  doutb: OUT std_logic_VECTOR(24 downto 0));
END ram_swconfig;

ARCHITECTURE ram_swconfig_a OF ram_swconfig IS
-- synthesis translate_off
component wrapped_ram_swconfig
  port (
  clka: IN std_logic;
  dina: IN std_logic_VECTOR(24 downto 0);
  addra: IN std_logic_VECTOR(9 downto 0);
  wea: IN std_logic_VECTOR(0 downto 0);
  clkb: IN std_logic;
  addrb: IN std_logic_VECTOR(9 downto 0);
  doutb: OUT std_logic_VECTOR(24 downto 0));
end component;

-- Configuration specification 
  for all : wrapped_ram_swconfig use entity XilinxCoreLib.blk_mem_gen_v2_7(behavioral)
    generic map(
      c_has_regceb => 0,
      c_has_regcea => 0,
      c_mem_type => 1,
      c_prim_type => 1,
      c_sinita_val => "0",
      c_read_width_b => 25,
      c_family => "spartan3",
      c_read_width_a => 25,
      c_disable_warn_bhv_coll => 0,
      c_write_mode_b => "READ_FIRST",
      c_init_file_name => "no_coe_file_loaded",
      c_write_mode_a => "READ_FIRST",
      c_mux_pipeline_stages => 0,
      c_has_mem_output_regs_b => 0,
      c_load_init_file => 0,
      c_xdevicefamily => "spartan3",
      c_has_mem_output_regs_a => 0,
      c_write_depth_b => 1024,
      c_write_depth_a => 1024,
      c_has_ssrb => 0,
      c_has_mux_output_regs_b => 1,
      c_has_ssra => 0,
      c_has_mux_output_regs_a => 0,
      c_addra_width => 10,
      c_addrb_width => 10,
      c_default_data => "0",
      c_use_ecc => 0,
      c_algorithm => 1,
      c_disable_warn_bhv_range => 0,
      c_write_width_b => 25,
      c_write_width_a => 25,
      c_read_depth_b => 1024,
      c_read_depth_a => 1024,
      c_byte_size => 9,
      c_sim_collision_check => "ALL",
      c_use_ramb16bwer_rst_bhv => 0,
      c_common_clk => 0,
      c_wea_width => 1,
      c_has_enb => 0,
      c_web_width => 1,
      c_has_ena => 0,
      c_sinitb_val => "0",
      c_use_byte_web => 0,
      c_use_byte_wea => 0,
      c_use_default_data => 0);
-- synthesis translate_on
BEGIN
-- synthesis translate_off
U0 : wrapped_ram_swconfig
    port map (
      clka => clka,
      dina => dina,
      addra => addra,
      wea => wea,
      clkb => clkb,
      addrb => addrb,
      doutb => doutb);
-- synthesis translate_on

END ram_swconfig_a;



Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fresh schrieb:
> Also meine DCM läst sich nun simulieren

und woran lag's?

Autor: Fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich habe aus den Xilinix heraus die Unisim Lib für meine Questasim 
Version generiert und jetzt läuft die DCM. Nachdem daher die Unisim geht 
verstehe ich aber nicht ganz warum der Ram nicht funktioniert. Ich teste 
das ganze dadurch das ich eine adresse anlege und daten und dann setzte 
ich das Wen für immer auf 1 aber im Memory steht immer uuuuuuuuu und das 
obwohl er als initwert doch 0 stehen haben sollte. Daher sieht man schon 
das die simulation nicht funktioniert. Hat jemand eine tip wie ich das 
Problem lösen kann?!

DANKE

MFG Fresh

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass kein Model für das BRAM eingebunden ist?
Man merkt dies nur an den Meldungen beim Starten der Simulation, die 
Simulation läuft trotzdem!

Autor: Fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Also ich bekomme wenn ich die Simulation starte leider nicht mal ne 
Fehlermeldung. Habe die Ausgabe von Questasim einmal kopiert.

MFG Fresh
do ramtest.do 
# Modifying modelsim.ini
# Modifying modelsim.ini
# ** Warning: (vlib-34) Library already exists at "work".
# QuestaSim vcom 6.3e Compiler 2008.02 Feb  2 2008
# -- Loading package standard
# -- Loading package std_logic_1164
# -- Loading package numeric_std
# -- Loading package vcomponents
# -- Compiling entity dcm8024
# -- Compiling architecture behavioral of dcm8024
# QuestaSim vcom 6.3e Compiler 2008.02 Feb  2 2008
# -- Loading package standard
# -- Loading package std_logic_1164
# -- Compiling entity ram_swconfig
# -- Compiling architecture ram_swconfig_a of ram_swconfig
# -- Loading package textio
# -- Loading package std_logic_arith
# -- Loading package std_logic_unsigned
# -- Loading entity blk_mem_gen_v2_7
# QuestaSim vcom 6.3e Compiler 2008.02 Feb  2 2008
# -- Loading package standard
# -- Loading package std_logic_1164
# -- Loading package numeric_std
# -- Compiling entity test
# -- Compiling architecture rtl of test
# -- Loading entity ram_swconfig
# -- Loading package vcomponents
# -- Loading entity dcm8024
# QuestaSim vcom 6.3e Compiler 2008.02 Feb  2 2008
# -- Loading package standard
# -- Loading package std_logic_1164
# -- Loading package vcomponents
# -- Compiling entity test_tb
# -- Compiling architecture dut of test_tb
# -- Compiling configuration test_tb_dut_cfg
# -- Loading entity test_tb
# -- Loading architecture dut of test_tb
# -- Loading package numeric_std
# -- Loading entity test
# vsim -lib work -t 1ps test_tb 
# ** Note: (vsim-3813) Design is being optimized due to module recompilation...
# Loading std.standard
# Loading ieee.std_logic_1164(body)
# Loading unisim.vcomponents
# Loading work.test_tb(dut)#1
# Loading ieee.numeric_std(body)
# Loading work.test(rtl)#1
# Loading std.textio(body)
# Loading ieee.std_logic_arith(body)
# Loading ieee.std_logic_unsigned(body)
# Loading work.ram_swconfig(ram_swconfig_a)#1
# Loading ieee.std_logic_textio(body)
# Loading xilinxcorelib.blk_mem_gen_v2_7(behavioral)#1
# Loading xilinxcorelib.blk_mem_gen_v2_7_output_stage(behavioral)#1
# Loading work.dcm8024(behavioral)#1
# Loading unisim.bufg(bufg_v)
# Loading unisim.ibufg(ibufg_v)
# Loading ieee.vital_timing(body)
# Loading ieee.vital_primitives(body)
# Loading unisim.vpkg(body)
# Loading unisim.dcm(dcm_v)#1
# Loading unisim.dcm_clock_divide_by_2(dcm_clock_divide_by_2_v)
# Loading unisim.dcm_maximum_period_check(dcm_maximum_period_check_v)
# Loading unisim.dcm_clock_lost(dcm_clock_lost_v)
# .main_pane.mdi.interior.cs.vm.paneset.cli_0.wf.clip.cs.pw.wf
# .main_pane.workspace.interior.cs.nb.canvas.notebook.cs.page8.cs
# .main_pane.variables.interior.cs
# .main_pane.signals.interior.cs
run 2000ns

Autor: Fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bekomme geradeinmal folgende Meldung wenn ich beginne den Ram zu 
beschreiben:
# ** Note: Block Memory Generator CORE Generator module is using a behavioral model for simulation which will not precisely model memory collision behavior.
#    Time: 5237500 ps  Iteration: 4  Instance: /test_tb/dut/xilinx_blockram_inst/u0

Autor: Fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Habe gerade entdeckt das ich das setzen auf den init wert deaktiviert 
hatte und habe es nun aktiviert:
# Loading xilinxcorelib.blk_mem_gen_v2_7(behavioral)#1
# ** Note:  Block Memory Generator CORE Generator module loading initial data...
#    Time: 0 ps  Iteration: 0  Instance: /test_tb/dut/xilinx_blockram_inst/u0

Allerdings steht weiterhin nicht 0 oder 1 sondern U drin.

MFG Harald

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mit dem Core Generator hab' ich noch nie was gemacht. Hast du mal 
versucht, aus den Xilinx Templates ein BRAM 'normal' zu instantiieren? 
So mache ich das immer. Und ich hatte bisher nur eine Stolperfalle: 
ENA_A und ENA_B muessen sowohl beim lesen als auch beim schreiben aktiv 
sein.
In deinem Bsp. oben sehe ich nur WEA/WEB. Wo ist da das 'allgemeine' RAM 
enable?

Autor: Fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Das allgemeine Ram Enable kann man beim core generator auf always enable 
stellen daher braucht man es nicht mehr extra. Das mit den Ram selber 
zusammenbauen habe ich auch schon gehört aber ich brauche ein ram mit 
1023x25 das gibts natürlich nicht standardmässig!?

MFG Fresh

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst dir aber 2 RAMs 1024x16 (bevorzugt) oder 2 RAMs 512x32 
instantiieren, wo ist das Problem? Das ganze in eine entity verpackt, 
dann sieht das nach aussen wie 1024x32 aus.
Und da du ja die UNISIM compiliert hast (dein DCM tut ja jetzt) ist das 
m.M. nach einen Versuch wert. Vlt. hat dein Simulator ein Problem mit 
dem Coregen-Zeugs...

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Modell wird aus xilinxcorelib geladen, das sieht man, soweit sollte 
das in Ordnung sein.
Ich denke auch nicht, dass das Modell einen Fehler hat, deshalb denke 
ich, dass das Umstellen auf direkte BRAMs nichts bringt.

Mir ist noch nicht ganz klar, hast Du im Core Generator Startwerte für 
das RAM angegeben, und erwartest dass diese jetzt gelesen werden?
Oder schreibt Du ins BRAM und liest trotzdem nichts zurück?
Was auffällt ist, dass im Modell

c_init_file_name => "no_coe_file_loaded",

steht, aber dazu weiss ich nicht viel.

Der Wert 'U' steht jedenfalls für uninitialisiert.
Vielleicht zeigst Du einmal ein paar VHDL Files und eventuell einen 
Screenshot des Simulationsvorgangs.

Autor: fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Also ich habe derzeit eine Testbench laufen die nur aus einer DCM und 
den Ram besteht:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity test is
  port (
    clk40   : in std_logic;             -- System clock
    reset_b : in std_logic;             -- Aynchronous reset

    dina  : in std_logic_vector(24 downto 0);
    addra : in std_logic_vector(9 downto 0);
    wea   : in std_logic_vector(0 downto 0)
    );
end test;

architecture rtl of test is

  signal addrb : std_logic_vector(9 downto 0) := (others => '0');
  signal doutb : std_logic_vector(24 downto 0);
  
  -- signals for general use
  signal reset_n   : std_logic;
  signal reset_dcm : std_logic;
  signal clk80     : std_logic;
  signal clk40buf  : std_logic;
  signal clk24     : std_logic;

    
begin

  -- Resetsignal for the DCM module
  reset_dcm <= not reset_b;

  xilinx_blockram_inst : entity work.ram_swconfig 
    port map (
      clka  => clk80,
      dina  => dina,
      addra => addra,
      wea   => wea,
      clkb  => clk80,
      addrb => addrb,
      doutb => doutb);

  xilinx_dcm8024_inst : entity work.dcm8024
    port map (
      CLKIN_IN        => clk40,
      RST_IN          => reset_dcm,
      CLKFX_OUT       => clk24,
      CLKIN_IBUFG_OUT => clk40buf,
      --CLK0_OUT => clk40s,
      CLK2X_OUT       => clk80,
      LOCKED_OUT      => reset_n);
  

end rtl;

In der testbench wir einfach ab einen gewissen Zeitpunkt das Wen SIgnal 
un die Daten sowie die Adresse gesetzt und ich würde dann gerne im Ram 
den Wert sehen.
Testbench:
library ieee;
use ieee.std_logic_1164.all;
library UNISIM;
use UNISIM.Vcomponents.ALL;
library XilinxCoreLib;

architecture dut of test_tb is

  component test
    port (
      clk40   : in std_logic;
      reset_b : in std_logic;
      dina    : in std_logic_vector(24 downto 0);
      addra   : in std_logic_vector(9 downto 0);
      wea     : in std_logic_vector(0 downto 0));
  end component;

  -- component ports
  signal clk40   : std_logic := '0';
  signal reset_b : std_logic := '0';
  signal dina    : std_logic_vector(24 downto 0):= (others => '0');
  signal addra   : std_logic_vector(9 downto 0) := (others => '0');
  signal wea     : std_logic_vector(0 downto 0) := (others => '0');


begin  -- dut

  -- component instantiation
  DUT: test
    port map (
      clk40   => clk40,
      reset_b => reset_b,
      dina    => dina,
      addra   => addra,
      wea     => wea);

  -- clock generation
  clk40   <= not clk40 after 12.5 ns;
  reset_b <= '1' after 250 ns;
  
  process
  begin  -- process
    wea <= "0";
    wait for 50000 ns;
    dina  <= (others => '1');
    addra <= "0000000001";
    wea   <= "1";
    wait;
  end process;

end dut;

Die Adresse und die Daten sowie das Wen Signal werden auch richtig 
gesetzt aber im memory_i des Rams steht nicht drin außer UUUUUUU. 
Vielleicht sieht ja jemand den Fehler sofort und kann ihn mir bitte 
mitteilen?! DANKE

MFG Fresh

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dazu müßte man wissen, wie das interne Modell des BRAMs funktioniert, 
aber ich würde zumindest einmal die Adressen zählen lassen, oder 
zumindest ändern.

Die internen Daten oder Variblen eines Simulationsmodell anzuschauen, 
das man nicht selbst geschrieben hat oder nicht kennt, ist sicher nicht 
der richtige Weg um auf die Funktion zu schließen.
Schreibe eine Testbench die das Verhalten von AUSSEN beobachtet, also 
lege verschiedene Daten an, schreibe sie hinein und schau nach, ob das 
sie beim Auslesen wieder auftauchen.
Und irgendwo steht auch die Warnung, dass das Modell Kollisionen nicht 
richtig behandelt.
Man kann jedenfalls davon ausgehen, dass sich ein BRAM simulieren lässt, 
Du bist sicher nicht der erste, der das macht :-)

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aehm, was moechtest du mit der TB eigentlich sehen? Dein Port B ist 
aussen gar nicht angeschlossen, an deinen Port A legst du eine Adresse, 
Daten sowie das write-enable an. Und was erwartest du da jetzt auf 
welchen Signalen?

Dein RAM soll mit der rising_edge der DCM clock arbeiten, richtig? Dann 
synchronisier dich in der TB mal auf die Clock80 falling_edge ein, dann 
lass mit jeder Clock mal die Adresse von 0 bis 1023 hochzaehlen, 
gleichzeitig aenderst du die Daten (einfach mal von 0 aus hochzaehlen). 
Das ganze einmal mit WEA=1 und danach nochmal mit WEA=0.
Da die Clock80 nur in der Component verfuegbar ist, kannst du auch die 
TB clock mit 40MHz nehmen und mal direkt ans BRAM anschliessen.

Und dann sollte das eigentlich funktionieren, zumindest mache ich das so 
beim instantiieren von BRAMs...

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: Deine TB sollte auch eine entity ohne I/O ports haben

Autor: manne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wurde das Problem gelöst? Ich hänge an demselben Ding....

Autor: manne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die library legt wohl aus Performancegründen den Speicherinhalt nicht 
nach außen.

Lösung:
In der Datei: 
C:\Xilinx\11.1\ISE\vhdl\src\XilinxCoreLib\BLK_MEM_GEN_V3_3.vhd

DEBUG auf 1 setzen und mit Modelsim neu compilieren

(memory_i <= memory when DEBUG=1;)

Autor: Fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Also das mit den Debug funktioniert bei der BLK_MEM_GEN_V2_7.vhd 
zumindest bei mir nicht. Ich habe mir damals einfach eine Testbench 
geschrieben die in den Ram schreibt und dann vom Ram liest und es 
funktioniert. Habe dann im ganzen Design ach getestet und es geht auch. 
Ebenfalls konnte ich es schon in der Hardware erfolgreich testen.

MFG fresh

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.