Führen Sie gepacktes RTL auf der CPU aus und verifizieren Sie es

Reichen Sie eine begrenzte Anfrage für eine kombinatorische Netzliste ein und spielen Sie deren gespeichertes Ergebnis unabhängig erneut durch.

Verwenden Sie für diesen lokalen Ablauf Altifigence CLI 0.1.9 unter Linux.

Setzen Sie den Exit-Status 0 voraus, bevor Sie ein gespeichertes Ergebnis lesen. Bewahren Sie die Standardfehlerausgabe separat auf und prüfen Sie die unten beschriebenen Ergebnisfelder.

Speichern Sie eine vollständige CPU-Anfrage

Erstellen Sie packed-request.json mit dem folgenden vollständigen Dokument. Dieses Beispiel verwendet eine Lane und einen Frame: Das Eingabewort setzt das einzelne Eingabebit, und die Pufferzelle kopiert es in die Ausgabe. Das Backend ist explizit angegeben. Eine CPU-Anfrage verwendet ein Gerätespeicherbudget von null. Lassen Sie das Schema und die Netzlistenstruktur beim ersten Ausprobieren des Beispiels unverändert und passen Sie anschließend den begrenzten Stimulus für Ihre eigene kombinatorische Netzliste an.

{
  "schema": "altifigence.rtl.packed-request.v1",
  "backend": "cpu",
  "netlist": {
    "schema": "logic-netlist-0",
    "top": "buffer",
    "input_sha256": "ce4c5490bac02643968670ee055c3575a7ed23bad13bd33b1057e8d9b17a1c3a",
    "ports": [
      {
        "name": "a",
        "direction": "input",
        "bits_lsb0": [
          {
            "net": 0
          }
        ]
      },
      {
        "name": "y",
        "direction": "output",
        "bits_lsb0": [
          {
            "net": 1
          }
        ]
      }
    ],
    "nets": [
      {
        "id": 0
      },
      {
        "id": 1
      }
    ],
    "cells": [
      {
        "id": 0,
        "name": "buffer",
        "output": 1,
        "kind": {
          "op": "buf",
          "a": {
            "net": 0
          }
        }
      }
    ]
  },
  "lanes": 1,
  "frames": 1,
  "stimulus": [
    1
  ],
  "timeout_ms": 1000,
  "device_memory_bytes": 0
}

Führen Sie die Anfrage aus und speichern Sie das native Ergebnis

alti compute rtl-capabilities
alti compute rtl-simulate --request packed-request.json > packed-result.json

Lesen Sie packed-result.json nach einem erfolgreichen Befehl. Das native Ergebnis enthält die Anfrage, ihren Hashwert, einen Simulationsbericht, output_words und net_toggle_counts. Für diese Ein-Bit-Pufferanfrage ist output_words [1]. Bewahren Sie die gesamte Ergebnisdatei auf: Die Verifizierung verwendet das vollständige Artefakt und keinen Auszug. Die Standardfehlerausgabe enthält den CLI-Ausführungsbeleg getrennt vom nativen JSON, das auf die Standardausgabe geschrieben wird.

Spielen Sie das gespeicherte Ergebnis erneut durch

alti compute rtl-verify --request packed-result.json
{"schema":"altifigence.rtl.packed-verification.v1","valid":true,"cuda_executed":false}

Das angezeigte Verifizierungsdokument ist ein Auszug; das vollständige Dokument enthält außerdem den Hashwert des Artefakts. Die Verifizierung spielt das gespeicherte mathematische Ergebnis auf der CPU erneut durch. Bewahren Sie diese Ausgabe neben der ursprünglichen Anfrage und dem Ergebnis auf, damit eine andere prüfende Person dieselbe Prüfung wiederholen kann.

Korrigieren Sie einen Fehler bei der Lane-Anzahl

Wenn Sie lanes in dieser Anfrage auf 0 ändern, wird der Fehlercode resource-limit mit der Meldung packed request exceeds count, time or explicit device budget limits erzeugt. Setzen Sie lanes in packed-request.json wieder auf 1 und lassen Sie die übrigen Beispielfelder unverändert. Erzeugen Sie anschließend das vollständige Ergebnis neu und verifizieren Sie es mit diesen Befehlen.

alti compute rtl-simulate --request packed-request.json > packed-result.json
alti compute rtl-verify --request packed-result.json