Forum: FPGA, VHDL & Co. Ein weiterer komischer Fehler in ISE


von The Scientist (Gast)


Lesenswert?

Nabend,

nachdem sich der Fehler von gestern auf einfache aber irgendwie dämliche 
Weise, nämlich den Projektdateiordner aufräumen, entfernen lies, hab ich 
jetzt ein anderes Problem. Um sicher gehen zu können, dass es hinterher 
keine Probleme mit Latenzen gibt, wollte ich eine Post-Fit Timing 
Simulation durchführen. Dabei tritt folgender Fehler auf:
1
ERROR:Simulator:29 - at 0 ns : in tbTimeSimDummyFree(testbench_arch), file
2
   C:/Dokumente und Einstellungen/Gerti/Eigene Dateien/CPLD
3
   Projekte/logicAnalysator/tbTimeSim.vhd: Default port map for entity
4
   logicAnalysator to component logicAnalysator connects OUT mode local port
5
   addressOut of the component to INOUT mode port of the entity.

Was bedeutet das? Also dieser addressOut ist sowohl in der 
logicAnalysator.vhd als out definiert, als auch in der Testbench-Datei 
tbTimeSim.vhd. Wo genau liegt da der Fehler, der auch nur beim der 
TimeSim auftritt.

mfg TheScientist

von Matthias M. (frost)


Lesenswert?

Wenn ich das richtig interpretiere was Du da geschrieben hast, hast Du 
zwei Out-Ports mit einander verbunden... Das würde zu einem 
undefinierten Signal führen.
Modelsim würde das schlucken. Wie das bei ISE ist, weiß ich nicht.

von The Scientist (Gast)


Lesenswert?

Mir wäre jedenfalls nicht klar wie, wenn ich zwei out-Ports verbunden 
hätte. Außerdem: Wie kommt der auf InOut?? Hier mal die Sachen um die es 
geht:

logicAnalysator.vhd:
1
entity logicAnalysator is
2
    port(extClk: in STD_LOGIC;
3
      trg: in STD_LOGIC;
4
         arm: in STD_LOGIC;
5
      extRst: in STD_LOGIC;
6
      nxtByte: in STD_LOGIC;
7
      highLowByte: in STD_LOGIC;
8
      dataIn: in STD_LOGIC_VECTOR (15 downto 0);
9
      WE: out STD_LOGIC;
10
      OE: out STD_LOGIC;
11
      lstOut: out STD_LOGIC;
12
      datauC: out STD_LOGIC_VECTOR (7 downto 0);
13
      dataRAM: inout STD_LOGIC_VECTOR (15 downto 0);
14
      addressOut: out STD_LOGIC_VECTOR (15 downto 0));
15
end logicAnalysator;

tbTimeSim.vhd:
1
    COMPONENT logicAnalysator
2
        PORT (
3
            extClk : In std_logic;
4
            trg : In std_logic;
5
            arm : In std_logic;
6
            extRst : In std_logic;
7
            nxtByte : In std_logic;
8
            highLowByte : In std_logic;
9
            dataIn : In std_logic_vector (15 DownTo 0);
10
            WE : Out std_logic;
11
            OE : Out std_logic;
12
            lstOut : Out std_logic;
13
            datauC : Out std_logic_vector (7 DownTo 0);
14
            dataRAM : InOut std_logic_vector (15 DownTo 0);
15
            addressOut : Out std_logic_vector (15 DownTo 0)
16
        );
17
    END COMPONENT;
18
...
19
    SIGNAL address : std_logic_vector (15 DownTo 0);
20
   constant PERIOD : time := 16 ns;
21
    constant DUTY_CYCLE : real := 0.5;
22
    constant OFFSET : time := 16 ns;
23
24
    BEGIN
25
        UUT : logicAnalysator
26
        PORT MAP (
27
            extClk => extClk,
28
            trg => trg,
29
            arm => arm,
30
            extRst => extRst,
31
            nxtByte => nxtByte,
32
            highLowByte => highLowByte,
33
            dataIn => dataIn,
34
            WE => WE,
35
            OE => OE,
36
            lstOut => lstOut,
37
            datauC => OPEN,
38
            dataRAM => dataRAM,
39
            addressOut => address
40
        );
41
...

Wo ist da denn ein Fehler?

von Matthias M. (frost)


Lesenswert?

Achso... Ich hatte das anders verstanden... Sorry, mein Fehler...
Aber was machst Du denn noch mit dem Signal address?

Sieht ansonsten gut aus.

von The Scientist (Gast)


Lesenswert?

nix das soll eigentlich nur angezeigt werden. Ich hatte erst vermutet, 
dass er mit den gleichen Namen net klar kommt. Vorher hab ich das als 
waveform gebastelt und dann einfach den von ISE erzeugten VHDL-Code 
verändert. Eigentlich müssten alle Signale jetzt in der Simulation 
angezeigt werden.

von The Scientist (Gast)


Lesenswert?

Ich bin ihm jetzt schon etwas auf die Schliche gekommen. Die 
Simulationsengine erzeugt anscheinend eine Datei in der das Modell ganz 
primitiv in VHDL beschrieben ist und da steht in der Entity:
1
entity logicAnalysator is
2
  port (
3
    extClk : in STD_LOGIC := 'X'; 
4
    extRst : in STD_LOGIC := 'X'; 
5
    nxtByte : in STD_LOGIC := 'X'; 
6
    highLowByte : in STD_LOGIC := 'X'; 
7
    trg : in STD_LOGIC := 'X'; 
8
    arm : in STD_LOGIC := 'X'; 
9
    lstOut : inout STD_LOGIC; 
10
    WE : out STD_LOGIC; 
11
    OE : out STD_LOGIC; 
12
    dataIn : in STD_LOGIC_VECTOR ( 15 downto 0 ); 
13
    addressOut : inout STD_LOGIC_VECTOR ( 15 downto 0 ); 
14
    dataRAM : inout STD_LOGIC_VECTOR ( 15 downto 0 ); 
15
    datauC : out STD_LOGIC_VECTOR ( 7 downto 0 ) 
16
  );
17
end logicAnalysator;

Ich verstehe aber trotzdem jetzt nicht wieso der aus einem out-Port 
einen inout-Port macht.

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.