Forum: FPGA, VHDL & Co. Altera SignalTap: Wegoptimieren von Signalen verhindern


von Klaus (Gast)


Lesenswert?

Hallo!

Gibt es einen Weg, wie ich in SignalTap Signale hinzufügen kann, die 
ansonsten weg optimiert werden?

Zum Beispiel versuche ich gerade eine auf Situation zu triggern, wo eine 
Statemaschine zu lange in einem bestimmten Zustand bleibt. Dazu habe 
eich einen Zähler eingebaut, der die Dauer des Zustandes mit zählt. Da 
der Zähler aber sonst nirgends im Design verwendet wird, fliegt er bei 
der Synthese natürlich raus, und ich kann ihn in SignalTap nicht als 
Signal einfügen.

von Fpgakuechle K. (Gast)


Lesenswert?

Klaus schrieb:

> Gibt es einen Weg, wie ich in SignalTap Signale hinzufügen kann, die
> ansonsten weg optimiert werden?
>

Gelegentlich gibt es einen globalen Schalter mit dem man "Dead code 
elimination" deaktivieren kann. Ebenso gibt es oft lokale Schalter mit 
der man Komponenten/Signale als dont_touch deklariert. Ferner kann man 
das Signal an ein unbenutzes Output-Pin legen oder an irgendein 
Debugregister.

Ich kenne das ähnliche Problem bei Xilinx (Chipscope) und synplicity 
(Synthesetool). Nach einiger Durchsicht des Synplicities Manual fand 
sich ein Schalter mit dem das Wegoptimieren unterbunden wurde.

MfG,

von dasdgw (Gast)


Lesenswert?

Hallo,

Du verwendest quartus?
Dann schau dir doch mal das synthese attribute noprune an.
1
signal counter:unsigned(7 downto 0);
2
attribute noprune: boolean;
3
attribute noprune of counter : signal is true;

Tool unabhänging sollte das Ganze werden wenn du statt noprune 
syn_noprune verwendest.

von Klaus (Gast)


Lesenswert?

Super, danke! Mit noprune funktioniert es. Die Attribute keep und 
preserve hatte ich probiert, aber die greifen scheinbar erst an einer 
Stelle im Syntheseprozess, wo mein Register schon weg war.

von dasdgw (Gast)


Lesenswert?

Freut mich dass es funktioniert. Mir ist es ebenso ergangen.
Eigentlich wollte ich auch noch versuchen ob es auch mit syn_noprune 
funktioniert. Sollte dann halt auch für Xilinx ISE zum gewünschten 
Ergebnis führen.

Hat das schon mal einer mit ISE und/oder anderen tools probiert?

von Duke Scarring (Gast)


Lesenswert?

dasdgw schrieb:
> Hat das schon mal einer mit ISE und/oder anderen tools probiert?
Ich instanziiere mir Chipscope immer direkt. Da werden die Signale nicht 
wegoptimiert, da sie ja noch am Chipscope "gebraucht" werden.

Duke

von dasdgw (Gast)


Lesenswert?

So helle war bei mir die altera toolchain nicht.
Bei mir wurden signal wegoptimiert, die ich mit signaltap überwachen 
wollte.
Muss man um chipscope zu nutzen immer noch eine Lizenz kaufen?

von Fpgakuechle K. (Gast)


Lesenswert?

Duke Scarring schrieb:
> dasdgw schrieb:
>> Hat das schon mal einer mit ISE und/oder anderen tools probiert?
> Ich instanziiere mir Chipscope immer direkt. Da werden die Signale nicht
> wegoptimiert, da sie ja noch am Chipscope "gebraucht" werden.
>
> Duke

Kommt auf das synthesetool an. Synplicity sieht keine Output ports am 
Chipscope (Das JTAG-Interface im Chipscope erkennt synplicity nicht als 
output an) und wirft Chipscope weg. Deshalb  sollte man bei Xilinx auch 
das entsprechende "Finger Weg!!" Attribut setzen.

MfG,

von Duke Scarring (Gast)


Lesenswert?

dasdgw schrieb:
> Muss man um chipscope zu nutzen immer noch eine Lizenz kaufen?
Leider ja. Ab der Logic Edition [1] ist es mit dabei.
Wobei es sicher spannend wäre, sich mal das Protokoll anzuschauen und 
ein alternatives Frontend zu entwerfen.


Fpga Kuechle schrieb:
> Kommt auf das synthesetool an. Synplicity sieht keine Output ports am
> Chipscope
Wieder was gelernt :-)

Duke

[1] 
http://www.xilinx.com/products/design-tools/ise-design-suite/logic-edition.htm

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.