Forum: FPGA, VHDL & Co. Formale Verifikation als Privatmann


von M. N. (bmbl2)


Lesenswert?

Hallo,

mich würde interessieren, ob jemand Erfahrungen hat, wie man als 
Privatmann etwas mit fomaler Verifikation (SVA etc.) spielen kann.

Auf Arbeit hat unser Verifikationsteam ein Design von mir neulich formal 
verifiziert und ich muss sagen, dass das schon cool war. Leider habe ich 
auf Arbeit gerade keine Zeit mich da einzuarbeiten bzw damit 
herumzuspielen.

Gibt es für den Privatmann im FPGA Umfeld eine Möglichkeit damit etwas 
herumzuspielen? Vermutlich wird der Wunsch VHDL Design + SystemVerilog 
Assertions utopisch sein, da kaum ein opensource Tool beide Sprachen 
gleichzeitig versteht. Aber vielleicht gibt es ja was für "nur" Verilog?

Ansonsten muss ich damit wohl warten, bis ich auf der Arbeit wieder 
etwas Zeit dafür habe und die Lizenzen frei sind :)

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

https://en.wikipedia.org/wiki/Formal_verification

Leider ist unter den 21 Sprachen kein deutscher Artikel. Wir müssen also 
dumm bleiben. Oder uns mit den drei Zeilen in simplifiziertem Englisch 
begnügen. Oder die KI befragen (kleiner Scherz).

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

Warum tut man hier so als bedeute "Privatmann" "kein Geld ausgeben 
wollen" ?!

* https://osvvm.org/
* http://ghdl.free.fr/

> Leider ist unter den 21 Sprachen kein deutscher Artikel. Wir müssen also
> dumm bleiben.

Oder auf die gedruckten Artikel zu den Thema zurückgreifen wie bspw.:

* 
https://www.amazon.de/Handbuch-Electronic-Design-Automation-Jansen/dp/3446212884
* 
https://www.all-electronics.de/wp-content/uploads/migrated/article-pdf/70698/f8672272ab1.pdf

: Bearbeitet durch User
von Ralf X. (ralf0815)


Lesenswert?

Einfach Ruhe bewahren..

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Klingt brandaktuell, 2001 und 2004. Und da klickt man einfach auf 
"solve" und schon hat man ein fertiges verifiziertes Programm (oder 
FPGA)?

von M. N. (bmbl2)


Lesenswert?

Bradward B. schrieb:
> Warum tut man hier so als bedeute "Privatmann" "kein Geld ausgeben
> wollen" ?!

Leider bedeutet Geld ausgeben in der EDA Welt gleich sehr sehr viel Geld 
ausgeben. Mehr als mancher von uns im Jahr überhaupt verdient.
Ich bastel zu Hause gern mal was auf dem FPGA. Aber wenn ich das mit dem 
Tooling bei der Arbeit vergleiche ist das leider eine andere Hausnummer. 
GHDL, NVC und verilator sind zwar cool, aber verglichen mit Xcelium 
schon ziemliche Krücken.

Bradward B. schrieb:
> * https://osvvm.org/
> * http://ghdl.free.fr/

Sind leider "klassische" Simulatoren / UVM Methodiken. Ich interessiere 
mich für was formales. So wie es bspw mit Cadence Jasper oder Siemens 
Onespin möglich ist. Gibt es irgendwas, was zugänglich ist, wo man mit 
Systemverilog properties etc bisschen formal herumspelen kann?

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

Leider bedeutet Geld ausgeben in der EDA Welt gleich sehr sehr viel Geld
ausgeben. Mehr als mancher von uns im Jahr überhaupt verdient.

Wiedermal ein Vorurteil das auch noch sehr schwammig formuliert ist, 
warum schreibt man da nicht, das man höchstens xyz €/a für ne Lizenz 
ausgeben will? Und vielleicht mal einen Blick auf die "Educational 
Lizenzen(Studenten)" (wie es sie für simulink ab und zu gibt) wirft? Und 
oft gibt es Evallizenzen für ein paar Wochen/Durchläufe - hatte da mal 
von Siemens was für PCN-Layout-Check

Wichtig wäre auch zu wissen, welche Wunder man nun mal konkret von der 
"formalen Verifikation" per Softwareautomat erwartet.

Da wird einem oft viel versprochen, insbesonders hinsichtlich 
Vollständigkeit, was sich dann im nachhinein doch als unerreichbar 
herausstellt oder nebenher verfrühstückt wurde.
Und trotz formaler Verifikation muss man in einer späteren 
Entwicklungsphase durch die Tests in der Klima-kammer. Also muss man 
doch Testcases und stimuli dafür erstellen, was man sich eigentlich dank 
der Möglichkeit der formalenb verifikation spären wollte.
Beispiel, was mir in Erinnerung blieb, ist die FSM - Analyse, Weil das 
ein Graph ist, kann man da mit mathematischen methoden formal 
verifizieren, ob es bspw. nicht erreichbare States gibt oder states ohne 
Abgänge. Aber das hat man ohnehin im Blick und was nutz einem der Haken 
vpn Verifikationstool, wenn die Toolchain "weiter hinten" wieder "Murks" 
baut. Bspw. die Staemachine durch (platzspärendes) binary encoding zu 
einer Schaltung mit "Sackgassen" Zuständen überführt. Und in der 
Risikoanalyse steht, das man auch zufällig kippende FF (SEU) zu 
betrachten hat, aber nur für DAL-A relevante Blöcke... die dann redunt 
auszulegen ist. (aber kein Verifikationstool sagt dir wo DAL-A oder 
DAL-E gilt, das muss schon das Projekt-managment, system-Architekt 
vorgeben.

Aber vielleicht hat sich ja in den letzten Jahren was für die Praxis 
relevantes ergeben, was man vielleicht mal evaluieren sollte? Was hat 
nun den TO so begeistert, welche Designfehler hat die formale 
Verifikation für ihn gefunden?

von Florian (flori_n)


Lesenswert?

Ich habe mal Property Specification Language (PSL) ausprobiert. Das ging 
alles mit Open-Source-Programmen.
Ich weiß nicht mehr genau wie, aber das lässt sich rausfinden. Zum 
Beispiel als Einstieg: 
https://pepijndevos.nl/2019/08/15/open-source-formal-verification-in-vhdl.html

von M. N. (bmbl2)


Lesenswert?

Bradward B. schrieb:
> Wiedermal ein Vorurteil das auch noch sehr schwammig formuliert ist,
> warum schreibt man da nicht, das man höchstens xyz €/a für ne Lizenz
> ausgeben will?

Grundsätzlich möchte ich als Privatperson zum spielen da erstmal gar 
kein Geld für ausgeben. Ich hatte mal bei einem Hersteller angefragt, ob 
es eine Möglichkeit gibt sein Tool als Privatmann weiterzuverwenden nach 
der Uni. Mir wurde daraufhin ein Schnäppchen angeboten: Single User 
Lizenz ohne Updates für einmalig 165.000€. Das war mir dann doch ein 
wenig zu teuer für meinen Hobbykeller.

Bradward B. schrieb:
> Wichtig wäre auch zu wissen, welche Wunder man nun mal konkret von der
> "formalen Verifikation" per Softwareautomat erwartet.

Ich erwarte gar keine Wunder. Muss ich zu Hause zum Glück ja auch nicht. 
Ich würde einfach mal gerne mit Systemverilog Assertions herumspielen 
und brauche somit ein Tool, was die zumindest rudimentär supported.

Bradward B. schrieb:
> Da wird einem oft viel versprochen, insbesonders hinsichtlich
> Vollständigkeit, was sich dann im nachhinein doch als unerreichbar
> herausstellt oder nebenher verfrühstückt wurde.
> Und trotz formaler Verifikation muss man in einer späteren
> Entwicklungsphase durch die Tests in der Klima-kammer.

Das sind zumindest bei uns auf Arbeit sowieso mehrere Paar Stiefel. Wir 
nutzen beruflich wie gesagt Siemens Onespin für formale 
Modulverifikation, die eben nur das Ziel hat das RTL auf Fehlerfreiheit 
zu prüfen. Dass das RTL dann so auch real geht ist ne andere Baustelle. 
Erst recht, wenn man Silizium selbst baut.
https://eda.sw.siemens.com/en-US/ic/questa-one/formal-verification/

Als Designer setzen wir selbst die von dir beschriebenen FSM checks etc. 
auf. Das sind aber für uns nur "Sanity Checks", die schnell laufen und 
verhindern, dass man was komplett Vermurkstes an die Verifikation 
weiterleitet. Da macht onespin so grundlegende Sachen, wie stick-Checks, 
ob alles toggeln kann, oder jeder FSM state irgendwie erreichbar ist und 
irgendwelche Counter nicht überlaufen.

Konkret finde ich aber tatsächliche formale Methoden, die auf 
tatsächliche Spezifikation prüfen total cool. Klar hat man das Problem, 
dass sich der Solver auch mal komplett verirren kann, wenn man 20 32-bit 
Zähler im Design hat oder so. Wenn das aber gut formuliert ist und er 
dann am ende "Property Holds" sagt, kann man sich sicher sein, dass das 
Design eben bezogen auf die Property, die man definiert hat unter allen 
Umständen funktioniert.
So simple Sachen wie das hier:
1
  property my_prop;
2
    @(posedge clk) disable iff (!rst_n)
3
       my_input |-> ##[1:5] my_output;
4
  endproperty
5
6
  assert property (my_prop);

finde ich schon ganz cool, dass man einfach definieren kann, dass bspw 
wenn my_input true is0t, innerhalb von einem bis fünf Zyklen der Output 
gesetzt sein muss (nur ein dummes Beispiel). wenn der Solver sagt, dass 
das passt, ist eben formal sichergestellt, dass das auch so genau ist 
und es keinen komischen edge case gibt in dem das dann eben nicht so 
ist.

Weitere Beispile für assertions, die von der Form her so sind: 
https://www.systemverilog.io/verification/sva-basics/#assertion-examples

Wir haben bspw. einen RISC-V Kern inklusive FPU vollständig formal 
verifiziert. Es gibt parallel dazu noch eine UVM testbench. Die hat aber 
nie alle edge cases gefunden, trotz zehntausender Seeds.

Habe gesehen, dass wohl Yosys support für SVA hat: 
https://yosyshq.readthedocs.io/projects/sby/en/latest/

Damit werde ich mich mal beschäftigen. Wie gesagt, ich verfolge damit 
primär erstmal das Ziel mich persönlcih mit diesen Assertions vertraut 
zu machen und mit der Sprache etwas herumzuspielen, um ein Gefühl dafür 
zu bekommen.

: Bearbeitet durch User
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.