Forum: FPGA, VHDL & Co. VHDL Statement coverage für Arme?


von Fritz J. (fritzjaeger)


Lesenswert?

Entwicklungsstandards wie DO-254 verlangen Testbenches mit 100% 
statement coverage. Nun gibt es kommerziele Tools die VHDL 
testbenches/designs auf vollständige Testabdeckung prüfen, allerdings 
sollte das auch mit Script-Bordmittel erreichbar sein. Beispielsweise 
ein Script, das nach jeder relevanten VHDL-Zeile ein assert o.ä. einfügt 
und man nur noch schauen muss ob alle asserts-ausgaben im log zu finden 
sind.

Kennt jemand dergleichen?

von Georg A. (georga)


Lesenswert?

Mit GHDL solls auch ohne solche Klimmzüge gehen, habs aber nicht 
probiert...

http://home.mnet-online.de/al/ghdl_gcov/ghdl_gcov.html

von J. S. (engineer) Benutzerseite


Lesenswert?

Interessantes Thema. Ich habe seinerzeit mal mit ModelSIM gearbeitet, 
das ein Coverage-Modul bietet. So richtig zufrieden bin ich damit aber 
nicht gewesen. Meines Erachtens ist es aber auch ein Unterschied, ob ich 
das formelle coverage betrachte, das in existenten Formulierungen 
auftritt (das wird vom ModelSIM in erster Linie analysiert) oder ob ich 
ein case-coverage im Sinne einer Überdeckung der funktionellen Optionen 
habe / erhalte.

Ich sehe da auch gewisse Probleme! Ich kann mir ad hoc verschieden Fälle 
einfallen lassen, bei denen je nach Sichtweise keine oder eben doch eine 
funktionell vollständige Überdeckung gegeben ist und das Tool das ohne 
weitere Infos ohnehin nicht entscheiden kann.

Wer kann mehr zu dem Thema sagen?

von Georg A. (georga)


Lesenswert?

Naja, diese ganze Coverage-Geschichte taugt IMO überhaupt nur, wenn das 
jemand macht, der sich auch wirklich mit dem Design auskennt und wenn 
auch die Tests umfassend sind. Nur mal eben so einen Coverage-Lauf 
machen, damit man irgendwelche lästigen Formalien erfüllt hat, hilft 
nicht viel.

Es gibt wohl leider kein Tool, dass einem zu einer Testbench sagt, 
welchen (kritischen) Fall man nicht getestet hat ;)

von cfgardiner (Gast)


Lesenswert?

Vielleicht lohnt sich ein Blick auf http:/www.synthworks.com.

Jim Lewis, der Inhaber, sitzt in den VHDL Standard Committees und macht 
sich eigentlich viel Mühe eine OpenSource Lösung für Randomisation und 
Coverage in VHDL an den Mann zu bringen.

Du brauchst halt einen Simulator dazu. Bin mir nicht sicher, ob GHDL 
reicht. Die günstigste Lösungen im Augenblick dürften die Modelsim 
Altera Edition oder Active-HDL in der Lattice Edition (diese wäre sogar 
mixed Language)

Meine persönliche Meinung ist, dass Coverage eben nur eine Massnahme von 
vielen ist um ans Ziel zu gelangen. Zusammen mit Randomisation ist es 
aber durchaus effektiv.

Grüße,
Charles

von VHDL-ING (Gast)


Lesenswert?

Wer garantiert, dass das "randomize" voll covered?

Klingt nach Zufall!

von Fritz J. (fritzjaeger)


Lesenswert?

cfgardiner schrieb:
> Vielleicht lohnt sich ein Blick auf http:/www.synthworks.com.

> Du brauchst halt einen Simulator dazu. Bin mir nicht sicher, ob GHDL
> reicht. Die günstigste Lösungen im Augenblick dürften die Modelsim
> Altera Edition oder Active-HDL in der Lattice Edition (diese wäre sogar
> mixed Language)
>

Mir gehts es bei der Frage um eine Simulatorunabhängige Lösung, eine 
Ergänzung des Quelltextes um Code der misst ob die Zeile ausgeführt 
wurde oder nicht.

Unterstütz der Altera modelsim coverage checks?
mein erste Kanditat wäre der Xilinx - isim.

MfG,

von Fritz J. (fritzjaeger)


Lesenswert?

VHDL-ING schrieb im Beitrag #2765790:
> Wer garantiert, dass das "randomize" voll covered?
>
> Klingt nach Zufall!

Von der Forderung full covered hat man sichbei den heutigen komülexen 
designs verabschiedet. "Randomize ist eine Möglichkeit schnell viele 
Teststimuli zu erzeugen, der Zufall garantiert das mensch nicht aus 
Betriebsblindheit kritische Szenarien auslässt. In der Regel werden die 
zufälligen generierten Testvektoren gefiltert und analysiert um 
möglichst alle typischen Fälle abzudecken, für die atypischen erhält man 
ebenfalls Simuläufe und kann so auch die Ausfälle aus "kuriosen" 
Randbedingungen simulieren.

MfG,

von Fritz J. (fritzjaeger)


Lesenswert?

Jürgen S. schrieb:
> Interessantes Thema. Ich habe seinerzeit mal mit ModelSIM gearbeitet,
> das ein Coverage-Modul bietet. So richtig zufrieden bin ich damit aber
> nicht gewesen. Meines Erachtens ist es aber auch ein Unterschied, ob ich
> das formelle coverage betrachte, das in existenten Formulierungen
> auftritt (das wird vom ModelSIM in erster Linie analysiert) oder ob ich
> ein case-coverage im Sinne einer Überdeckung der funktionellen Optionen
> habe / erhalte.
>
> Ich sehe da auch gewisse Probleme! Ich kann mir ad hoc verschieden Fälle
> einfallen lassen, bei denen je nach Sichtweise keine oder eben doch eine
> funktionell vollständige Überdeckung gegeben ist und das Tool das ohne
> weitere Infos ohnehin nicht entscheiden kann.


Konkrete Beispiele bitte.

Nach meinem Erachten zielt Statement Coverage vorrangig. auf eine 
Verbesserungen der Qualität des Entwicklungsprozeßes und hebt damit 
indirekt die Qualität des Produktes. Es zwingt überhaupt zur Simulation 
und macht die Überprüfung messbar, da 100% hier wirklich angebbar ist. 
Hundert Prozent funktionale Abdeckung dagegen kann nur als 100% 
Abdeckung der Testfälle resp Requirements gemessen werden. Und die ist 
nun leider davon abhängig wie gut/umfangreich der Ingenieur diese 
Testfälle/Funktionen spezifiziert hat. Ich sehe statement coverage als 
Mittel neben funktionallen Test nicht als Allheilmittel.

MfG,

von Fritz J. (fritzjaeger)


Lesenswert?

Georg A. schrieb:
> Naja, diese ganze Coverage-Geschichte taugt IMO überhaupt nur, wenn das
> jemand macht, der sich auch wirklich mit dem Design auskennt und wenn
> auch die Tests umfassend sind. Nur mal eben so einen Coverage-Lauf
> machen, damit man irgendwelche lästigen Formalien erfüllt hat, hilft
> nicht viel.


Doch, er gibt die Sicherheit mindestens das quantifizierbare Minimum an 
Tests ausgeführt zu haben. Es ist eben nicht ein Coverage - Lauf sondern 
das Erstellen einer Testbench mit überprüfbarer Qualität. Und es kann 
von jemanden ausgeführt werden der nur Teile des Designs kennt (und 
somit auch von Trugschlüssen wie: "Wenn ich das geschrieben habe, 
passiert ein solcher Fehler nicht" einigermassen gefeit ist.

MfG,

von P. K. (pek)


Lesenswert?

Ist meiner Ansicht nach auch immer eine Frage, wo man Coverage Tools 
(statement, case, toggle etc.) sinnvollerweise einsetzt.

Bei meinem früheren Job (ASIC-Entwicklung) war's ein ("ein", nicht 
"das") unabdingbares Tool in der Verifikationskette und hat mindestens 
die blockbasierte Verifikation enorm beschleunigt (weniger Probleme in 
der Toplevel- und Funktionalsimulation welche dann auch mit "randomize" 
Methoden gemacht wurde).

Bei meiner momentanen FPGA-Tätigkeit sehe ich die Notwendigkeit eines 
solchen Tools nicht zwingend. Da tut's eine grobe Funktionalsimulation, 
und dann geht's ab aufs System, welches ja (keine NRE wie beim ASIC) 
tipp-topp für's Debugging eingesetzt werden kann...

von Duke Scarring (Gast)


Lesenswert?

Fritz Jaeger schrieb:
>> Du brauchst halt einen Simulator dazu. Bin mir nicht sicher, ob GHDL
>> reicht. Die günstigste Lösungen im Augenblick dürften die Modelsim
>> Altera Edition oder Active-HDL in der Lattice Edition (diese wäre sogar
>> mixed Language)
>>
>
> Unterstütz der Altera modelsim coverage checks?
Würde mich wundern. Selbst für ModelSim PE braucht man eine extra 
Lizenz:
1
VSIM> toggle add -r /*
2
# ** Error: Failure to license for coverage.  Unable to checkout msimcoverage license feature.
3
# ** Error: (vsim-43) toggle coverage is not supported in this version.

Duke

von J. S. (engineer) Benutzerseite


Lesenswert?

Duke Scarring schrieb:
> Würde mich wundern. Selbst für ModelSim PE braucht man eine extra
> Lizenz:

Für's "PE" ja, das hatte ich seinerzeit auch. Coverage musste (ich 
glaube, für 2,5TEUR) hinzubestellt werden. In der "SE" war es damals 
2006 aber drin, meine ich.

von Fritz J. (fritzjaeger)


Lesenswert?

Peter K. schrieb:
> Ist meiner Ansicht nach auch immer eine Frage, wo man Coverage Tools
> (statement, case, toggle etc.) sinnvollerweise einsetzt.
>
> Bei meinem früheren Job (ASIC-Entwicklung) war's ein ("ein", nicht
> "das") unabdingbares Tool in der Verifikationskette und hat mindestens
> die blockbasierte Verifikation enorm beschleunigt (weniger Probleme in
> der Toplevel- und Funktionalsimulation welche dann auch mit "randomize"
> Methoden gemacht wurde).
>
> Bei meiner momentanen FPGA-Tätigkeit sehe ich die Notwendigkeit eines
> solchen Tools nicht zwingend. Da tut's eine grobe Funktionalsimulation,
> und dann geht's ab aufs System, welches ja (keine NRE wie beim ASIC)
> tipp-topp für's Debugging eingesetzt werden kann...

Hm die zu Anfang erwähnte DO254 behandelt zwar auch FPGA's, will aber 
wohl adHoc inEcht-Test ohne den versuch einer Verifikation per 
Simulation vermeiden. -> ist ja airborne, das tut auch ohne NRE richtig 
weh. Und in der Simu sind einige Fehlerszenarien einfacher herbeiführbar 
als in Echt. (Bspw: IR-Request aller Peripherien gleichzeitig in 
Verbindung mit einem DMA-Request bei einer Write back Cache 
Implementierung ...).

Eine Kombination von in System test mit Pattern die aus einer Simu mit 
dabei nachgewiesener 100 % Statement Coverage stammen, dürfte ein guter 
mittelweg sein.

MfG

von helge (Gast)


Lesenswert?

Zum Thema rand Coverage:

da kann ich jedem nur osvvm.org nahelegen.

Jim Lewis hat hier ganze Arbeit geleistet und die docu lässt auch keine 
Fragen offen.

Gruß
helge

von Fritz J. (fritzjaeger)


Lesenswert?

helge schrieb:
> Zum Thema rand Coverage:
>
> da kann ich jedem nur osvvm.org nahelegen.
>
> Jim Lewis hat hier ganze Arbeit geleistet und die docu lässt auch keine
> Fragen offen.
>
> Gruß
> helge


Hab mal kurz reingeschaut, selbst wenn es für die DO254 wohl nicht 
anwendbar ist (die mag keine Extra-Analyse-Logik) sehr vielversprechend. 
jetzt hab ich ein thema füs wochenende (neben Nachwuchspflege ;-)).

MfG,

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

VHDL-ING schrieb im Beitrag #2765790:
> Wer garantiert, dass das "randomize" voll covered?

Niemand. Daher braucht man ja eine umfangreiche coverage Infrastruktur, 
mit deren Hilfe man ermittelt, welche der gewünschten Testszenarien 
bereits ausgeführt wurden.

Wichtiger als structural (code) coverage ist hierbei die functional 
coverage.
Code coverage sagt nichts über den Kontext aus in dem ein Statement 
ausgeführt wurde. Mit code coverage kann man auch nicht feststellen, ob 
Zeile X genau dann ausgeführt wurde, während sich die FSM gerade im 
Zustand Y befindet.

Gruß
Marcus

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

helge schrieb:
> Jim Lewis hat hier ganze Arbeit geleistet und die docu lässt auch keine
> Fragen offen.

Ich hab'schon vor Jahren mit Jim darüber argumentiert[1], dass VHDL 
schlicht nicht die Ausdrucksweise bietet, die /constrained random 
verification/ benötigt. Alle Lösungen für VHDL in Form von Bibliotheken 
sind mehr schlecht als recht angeflanscht.

Grüße
Marcus

Footnotes:
[1] 
http://groups.google.com/group/comp.lang.vhdl/msg/f77132730e5d41c6?hl=en

von Mr. Zulu (Gast)


Lesenswert?

Wie ist denn nun der Stand bezüglich der coverage Geschichte?

Falls Fritz noch mitliest ...

von Fritz J. (fritzjaeger)


Lesenswert?

Mr. Zulu schrieb:
> Wie ist denn nun der Stand bezüglich der coverage Geschichte?
>
> Falls Fritz noch mitliest ...

Mit dem "für Arme" Teil habe ich mich nicht weiterbeschäftigt. In ein 
paar Wochen treffe ich aber einen aus der osvvm.org Usergroup. Mal sehen 
was der zu berichten weiß.

Code-Coverage mit modelsim konnte ich antesten. Ging schnell ist aber 
ernüchternd. Die Simulation überdeckt den gesamten Code, was aber nicht
heisst das alles implentiert wurde oder es unter allen Umständen 
funktioniert. Eine TB mit Stimuli aufzusetzen die jede zeile "ausführen 
lässt" schafft man auch mit manuellen Durchlesen des Codes, solange es 
man strukturiert macht:

jede Verzweigung anschauen bspw "(if a = 23) then"
Dann testcase spezifiezieren (bspw im Dokument testspezifikation 
schreiben "#Test042: Einagng a auf 23 testen,  Ausgang auf wert f(23) 
testen); schließlich implementieren

Code coerage hat im ASIC Bereich sicher seine berechtigung ich würde 
aber die tools dafür nicht überbewerten.

MfG,

von Christoph Z. (christophz)


Lesenswert?

Fritz Jaeger schrieb:
> Code-Coverage mit modelsim konnte ich antesten. Ging schnell ist aber
> ernüchternd. Die Simulation überdeckt den gesamten Code, was aber nicht
> heisst das alles implentiert wurde oder es unter allen Umständen
> funktioniert.

Code- und Expression-Coverage testet NICHT ob du dein Pflichtenheft 
erledigt hast. Kann es ja auch nicht.

Aber es hilft dir darin, das alles was implementiert ist vollständig 
getestet ist, inkl. allen seltenen Fällen abseits vom meistens 
auftretenden Nutzungsfall.

Und es ist auch wichtig, dass es für den Entwickler schnell und einfach 
geht, sonst wird diese Funktion im Simulator auch nicht genutzt.

Habe das für meine Designs hier mit dem Active-HDL angetestet 
(Test-Lizenz). Hat mir sehr gut gefallen, da die Auswertung auch 
übersichtlich und, aus meiner Sicht, aussagekräftig war (VHDL Source 
grün und rot einfärben für Code-Coverage).
Leider wurde mein Antrag zum Kauf abgelehnt. Fehlervermeidung ist immer 
so schwer in Geldwert auszudrücken. ("Brauchst du das zwingend zum 
Arbeiten?" - "Nein, aber es hilft mir meine eigenen Fehler zu finden" - 
"Abgelehnt. Jemand soll ein Code-Review machen" Das hat bis heute nicht 
stattgefunden).

Fritz Jaeger schrieb:
> Eine TB mit Stimuli aufzusetzen die jede zeile "ausführen
> lässt" schafft man auch mit manuellen Durchlesen des Codes, solange es
> man strukturiert macht:

Um das geht es ja gerade. Wir alle machen hin und wieder Fehler oder 
sind nicht zu jeder Uhrzeit genau gleich strukturiert.
Dafür soll die Code- und Expression-Coverage da sein: Den Entwickler 
unterstützen damit der Entwickler sicherer sein kann seine Arbeit 
korrekt gemacht zu haben.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Christoph Z. schrieb:
> Aber es hilft dir darin, das alles was implementiert ist vollständig
> getestet ist, inkl. allen seltenen Fällen abseits vom meistens
> auftretenden Nutzungsfall.

Genau das leistet Code Coverage (CC) nicht. Wie ich oben schon 
beschrieben hatte, werden Informationen nicht in Beziehung zueinander 
gesetzt.
Vom Verifikationsstandpunkt ist CC ziemlich wertlos. Besser als gar 
nichts, aber nicht viel besser.

Ich könnte das auch sarkastischer formulieren: CC hilft dabei Teile des 
Source Codes zu identifizieren, die bereits durchlaufen wurden, also 
vermutlich nicht vollkommen funktionslos sind.

--
Marcus

von Christoph Z. (christophz)


Lesenswert?

Marcus Harnisch schrieb:
> Vom Verifikationsstandpunkt ist CC ziemlich wertlos. Besser als gar
> nichts, aber nicht viel besser.

Und darum soll ich mit "nichts" mein Zeugs hier entwickeln? Ich arbeite 
hier im Worst-Case: Selbe Person macht das Design und die Verifikation.
Ich nehme alles was ich kriegen kann, damit ich nicht über meine eigenen 
Füsse (menschlichen Schwächen) falle.

Marcus Harnisch schrieb:
> Genau das leistet Code Coverage (CC) nicht. Wie ich oben schon
> beschrieben hatte, werden Informationen nicht in Beziehung zueinander
> gesetzt.

Deine grundsätzliche Kritik verstehe ich und kann ich nachvollziehen. 
Ein kurzer Abriss wo bei ASICs/FPGAs der aktuelle Stand des Denkens ist 
gibt dieser gute Blog Artikel von Brian Bailey:
http://webcache.googleusercontent.com/search?q=cache:p0LfpYBeAzkJ:www.programmableplanet.com/author.asp%3Fsection_id%3D2010%26doc_id%3D257477+&cd=4&hl=en&ct=clnk&gl=ch&client=firefox-a

Marcus Harnisch schrieb:
> Code coverage sagt nichts über den Kontext aus in dem ein Statement
> ausgeführt wurde. Mit code coverage kann man auch nicht feststellen, ob
> Zeile X genau dann ausgeführt wurde, während sich die FSM gerade im
> Zustand Y befindet.

Wenn ich Brian Bailey richtig verstehe, kann das bis jetzt keine Technik 
sicherstellen. (Testen mit Randomization ist ein guter Ansatz, nutze ich 
auch. Dokumentieren ob wirklich alles getestet wurde, Traceability, 
scheint hier das Problem zu sein).

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Christoph Z. schrieb:
> Ein kurzer Abriss wo bei ASICs/FPGAs der aktuelle Stand des Denkens ist
> gibt dieser gute Blog Artikel von Brian Bailey:

Na ja, viel geredet, wenig gesagt. Vor allem hat er einen der 
Hauptvorteile von Constrained Random nicht erwähnt, den Fritz bereits 
weiter oben aufgeführt hat: Es werden eben auch jene Fälle getestet, an 
die der Mensch eben gar nicht gedacht hat.

> Marcus Harnisch schrieb:
>> Mit code coverage kann man auch nicht feststellen, ob
>> Zeile X genau dann ausgeführt wurde, während sich die FSM gerade im
>> Zustand Y befindet.
>
> Wenn ich Brian Bailey richtig verstehe, kann das bis jetzt keine Technik
> sicherstellen.

Ich kann selbstverständlich alle Zustände (auch Zustandsübergänge) der 
FSM mit allem möglichen anderen Input kreuzen, und mir anschauen, ob 
alle von mir gewünschten Fälle getestet wurden.

Brian Bailey wites
> [Functional coverage] also does not verify that actual results checking
> occurred or was even possible based on the recorded coverage events

Dass Coverage die Funktion der Testbench garantiert ist auch gar nicht 
ihre Aufgabe, obwohl sie dabei helfen kann. Man kann natürlich auch 
Zustände der Testbench aufzeichnen lassen, z.B. ob ein Vergleicher, der 
keinen Fehler gemeldet hat, im Test überhaupt aktiviert wurde.

: Bearbeitet durch User
von Christoph Z. (christophz)


Lesenswert?

Marcus Harnisch schrieb:
> Es werden eben auch jene Fälle getestet, an
> die der Mensch eben gar nicht gedacht hat.

Genau, darum finde ich das auch wichtig Randomization zu nutzen.

Derzeit mache ich das vor allem so, dass ich definiere was sicherlich 
nie passieren darf und schreibe Checks dazu bzw. baue einen Überwacher 
(z.b für eine bestimmte Art Ausgänge).
Dann lasse ich genügend Zufallswerte auf die Eingänge prasseln.

Die eigentlich geforderte Funktionalität teste ich dann mit direkten 
Tests, Input anlegen, Testen auf geforderten Output.

Da wäre sicher noch Raum zur Optimierung vorhanden. Die Testabdeckung 
reicht bisher jedenfalls, so dass noch kein böser defekt in der 
Leistungselektronik passiert ist und dass unsere Firmwareentwickler 
meine FPGA Sachen nutzen können und dann kleine Änderungen, meistens in 
der Spezifikation, vorgenommen werden.

Marcus Harnisch schrieb:
> Ich kann selbstverständlich alle Zustände (auch Zustandsübergänge) der
> FSM mit allem möglichen anderen Input kreuzen, und mir anschauen, ob
> alle von mir gewünschten Fälle getestet wurden.

Diese Aussgage finde ich spannend. Wie machst du das in der Praxis?
Also hast du das in deiner Testbench alles automatisiert?

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Christoph Z. schrieb:
> Also hast du das in deiner Testbench alles automatisiert?

Ja klar, sonst geht das gar nicht. Dazu nimmt man eben eine HVL 
(Hardware Verification Language) und definiert das alles[1]. Auch ein 
Referenzmodell der simulierten Schaltung wird damit implementiert. Am 
Ende lässt man den Simulator so lange arbeiten, bis man alle 
interessanten Fälle getestet hat.

Footnotes:
[1] Zu versuchen, etwas annähernd vergleichbares in VHDL oder Verilog 
(IEEE1364) nachzubauen ist vertane Zeit.

von J. S. (engineer) Benutzerseite


Lesenswert?

Marcus Harnisch schrieb:
> [1] Zu versuchen, etwas annähernd vergleichbares in VHDL oder Verilog
> (IEEE1364) nachzubauen ist vertane Zeit.

Das impliziert allerdings, dass man die Verfikation komplett im 
Simulator, also "soft" erledigen kann und will. Wie sieht es 
diesbezüglich mit hardware-acceleration aus? Lässt sich das auch noch 
damit bewerkstelligen?

Ein weiterer Punkt: Erstellt man Modelle und Stimuli in VHDL, lassen 
sich diese auch in das FPGA integrieren und Selbsttests konstruieren, 
bzw das System in Form eines Komplements als Trigger/Stimulator für 
andere Systeme verwenden.

: Bearbeitet durch User
von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Die üblichen HVL haben selbstverständlich Interfaces zu Emulatoren.

Verifikation != Selbsttest. Letzterer ist auch nur ein Teil der 
Schaltung und muss seinerseits verifiziert werden.

Aber was ich eigentlich mit meiner Anmerkng sagen wollte, ist dass die 
genannten Sprachen selbst nicht die Konstrukte bereitstellen, um derart 
abstrakte Zusammenhänge sinnvoll zu beschreiben. Natürlich kann man sich 
was basteln, aber der nötige Aufwand rechtfertigt den Nutzen kaum. Oder 
willst Du per Hand alle zigtausend Zähler definieren, mit zu 
beobachtenden Signalen verbinden, parametrieren und auswerten?

von J. S. (engineer) Benutzerseite


Lesenswert?

Marcus Harnisch schrieb:
> Die üblichen HVL haben selbstverständlich Interfaces zu Emulatoren.
Was könntest Du da empfehlen?

Marcus Harnisch schrieb:
> Natürlich kann man sich
> was basteln, aber der nötige Aufwand rechtfertigt den Nutzen kaum.
Kommt drauf an. Wenn es ein eine überschaubare Menge ist, hat man sich 
die doppelte Arbeit gespart. Falls es ein so komplexes Szenario ist, mit 
"tausenden Signalen" (und Zuständen), wie Du es beschrieben hast, ist 
das freilich was anderes.

Man muss halt immer überlegen, was man wo investiert.

von Christoph Z. (christophz)


Lesenswert?

Marcus Harnisch schrieb:
> Aber was ich eigentlich mit meiner Anmerkng sagen wollte, ist dass die
> genannten Sprachen selbst nicht die Konstrukte bereitstellen, um derart
> abstrakte Zusammenhänge sinnvoll zu beschreiben.

Wahrscheinlich war das der Grund, dass PSL in den VHDL-2008 Standard 
eingebaut wurde. (Also: "VHDL-2008 now includes the simple subset of PSL 
as part of the standard VHDL syntax." 
http://www.doulos.com/knowhow/vhdl_designers_guide/vhdl_2008/vhdl_200x_major/)

Würde das jetzt schon ausreichen für deine Beipspielhaft genannten 
Fälle, oder brauchts immer noch mehr als das, was VHDL-2008 hergibt?

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Jürgen Schuhmacher schrieb:
> Was könntest Du da empfehlen?

Na ja, tatsächlich gibt es aktuell nur zwei HVL, die durch die 
jeweiligen Hersteller unterstützung bekommen: SystemVerilog (bzw. dessen 
spezielle Konstrukte zur Verifikation), das von allen nennenswerten 
Herstellern implementiert wird, und Specman/e von Cadence.

> Marcus Harnisch schrieb:
> Falls es ein so komplexes Szenario ist, mit
> "tausenden Signalen" (und Zuständen), wie Du es beschrieben hast, ist
> das freilich was anderes.

Ein Beispiel: Mach Dir mal eine Liste, was Du alles benötigst um 
lediglich alle legalen Pfade durch eine FSM zu covern, also 
sicherzustellen, dass die FSM vollständig durchlaufen wurde. Bonus: 
Verweilen in einem Zustand muss natürlich auch dabei sein, aber nur in 
Form von flexibel definierbaren Bereichen, 1 Takt, mehrere Takte, lange.

Ich habe mal Code eines mittelgroßen Projekts ansehen müssen, in dem die 
Entwickler gezwungenermaßen (sehr einfache) Coverage nachbauen mussten. 
War nicht schön und nahezu unwartbar.

Und dann hast Du mit der händischen Implementierung auch noch nicht das 
Problem der Auswertung gelöst. Rot-gelb-grüne Ampel anzeigen und so. Mal 
eben umschalten zwischen Coverage pro Instanz gegenüber der Coverage pro 
Modul/Architecture, oder ähnliches.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Christoph Z. schrieb:
> Wahrscheinlich war das der Grund, dass PSL in den VHDL-2008 Standard
> eingebaut wurde.
>
> Würde das jetzt schon ausreichen für deine Beipspielhaft genannten
> Fälle, oder brauchts immer noch mehr als das, was VHDL-2008 hergibt?

PSL dient der Assertion Based Verification (ABV). Damit kann man 
zeitliches Verhalten formal darstellen (ähnlich wie regular expressions 
nur eben über zyklen statt Zeichen), und zum Beispiel Fehler ausgeben 
wenn das tatsächliche Verhalten davon abweicht. Man kann das -- soweit 
vom tool unterstützt -- auch zur Sammlung von Coverage verwenden. ABV 
ersetzt aber keine Coverage, sondern liefert nur einen Beitrag.
In einer händischen Coverage Implementierung kann es helfen.

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.