Was ist der Unterschied zwischen Testen und Verifizieren?

15

Jedes Lehrbuch, das ich gesehen habe, macht einen großen Teil der Tatsache aus, dass Testen und Verifizieren zwei verschiedene Konzepte sind. Doch keiner von ihnen bietet eine klare (oder zumindest für mich klar genug) Unterscheidung.

Um einen gewissen Zusammenhang zu schaffen, interessiere ich mich für die Überprüfung digitaler Hardware-Designs mithilfe von Hardware-Design-Sprachen (HDLs).

Ich habe einige Erklärungen gesehen, die auf einen "physischen" oder "greifbaren" Unterschied zurückgreifen: Wenn es sich um ein hergestelltes Gerät handelt, wird es getestet. Ist das die ganze Geschichte? Wenn ja, warum kommt das Wort "Test" bei der Überprüfung so häufig vor (insbesondere bei der Funktionsüberprüfung handelt es sich um Testfälle, Prüfstände, Prüfling (Prüfling), gerichtete Tests, zufällige Tests usw.)?

VHDL-Süchtiger
quelle

Antworten:

21

War ein ASIC Design Verification Engineer bei Qualcomm. Am einfachsten kann ich es erklären:

Testen: Stellen Sie sicher, dass ein Produkt funktioniert, nachdem Sie das Produkt erstellt haben (denken Sie an die Qualitätssicherung).

Überprüfung: Sicherstellen, dass ein Produkt funktioniert, BEVOR Sie es erstellt haben.

Beide testen, nur dass die Überprüfung komplizierter ist, da Sie einen Weg finden müssen, um das Produkt zu testen, bevor es existiert, und Sie müssen sicherstellen können, dass es wie geplant funktioniert und den Spezifikationen entspricht, wenn es tatsächlich herauskommt.

Zum Beispiel entwirft Intel seinen nächsten Prozessor, sie haben die Spezifikationen, sie haben die Schaltpläne und die Simulationen. Sie geben 1 Milliarde US-Dollar aus, um für die Herstellung und Herstellung zu sorgen. Dann kommt der Chip zurück und sie testen ihn und stellen fest, dass er nicht funktioniert. Sie warfen einfach eine Menge Geld aus dem Fenster.

Verifikation einschalten. Verifikationstechniker erstellen Modelle, die das Verhalten des Chips simulieren. Sie erstellen die Testbench, mit der diese speziellen Modelle getestet werden. Sie erhalten die Ergebnisse dieser Modelle und vergleichen sie dann mit den RTL-Ergebnissen (Model of the Circuit Writting in einer Hardware Design Language). Wenn sie übereinstimmen, sind die Dinge (normalerweise) in Ordnung.

Für den Überprüfungsprozess gibt es eine Reihe verschiedener Methoden, eine beliebte ist die Universal Verification Methodology (UVM) .

Es gibt viel Tiefe auf dem Gebiet und die Leute können ihre gesamte Karriere darin verbringen.

Noch eine zufällige Information: Normalerweise benötigen Sie 3 Prüfingenieure für einen Konstrukteur. Das sagt sowieso jeder auf dem Gebiet.

BEARBEITEN: Viele Leute denken, dass Verifizierung eine Testrolle ist, aber das ist es nicht. Es ist eine Designrolle für sich, da Sie alle Feinheiten Ihres IC wie ein Designer verstehen müssen und dann wissen müssen, wie Sie Modelle, Testbenches und alle Testfälle entwerfen, die die gesamte Funktionsfunktionalität Ihres IC abdecken sowie den Versuch, jede einzelne Zeile des RTL-Codes für alle möglichen Bitkombinationen zu treffen. Denken Sie daran, dass ein Prozessor heutzutage Milliarden von Transistoren besitzt, da der Herstellungsprozess immer kleinere (jetzt 14 nm) zulässt.

Außerdem entwerfen Designer in großen Unternehmen wie Intel, AMD, Qualcomm usw. den Chip nicht wirklich. In der Regel definiert der Architekt alle Spezifikationen, legt die Teile fest, die zusammengefügt werden müssen, um eine bestimmte Funktion mit einer bestimmten Anforderung (z. B. Geschwindigkeit, Auflösung usw.) zu erhalten, und der Designer codiert diese in RTL. Es ist keine leichte Aufgabe, es ist einfach nicht so viel Design, wie viele Ingenieure, die aus der Schule kommen, denken. Was jeder sein möchte, ist ein Architekt, aber es erfordert viel Bildung und Erfahrung, um an diesen Punkt zu gelangen. Viele Architekten haben einen Doktortitel und verfügen über 15 bis 20 Jahre Berufserfahrung als Designer. Dies sind brillante Leute (und manchmal verrückte), die es verdienen, das zu tun, was sie tun, und sie sind gut darin. Der Architekt auf dem ersten Chip, an dem ich gearbeitet habe, war etwas umständlich und befolgte einige soziale Normen nicht wirklich, aber er konnte alles lösen, woran Sie in Bezug auf den Chip festhalten, und manchmal löste er es in seinem Kopf und sagte es Ihnen auf ein Signal zu schauen und zu fragen: "Wie zum Teufel hat er das gemacht?" Dann bittest du ihn zu erklären und er tut es und es geht dir weit über den Kopf. Eigentlich hat mich inspiriert, Lehrbücher zu lesen, obwohl ich bereits meinen Abschluss gemacht habe.

PGT
quelle
+1 Danke für die letzte Bemerkung, hilft uns zu erkennen, dass das Gebiet in der Tat wichtig ist (obwohl RTL- und Designtechnik für die meisten Ingenieure meiner Meinung nach attraktiver klingt)
VHDL Addict
Würden Sie der Vollständigkeit halber hinzufügen, was ein Testfall ist?
VHDL Addict
Ich habe einen kleinen Vorgeschmack darauf hinzugefügt, was Verifizierung eigentlich ist, da Sie zum ersten Mal gesagt haben, dass die Designrolle attraktiver ist. Sie sind beide gute Rollen, hängt nur davon ab, was Sie mögen. Ein SoC wie der Snapdragon kann für einen Testfall Zehntausende von Testfällen aufweisen, die nach dem Zufallsprinzip in Millionenhöhe getestet werden. Einfach ausgedrückt: Sie wenden eine Reihe von Eingabebits an und diese werden in vielen Modulen geändert. Als Ergebnis erhalten Sie einige Ausgabebits, die Sie mit den Ergebnissen Ihres Modells vergleichen. Etwas so Einfaches wie das Testen eines Bildes, das auf Ihrem Telefon angezeigt wird, hätte ...
PGT
eine große Anzahl von Testfällen. Angenommen, Sie möchten ein einzelnes Pixel auf Ihrem mobilen Bildschirm anzeigen. Was jemand außerhalb des Feldes denken wird, ist 1 Bit für Weiß und 0 für Schwarz. In der tatsächlichen mobilen Welt kann sich dieses Pixel nach Größe, Intensität, Drehung und Farbformat (YUV ###, RGB ### usw.) unterscheiden. Und Sie testen wahrscheinlich 1 Bit innerhalb eines Satzes von Bits, die zusammen auf den Eingang angewendet werden. Die anderen Bits können 0 sein, weil sie schwarz sind, oder 1, weil sie andere Informationen verarbeiten, z. B. wie der Übertragungsmodus gehandhabt wird, CLK, aktiviert / deaktiviert, triggert, solche ausgefallenen Dinge.
PGT
6

In meinem Buch stellt die Überprüfung sicher, dass das, was Sie entworfen haben, "die Arbeit erledigt" - dh, Sie haben eine Reihe von Dingen, die das "Gerät" ausführen muss, und die Überprüfung hakt diese auf der Liste ab.

Das Testen stellt jedoch sicher, dass die Dinge, die das "Gerät" tut, richtig gemacht werden. Sie haben eine Reihe von Funktionen, und Sie testen jede Funktion, um sicherzustellen, dass diese Funktion ordnungsgemäß ausgeführt wird.

Kurz gesagt, Verification überprüft das Design und Testing das Produkt.

Majenko
quelle
Ich glaube, ich fange an zu verstehen ... Könnten Sie bitte einige Beispiele von jedem nennen?
VHDL Addict
Wie passt das zu einem Überprüfungsplan , der festlegt, was implementiert werden soll und wie man weiß, dass die Funktionalität korrekt ist? Es wäre wenig nützlich, eine Funktion zu implementieren oder abzuhaken, wenn sie nicht funktioniert.
VHDL Addict
@ Majenko - Also hast du ein Buch über Verifikation geschrieben? Möchten Sie weitere Details dazu mitteilen?
Michael Karas
4

Ausgehend von einem ASIC (Hardware) -Design-Hintergrund gibt es drei wichtige Begriffe: Validierung , Verifizierung und Test . In den früheren Antworten geht es im Allgemeinen um einen oder zwei dieser Begriffe, aber es wird kein klarer Kontrast zwischen allen drei Begriffen hergestellt, wie ich es tun würde. So verstehe ich sie:

  • Validierung: Entspricht die Spezifikation (häufig ein C-Modell) den Markt- oder Kundenanforderungen?
  • Überprüfung: Entspricht die Implementierung (RTL, Netzliste oder GDS2) der Spezifikation?
  • Test: Passt das hergestellte Gerät zur Implementierung?
Winston Smith
quelle
Können die Netlist- und die GDS2-Simulation unterschiedliche Ergebnisse liefern?
Ciro Santilli 事件 at 改造 法轮功 六四 六四
1
@CiroSantilli 巴拿馬 巴拿馬 六四 法轮功 事件, ich nehme an, Sie fragen nach dem Verhalten von Gattern gegenüber Transistoren. Für normale digitale Spannungen und Wellenformen würde ich sagen, dass sie dieselben Ergebnisse liefern. Es könnte jedoch "analoge" Effekte geben, die von idealisierten Gattern nicht berücksichtigt werden, wie z. Wenn diese Effekte vorhanden sind, gilt das ideale digitale Verhalten möglicherweise nicht.
Winston Smith
1

Ein Test soll feststellen, ob eine Spezifikation erfüllt ist. Bei der Überprüfung wird überprüft, ob das Gerät die Design-Eingaben erfüllt - dh alle Spezifikationen. Ich nehme an, es gibt viel mehr Interpretationen, aber das habe ich in den FIA-Leitfäden gesehen.

Scott Seidman
quelle
Ich habe den Wortlaut ein wenig geändert (von Test zu Test ), um zu verdeutlichen, dass es sich bei beiden um Prozesse handelt. Ich stimme Ihnen zu, dass für einzelne Tests das Wort Test angemessen ist (manchmal habe ich das Gefühl, ich wiederhole das Offensichtliche mit diesen terminologischen Fragen ...) :)
VHDL Addict
1

Wir unterscheiden zwischen Verifikationstests und Validierungstests. Angenommen, Sie entwerfen einen Lüfter, der einige Geräte abkühlt. Verifikationstests werden durchgeführt, um sicherzustellen, dass der Lüfter alle Konstruktionsanforderungen erfüllt. So können Sie Luftstrom, Temperaturwechsel, Vibration usw. testen.

Validierungstests stellen sicher, dass die Designanforderungen richtig waren. Haben uns die Designeingänge, die wir für den Lüfter hatten, tatsächlich den Lüfter gegeben, den wir wollten? Zum Beispiel würden Sie sicherstellen, dass der Lüfter das Gerät tatsächlich so abkühlt, wie es beabsichtigt ist.

Eric
quelle
So werden die Begriffe in den Büchern über Software Engineering verstanden, die ich gelesen habe. Validierung = stellen Sie sicher, dass die Anforderungen stimmen (überprüfen Sie sie mit dem Kunden, den Vorschriften usw.); Überprüfung = Stellen Sie sicher, dass das Produkt richtig ist (testen Sie es anhand der Spezifikation)
Wouter van Ooijen
1

ISO9000 spricht über Verifikation und Validierung. Im Kontext von ISO9000 bedeutet Verifizierung, ein Prototypendesign zu testen, um zu beweisen, dass es den Funktions- und Leistungserwartungen entspricht. Validierung bedeutet, dass das Testen des ersten Produktionslaufs auch die Designerwartungen erfüllt. Überprüfe zuerst, bestätige später ist meine kleine Möglichkeit, die Reihenfolge der Dinge wiederzuerlangen.

Verschiedene Softwarestandards kehren die Reihenfolge der Überprüfung und Validierung um, was zu Verwirrung führen kann.

Fazit ist ... Warum testen Sie etwas? Handelt es sich um ein Prototypendesign? Wenn ja, nennen die Qualitätsstandards diese Überprüfung. Wenn Sie zum ersten Mal einen Produktionslauf testen, nennen Hardware-Mitarbeiter diese Validierung.

Nur meine persönlichen Erfahrungen.

Andy aka
quelle