Die festgelegte Upstream-XLS-Toolchain installieren und ausführen
Installieren Sie die festgelegte Upstream-XLS-Version, prüfen Sie deren Abdeckung und führen Sie DSLX-Modultests und die SystemVerilog-Erzeugung aus.
Verwenden Sie Altifigence CLI 0.1.9 unter Linux x86_64, um eine festgelegte Version der Upstream-XLS-Toolchain zu installieren und damit DSLX-Projekte mit mehreren Dateien auszuführen. Die CLI verifiziert die Version vor jeder Verwendung.
Die Toolchain installieren
Wählen Sie einen neuen Installationsordner und eine neue Konfigurationsdatei unter einem vorhandenen Ordner. Beide Pfade müssen absolut sein und dürfen noch nicht existieren. Führen Sie die Befehle mit Ihrem normalen Benutzerkonto aus.
set -euo pipefail
TOOLS="$HOME/alti-tools"
mkdir -p "$TOOLS"
alti xls upstream install \
--destination "$TOOLS/xls-upstream" \
--toolchain-config "$TOOLS/xls-upstream.json" > "$TOOLS/xls-install.json"
jq '{schema, status, license_files}' "$TOOLS/xls-install.json"Prüfen Sie, dass der Exit-Status 0 ist. Die ausgewählten Ergebnisfelder lauten:
{
"schema": "altifigence.xls.upstream-install.v1",
"status": "succeeded",
"license_files": [
"LICENSE",
"THIRD_PARTY_NOTICES.txt"
]
}install lädt das Release-Archiv xls-v0.0.0-10617-geb3151083-linux-x64.tar.gz über HTTPS mit /usr/bin/curl herunter und überprüft seinen SHA-256-Wert de9a5570f406d0865a159602180de1ac70e04cd51cfb808ead1f87549e56a4be. Es entpackt das Archiv mit /usr/bin/tar und /usr/bin/gzip und überprüft danach den SHA-256-Wert jedes der fünf Tools sowie das Inventar der Standardbibliothek. Es bewahrt die Lizenzdateien des Releases auf und schreibt die Konfiguration erst, wenn diese Prüfungen bestanden sind. Der Installationsordner ist nur für Ihr Benutzerkonto zugänglich. Das Archiv darf bis zu 134217728 Bytes und die bereitgestellte Installation bis zu 536870912 Bytes umfassen. Für die Kindprozesse gilt eine gemeinsame Frist von 300 Sekunden.
Um aus einer Kopie desselben Archivs zu installieren, die Sie bereits haben, fügen Sie --archive mit dem absoluten Pfad hinzu. Es gilt dieselbe SHA-256-Prüfung.
Die Abdeckung lesen
CONFIG="$HOME/alti-tools/xls-upstream.json"
alti xls upstream capabilities --toolchain-config "$CONFIG" > "$HOME/alti-tools/xls-capabilities.json"
jq '{schema, operations, input_kinds}' "$HOME/alti-tools/xls-capabilities.json"capabilities ist eine Abfrage. Sie verifiziert die installierten Werkzeuge erneut anhand der festgelegten Version und meldet, was Sie anfordern können. Für die obige Installation lauten die ausgewählten Felder:
{
"schema": "altifigence.xls.upstream-capabilities.v1",
"operations": ["check", "eval", "convert", "optimize", "codegen"],
"input_kinds": {
"dslx": ["check", "eval", "convert", "optimize", "codegen"],
"xls-ir": ["check", "optimize", "codegen"]
}
}identity listet das Release, die Quellrevision, den SHA-256 des Archivs, die SHA-256-Werte der Werkzeuge und den SHA-256 der Standardbibliothek auf. limits nennt die Grenzen für Anfrage, Quelltext, Datei, Ausgabe, Ergebnis, Zeit und Pipeline.
Modultests ausführen
Eine Anfrage enthält jedes Modul in files, mit einem relativen Pfad als Schlüssel, der auf .x endet. entry benennt das auszuführende Modul. Speichern Sie diese Anfrage als tests.json:
{
"schema": "altifigence.xls.upstream-request.v1",
"operation": "eval",
"input_kind": "dslx",
"entry": "main.x",
"files": {
"adder.x": "pub fn add(x: u8, y: u8) -> u8 { x + y }\n",
"main.x": "import adder;\n\n#[test]\nfn wraps() {\n assert_eq(adder::add(u8:255, u8:1), u8:0);\n}\n"
}
}Legen Sie einen Arbeitsordner für die Ausführung an und führen Sie dann die Anfrage aus:
mkdir -p "$HOME/alti-work/xls"
alti xls upstream run --toolchain-config "$CONFIG" \
--work-root "$HOME/alti-work/xls" --request tests.json > tests.result.json
jq '{schema, status, operation, tests_executed}' tests.result.jsonNach dem Exit-Status 0 lauten die ausgewählten Ergebnisfelder:
{
"schema": "altifigence.xls.upstream-result.v1",
"status": "succeeded",
"operation": "eval",
"tests_executed": 1
}eval führt die Testfunktionen und Test-Procs des Einstiegsmoduls aus. Jeder Lauf verwendet einen neuen privaten Ordner im Arbeitsordner und entfernt ihn anschließend. processes erfasst jedes Tool mit SHA-256-Wert, Argumenten, Exit-Code und Ausgabe. Verwenden Sie die Operation check, um das Einstiegsmodul und seine Importe zu parsen und auf Typkorrektheit zu prüfen. Halten Sie eine Anfrage innerhalb von 2097152 Bytes, mit bis zu 64 Dateien und 1048576 Bytes Quelltext.
SystemVerilog erzeugen
Speichern Sie diese Anfrage als codegen.json. top benennt die zu erzeugende DSLX-Funktion:
{
"schema": "altifigence.xls.upstream-request.v1",
"operation": "codegen",
"input_kind": "dslx",
"entry": "adder.x",
"top": "add",
"pipeline_stages": 2,
"files": {
"adder.x": "pub fn add(x: u8, y: u8) -> u8 { x + y }\n"
}
}alti xls upstream run --toolchain-config "$CONFIG" \
--work-root "$HOME/alti-work/xls" --request codegen.json > codegen.result.json
jq '.artifacts | keys' codegen.result.json
jq -r '.artifacts["module.sv"].text' codegen.result.json > module.svNach dem Exit-Status 0 lauten die Artefaktnamen:
[
"converted.ir",
"interface.textproto",
"module.sv",
"optimized.ir",
"schedule.textproto",
"signature.textproto"
]Jedes Artefakt hat sha256, bytes und text. Diese Anfrage erzeugt das Modul xls_top mit dem Reset rst. Wählen Sie 1 bis 64 Pipeline-Stufen oder lassen Sie pipeline_stages für kombinatorisches SystemVerilog weg. Verwenden Sie die Operation convert, um nach converted.ir und interface.textproto anzuhalten, oder optimize, um nach optimized.ir anzuhalten.
Eine Installation oder Ausführung korrigieren
Wenn die XLS-Engine einen Fehler zurückgibt, endet der Befehl mit dem Exit-Status 2 und schreibt ein Objekt altifigence.xls.error.v1 in die Standardausgabe. Die CLI meldet eine leere oder zu große Anfrage oder einen relativen Host-Pfad in der Standardfehlerausgabe mit dem Präfix error: und endet mit dem Exit-Status 1. Lesen Sie bei einem Fehler der XLS-Engine dessen Code und Meldung:
jq -r '.error.code + ": " + .error.message' tests.result.jsonBei install-conflict: installation destination must not exist oder install-conflict: toolchain config must not exist wählen Sie neue Pfade. Eine fehlgeschlagene Installation entfernt den Ordner und die Konfiguration, die sie erstellt hat.
Bei toolchain-mismatch: archive SHA256 does not match pinned official release übergeben Sie das ursprüngliche Release-Archiv mit --archive oder lassen Sie --archive weg, um es herunterzuladen.
Bei toolchain-mismatch: configuration does not identify the supported pinned XLS release übergeben Sie die Konfigurationsdatei, die install geschrieben hat.
Bei io-error: work root does not exist legen Sie den Arbeitsordner an und führen Sie den Befehl erneut aus.
Bei no-tests: upstream eval requires at least one executed test or test proc fügen Sie dem Einstiegsmodul eine #[test]-Funktion hinzu.
Bei invalid-request: check/eval operate on the entry module, not a selected top entfernen Sie top. Bei invalid-request: DSLX optimize/codegen require a concrete top fügen Sie top hinzu.
Bei upstream-failed nennt die Meldung das Werkzeug und beginnt mit dessen Diagnoseausgabe. Korrigieren Sie das Modul an der gemeldeten Stelle und führen Sie den Befehl erneut aus.