Forum: FPGA, VHDL & Co. Teststrategie


von Stefan H. (stefanhanke)


Lesenswert?

Hallo,

ich versuche gerade, mir eine Teststrategie zurechtzulegen.

Ganz konkret habe ich momentan das Problem, dass eine funktionale
Simulation funktioniert, die Timingsimulation aber nicht. Es treten
dummerweise keine Setup/Hold-Verletzungen auf, so dass ich keinen
Anhaltspunkt habe, wo denn der potenzielle Fehler zu finden ist. Das
Timingmodell ist auch im Vergleich zum funktionalen Modell schon recht
groß und unübersichtlich. Es geht mir nicht so sehr um diese spezielle
Simulation, sondern allgemeiner:

Wie geht man sowas an?

Ich könnte jetzt versuchen, in den vielen Instanzen ein paar "Namhafte"
herauszupicken und zu gucken, ob das überhaupt stimmen kann -- allein,
das gleicht der Suche nach der Nadel im Heuhaufen.

Ich könnte ein paar interne Signale nach außen legen.

Mit dem "Boundary Scan"-Verfahren habe ich mich noch nicht wirklich
auseinandergesetzt, scheint mir aber "Overkill" zu sein.

Ein Aspekt des Ganzen ist, dass der "Eingriff" minimal-inversiv sein
sollte. Wenn die Testlogik später wieder rausfliegt, sollte das Design
möglichst wenig beeinträchtigt werden (sowohl Sourcecode als auch das
Timing des Designs).

Und damit ist ja noch nicht gewährleistet, dass das Design auch auf dem
FPGA tut ... :-/

 -- stefan

von Walt (Gast)


Lesenswert?

Wie man bei der Softwareentwicklung das Debuggen im Auge behalten muss, 
sollte man auch bei der Hardware das Debugging einplanen. Ja, interne 
Signale nach aussen legen. Man kann auch einen Mux mit einem pin nehmen 
und diesen Mul per steuersignal ein signal auslesen lassen. Gewisse 
Bausteine unterstuetzen auch einen internen Logikanalyzer.

von Joerg W. (joergwolfram)


Lesenswert?

Meine Erfahrungen beziehen sich hauptsächlich auf CPLD's und 
selbstprogrammiertem Flow unter Linux, aber vielleicht hilft's trotzdem. 
Timingsimulation habe ich mit GHDL noch nicht hinbekommen, da die 
SIMPRIMS nach VITAL2000 verlangen...
Sobald es intern komplex wird, nützen setup/hold Bedingungen nach meinen 
Erfahrungen nicht mehr sehr viel. Viel interessanter scheint mir da der 
timing-report zu sein. Dort stehen ganz oben die maximalen Frequenzen 
für die Taktsignale (die oftmals drastisch niedriger ausfallen als das 
einem lieb ist). Darunter folgen dann jeweils die "path delays" in denen 
der Übeltäter oft schnell enttarnt wird. Das Problem zu lösen, steht 
dann auf einem anderen Blatt...
Manchmal helfen auch Periodendauer-Constraints im ucf-file, wenn die 
aber nicht realisierbar sind, wird abgebrochen und ist die Ursache kaum 
zu finden.

Gruß Jörg

von Xenu (Gast)


Lesenswert?

Was genau funktioniert denn nicht?
Funktioniert das Post-Synthesis-Modell und Post-Translate-Modell auch 
schon nicht?


von Stefan H. (stefanhanke)


Lesenswert?

Xenu, ich habe den Fehler bereits gefunden. Tja, wenn man das 
LOCKED-Signal der DLL nicht beachtet, dann passieren unvorhergesehen 
Dinge ;-)

Das mit dem Mux klingt interessant. Das Problem, das ich mit der Methode 
habe, ist, dass ich dafür mein Design anpassen muss -- die Analogie zur 
SW-Welt scheitert hier, da muss nichts angepasst werden. Aber eventuell 
kommt man darum nicht herum...

Die Taktfrequenzen im Auge zu behalten, ist auch ein guter Tipp. Ich 
habe hier laut Synthese max 66 MHz, laut Static-Timing (Post-PAR) 143 
MHz, das reicht locker aus. Ich hoffe, die Zahlen bedeuten wirklich das, 
was ich glaube ;-)

UPDATE: Nein, zumindest die zweite Zahl bedeutet was anderes. Ich hatte 
gerade gemerkt, dass die Taktperiode noch auf 20 ns gestellt war. Mit 10 
ns fliegen mir ein paar Setup/Hold-Verletzungen entgegen.

UPDATE2: Ich dachte, Dienstag sei mein schlechter Tag ;-) 20 ns stimmt 
natürlich, es wird ja intern auf 10 ns hochgezogen.

 -- stefan

von VHDL_Mensch (Gast)


Lesenswert?

Wofür verwendest du das Locked Signal nun? Als Reset?

von Stefan H. (stefanhanke)


Lesenswert?

Locked als Reset?!

Das Locked-Signal wird nur intern verwendet und nicht aus der Top-Entity 
herausgeführt. Die Testbench kann also nicht wissen, wann der Takt 
verläßlich ist. Der Stimulus wurde also zu früh angelegt.

 -- stefan

von Stefan H. (stefanhanke)


Lesenswert?


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.