Moin,
ich versuche den LEON3 etwas umzubauen und bin dabei auf ein Problem in
der Simulation gestossen.
Folgender Code:
1 | if holdn = '0' then
|
2 | de_raddr1(RFBITS-1 downto 0) := r.a.rfa1;
|
3 | de_raddr2(RFBITS-1 downto 0) := r.a.rfa2;
|
4 | de_ren1 := r.a.rfe1; de_ren2 := r.a.rfe2;
|
5 | de_thread := r.a.ctrl.thread.nr;
|
6 | else
|
7 | de_ren1 := v.a.rfe1; de_ren2 := v.a.rfe2;
|
8 | de_thread := v.a.ctrl.thread.nr;
|
9 | end if;
|
10 |
|
11 | rfi.rthread <= de_thread;
|
12 | rfi.raddr1 <= de_raddr1; rfi.raddr2 <= de_raddr2;
|
13 | rfi.ren1 <= de_ren1 and not dco.scanen;
|
14 | rfi.ren2 <= de_ren2 and not dco.scanen;
|
generiert in der Simulation ein Signal fuer rfi.ren1, rfi.ren1 und
rfi.rthread das regelmaessig von Spikes unterbrochen wird. Werden diese
Spikes im Betrieb Probleme verursachen? Und wie kann ich sie verhindern?
Ich dachte mir, dass es vielleicht an einer eigenartigen Synthese der
Logik liegt, (Latch statt Flip/Flop oder kominatorische Logik (keines
der Signale wird vorher gelesen)) komme da aber auch nicht auf die
richtige Idee.
Danke, Joern