17 / 20 · Konzept
Scoreboards und Invarianten
Prüfen Sie neben der endgültigen Matrix auch Terme, Tags, Flanken und Ausgabeübertragungen.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
Zwei Referenzen trennen
Berechnen Sie breite Summen mit einer direkten mathematischen Referenz und unabhängigen i/j/k-Schleifen. Verwenden Sie ein separates Zeitmodell, um A nach rechts und B nach unten zu bewegen. Wer die RTL-Indizierungshilfe in das Sollmodell kopiert, riskiert denselben Fehler zu reproduzieren. Beginnen Sie mit festen, von Hand berechneten Beispielen und erweitern Sie dann auf reproduzierbare Zufallseingaben.
Verwenden Sie job und globale Ausgabekoordinaten als Schlüssel des Ergebnis-Scoreboards. Vergleichen Sie jeden empfangenen Wert und markieren Sie seinen Schlüssel als empfangen. Ein wiederholter Schlüssel ist ein Duplikat, ein unerwarteter ein Adressfehler und ein nicht empfangener erwarteter Schlüssel fehlt. Auch Nullergebnisse müssen ausgegeben werden. Aufgefüllte Koordinaten außerhalb des Bereichs dürfen niemals gespeichert werden.
Invarianten im Array prüfen
Jedes PE muss genau [0,1,...,K−1] verarbeiten. Passende gültige Operanden benötigen gleiche job- und k-Tags. Count bleibt zwischen Null und K. Eine Pausenflanke hält Operanden, valid, Tags, Akkumulator und Zähler. Löschen hinterlässt Zähler und Akkumulator auf Null ohne gültige Tokens. Ein blockiertes Ergebnis hält data und job bei weiterhin gesetztem valid.
| Ebene | Fehlerbeispiel | Wahrscheinlicher Fehler |
|---|---|---|
| Arithmetik | 23 statt 19 | Index, Vorzeichen oder Breite |
| Terme | [0,1,1] | Doppeltes Token |
| Timing | Letztes PE an E2 fertig | Vorzeitiger Abschluss |
| Pause | Zähler verändert sich während Pause | Nur teilweise gehaltener Zustand |
| Ausgabe | Ein Schlüssel zweimal empfangen | Handshake-Steuerung |
Im 2×2-Beispiel enthält das letzte PE nach E2 achtzehn und nach E3 fünfzig. Ein Fehler, der global-done schon an E2 setzt, sollte sowohl numerische als auch zeitliche Prüfungen verletzen. Umgekehrt können verdoppelte und ausgelassene gleichwertige Produkte die endgültige Summe erhalten; Termverfolgung erkennt diesen Zufall.
Speichern Sie Zufallsstartwerte, Matrizen, Dimensionen, Breiten und Pausenpositionen. Protokollieren Sie das erste abweichende PE, den Term und die physische Flanke. Absichtliche Tag-Fehler sollen sichtbar fehlschlagen, statt still zu verschwinden.
Beobachten Sie Zustand konsistent nach E_t. Node-Referenzausführung, RTL-Kompilierung, RTL-Simulation, Synthese, Timing-Abschluss, DDS-Projektausführung und Platinentests belegen unterschiedliche Tatsachen. Die gelieferten Node-Programme bestätigen Arithmetik- und Ablaufmodelle. Künftige RTL-Tests können Testfälle wiederverwenden, müssen aber eigene Werkzeugversionen, Befehle und Protokolle aufbewahren.
Selbst ausprobieren
Konstruieren Sie Eingaben, bei denen eine Prüfung nur der endgültigen Summe einen verdoppelten und einen ausgelassenen Term übersieht.
Erklärung lesen
A-Zeile [1,1] und B-Spalte [5,5] ergeben korrekt zehn. Auch die Verarbeitung von [0,0] ergibt zehn, verdoppelt aber k0 und lässt k1 aus. Die Forderung nach richtigem Wert und exakter Termliste [0,1] erkennt den Fehler.