hallo!
ich wuerde mir gerne ein wenig verfahrensweisen zur formellen
verifikation von software/hardware und von VHDL im speziellen anschauen,
hat da zu zufaellig jemand einen guten buchtipp? in unserer unibib hab
ich leider nix gefunden, mir fehlen aber auch echt die suchbegriffe.
waere euch sehr dankbar,
zachso
Thomas Kropf: Introduction to Formal Hardware Verification; Springer
1998
ISBN: 3-540-65445-3
Beschreibt die formalen Grundlagen und Algorithmen für die formale
Hardware Verifikation
Danke sehr, werde ich mir mal besorgen. ich habe aber gehoert es wurde
bei VHDL2004 noch einiges in der richtung zur verifikation ergaenzt, ist
das so richtig? und braucht man dann evtl. noch ein neueres werk?
Ich glaube du hast eine falsche Vorstellung von formaler Verifikation.
Formale Verifikation sind mathematische Beweise ob zwei Schaltungen
äquivalent sind (equivalence checking) bzw. ob eine Schaltung bestimmte
Eigenschaften besitzt (model checking). Und beides ist vollkommen
unabhängig von der Representation der Schaltung. D.h. prinzipiell ist es
egal ob Du in einen Equivalence-Checker VHDL, Verilog, Spice-Netzliste
ne Cadence Datenbank oder sonst was rein wirfst.
In VHDL gibt es keine Konstrukte die für die formale Verifikation
bestimmt sind. Deshalb wirst Du auch kein Buch finden das beschreibt wie
Du "formale Verifikation mit VHDL" durchführst. Dafür ist VHDL auch
nicht gedacht.
Okay, dann mal andersherum: ich moechte gerne beweisen dass mein code
"richtig" arbeitet. wir haben sowas schonmal in java in der uni gemacht,
und ich dachte(!) sowas gibts auch fuer vhdl? ich weiss leider wirklich
nicht mehr viel davon, damals habe ich das nich wirklich gemocht aber
jetzt find ichs doch recht spannend und wuerde das gerne mit meinem
VHDL-zeuch machen. gibt es da einen weg oder muss ich mir einfach einen
schaltplan malen und dann schauen dass mein vhdl auch wirklich meinen
schaltplan darstellt?
ciao
zachso
> gibt es da einen weg oder muss ich mir einfach einen schaltplan malen> und dann schauen dass mein vhdl auch wirklich meinen schaltplan darstellt?
Ob dein Design das macht, was du von ihm verlangst, das wird mit einer
Testbench geprüft. Ob deine Testbench alle Fälle abdeckt obliegt deiner
Sorgfalt. Deshalb sollte idealerweise nur die Schnittstelle definiert
werden und das Design von der Person A, die Testbench aber von der
Person B geschrieben werden.
Aber ganz klar, es bleibt die Frage: wer kontrolliert den Kontrolleur?
Per Hand wird das wohl nix werden. Zunächst musst Du unterscheiden ob Du
einen Equivalence Check oder einen Model Check machen willst.
Für einen EC brauchst Du ein Referenz Modell Deines VHDL-Codes. Diese
werden dann auf Isomorphie getestet. Für ein "echtes" VHDL-Modul wirst
Du das nie per Hand hinbekommen. Da brauchst Du Tools für. Die gibt es
auf dem Markt ab etwa 100000$ zu kaufen.
Fürs Model Checking musst Du ein temporales Modell spezifizieren und das
wird dann mit Deinem VHDL-Modul "verglichen". Auch das ist kaum per Hand
möglich. Aber auch dafür gibt es fertige Tools zu kaufen bzw. auch
kostenfrei im Netz. Allerdings nehmen die kein VHDL als Eingabe.
Eigentlich bleibt da nur das selber implementieren, wenn man nicht das
Geld in die Hand nehmen kann/will.
Ihr habt Java in der Uni selber verifiziert? Oder habt ihr ein Tool
dafür benutzt?
Lothar Miller schrieb:> Ob dein Design das macht, was du von ihm verlangst, das wird mit einer> Testbench geprüft.
Er hat von formaler *Verifikation* gefragt. Und da ist nix mit
Testbench.
> Er hat von formaler Verifikation gefragt.
Das schon. Ich bin mir aber gar nicht sicher, ob das auch gewollt ist.
Oder nur das Stichwort "formell" irgendwo im Kleinhirn verankert ist...
> Er hat von formaler Verifikation gefragt.
von geredet oder nach gefragt ;-)
in der uni haben wir in java selber verifiziert, obwohl ich mir auch
nicht mehr sicher bin ob das wirklich verifikation war, ich muss da mit
den fachbegriffen nochmal nachschlagen glaube ich. auf jeden fall haben
wir java code geschrieben und dann geguckt ob er terminiert und welcher
aufwand (zuerst) und dann spaeter auch wirklich bewiesen dass er macht
was er machen soll. leider habe ich da so wirklich 0 aufgepasst (wie
studenten halt so sind... ;)) und mit dementsprechend auch nicht viel
gemerkt.
die sache mit der testbench abe ich schonmal gehoert, die benutze ich
immer (wie soll man sonst auch fehler finden?) und das klappt auch ganz
gut, nur schrieb ich die immer selber, da ich einfach nur allein
arbeite, ist halt alles nur hobby.
dass solche beweise sehr schwer zu erbringen sind und dafuer tool noetig
werden war mir schon klar, nur ich wuerde es (in gaaanz kleinem
massstab) gerne erstmal per hand koennen um ueberhaupt erstmal zu wissen
wie es geht. eine wirkliche anwendung dafuer gibts bei mir (noch) nicht
und das wird sich wohl so bald auch nicht aendern, mich ahben einfach
die moeglichkeiten interssiert, mehr als nen multiplexer wuerde ich wohl
nicht verifiziern wollen.
gibts denn zu Model checking und equivalence check literatur ausser das
bisschen auf der wikipedia? zum model check habe ich den CV gefunden und
auf springerlink gleich nen buch dazu, das sieht schonmal
vielversprechend aus, dank der uni habe ich ja zugang zum springerlink.
bei dem equivakence check allerdings scheints nur teure software zu
geben (btw: stehen die 100.000$ fuer eine FormalPro-Lizenz oder is das
zeuch noch teurer?)
wie gesagt: ist halt alles just for fun, habe also keinen dicken
gledbeutel und kann mir absolut keien software kaufen.
danke schonmal,
zachso
ps: mathi arbeitest du in dem gebiet bzw. machst du sowas beruflich oder
warum kennste dich damit so gut aus?
@Zachso:
Ja, ich arbeite in dem Bereich. Ich versuche es anderen bei zubringen ;)
Was Du mit Java gemacht hast, hat nicht viel mit der formalen
Verifikation zutun. Es hört sich eher so an <vermutung>, als ob ihr euch
im Rahmen Komplexität damit beschäftigt habt </vermutung>.
Selbst ein sehr kleines Design per Hand wird es sehr schwer werden. Was
genau hast Du vor per Hand zu verifizieren?
zachso schrieb:> btw: stehen die 100.000$ fuer eine FormalPro-Lizenz oder is das> zeuch noch teurer?
Das ist ne Hausnummer von einer der drei großen EDA-Herstellern. Aber
nicht von Mentor. Das wird aber sicherlich auch in dem Bereich liegen ;)
wie ich oben schon schrieb, ich habe vor damit vllt. mal nen multiplexer
zu verifiziern, nicht mehr. ich moechts mir just for fun angucken und
werde mit evtl. uebungsbeispielen schon genug zu tun haben denke ich ;)
ja, komplexitaet haben wir auch gemacht, aber das war nicht so schwer
als dass ich da abgeschalten haette, das wirkliche beweisen haben wir
auf jeden fall auch gemacht, ich weiss nur nicht ob wirs verifikation
genannt haben. komplexitaet haben wir bis zum erbrechen gemacht, das
geht jetzt ganz gut.
was wir da bewiesen haben war aber auch nicht lang, das waren nur kurzes
beispiel in einer VL und dann nochmal einen 6-zeiler in tutorium, da
blieb halt nicht viel uebrig.
Ich werde mir mal aus der Bib "Modellbildung und Verifikation von
komplexen digitalen Schaltungen in einem Designflow basierend auf VHDL
und Synthese" besorgen und dann ein wenig lesen. ich danke dir schonmal
fuer deine hilfe, nur eine frage bleibt da noch: sind dir noch andere
tools bekannt ausser die kommerziellen? nur falls mich das thema doch
packen sollte... :)
wow! den CADP hatte ich noch nicht gefunden, vielen dank.
ich werde mir das zeug mal "reinziehn" und hoffe mal ich werde das ein
wenig verstehn.
und danke fuer den tipp mit citeseer, aber ich hab auch nen offiziellen
zugang zum springerlink :)
ich wollt noch fragen wo du arbeitest, ich bewerb mich gerade fuer nen
paar praktikas im FPGA development? wenn du lust hast kannste mir ja ne
pm schicken, wuerde dir/euch gerne mal ne bewerbung zukommen lassen.
dank fuer die viele hilfe nochmal.
Hi Arne,
mit dem Praktika wird das bei mir nix. Denn nach meiner Zeit in der
Industrie bin ich wieder an der Uni gelandet. Deswegen darf ich auch
formale Verifikationsmethoden unterrichten ;)