Installare ed eseguire la toolchain XLS upstream a versione fissata

Installa la release XLS upstream fissata, controlla la sua copertura ed esegui i test dei moduli DSLX e la generazione di SystemVerilog.

Utilizza Altifigence CLI 0.1.9 su Linux x86_64 per installare una release della toolchain XLS upstream fissata ed eseguire con essa progetti DSLX multi-file. La CLI verifica la release prima di ogni utilizzo.

Installare la toolchain

Scegli una nuova cartella di installazione e un nuovo file di configurazione in una cartella esistente. Entrambi i percorsi devono essere assoluti e non devono ancora esistere. Esegui i comandi con il tuo normale account utente.

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"

Verifica che il codice di uscita sia 0. I campi selezionati del risultato sono:

{
  "schema": "altifigence.xls.upstream-install.v1",
  "status": "succeeded",
  "license_files": [
    "LICENSE",
    "THIRD_PARTY_NOTICES.txt"
  ]
}

install scarica l’archivio della versione xls-v0.0.0-10617-geb3151083-linux-x64.tar.gz tramite HTTPS con /usr/bin/curl e verifica il suo SHA-256 de9a5570f406d0865a159602180de1ac70e04cd51cfb808ead1f87549e56a4be. Estrae l’archivio con /usr/bin/tar e /usr/bin/gzip, quindi verifica il SHA-256 di ciascuno dei cinque strumenti e l’inventario della libreria standard. Conserva i file di licenza della versione e scrive la configurazione solo dopo il superamento di queste verifiche. La cartella di installazione è privata per il tuo utente. L’archivio può avere fino a 134217728 byte e l’installazione preparata fino a 536870912 byte; i processi figli condividono una scadenza di 300 secondi.

Per installare da una copia dello stesso archivio che hai già, aggiungi --archive con il suo percorso assoluto. Si applica lo stesso controllo SHA-256.

Leggere la copertura

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 è una query. Verifica di nuovo gli strumenti installati rispetto alla release fissata e riporta cosa puoi richiedere. Per l’installazione sopra, i campi selezionati sono:

{
  "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 elenca la release, la revisione del sorgente, lo SHA-256 dell’archivio, i valori SHA-256 degli strumenti e lo SHA-256 della libreria standard. limits indica i limiti di richiesta, sorgente, file, output, risultato, tempo e pipeline.

Eseguire i test dei moduli

Una richiesta contiene ogni modulo in files, identificato da un percorso relativo che termina con .x. entry indica il modulo da eseguire. Salva questa richiesta come 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"
  }
}

Crea una cartella di lavoro per l’esecuzione, quindi esegui la richiesta:

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.json

Dopo il codice di uscita 0, i campi selezionati del risultato sono:

{
  "schema": "altifigence.xls.upstream-result.v1",
  "status": "succeeded",
  "operation": "eval",
  "tests_executed": 1
}

eval esegue le funzioni di test e i proc di test del modulo di ingresso. Ogni esecuzione utilizza una nuova cartella privata nella cartella di lavoro e la rimuove al termine. processes registra ogni strumento con SHA-256, argomenti, codice di uscita e output. Utilizza l’operazione check per analizzare e verificare i tipi del modulo di ingresso e delle sue importazioni. Mantieni ogni richiesta entro 2097152 byte, con un massimo di 64 file e 1048576 byte di sorgente.

Generare SystemVerilog

Salva questa richiesta come codegen.json. top indica la funzione DSLX da generare:

{
  "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.sv

Dopo il codice di uscita 0, i nomi degli artefatti sono:

[
  "converted.ir",
  "interface.textproto",
  "module.sv",
  "optimized.ir",
  "schedule.textproto",
  "signature.textproto"
]

Ogni artefatto ha sha256, bytes e text. Questa richiesta genera il modulo xls_top con reset rst. Scegli da 1 a 64 stadi di pipeline, oppure ometti pipeline_stages per SystemVerilog combinatorio. Utilizza l’operazione convert per fermarti dopo converted.ir e interface.textproto, oppure optimize per fermarti dopo optimized.ir.

Correggere un’installazione o un’esecuzione

Quando il motore XLS restituisce un errore, il comando termina con codice di uscita 2 e scrive nello standard output un oggetto altifigence.xls.error.v1. La CLI segnala una richiesta vuota o troppo grande o un percorso host relativo nello standard error con il prefisso error: e termina con codice di uscita 1. Per un errore del motore XLS, leggi il suo codice e il suo messaggio:

jq -r '.error.code + ": " + .error.message' tests.result.json

Per install-conflict: installation destination must not exist o install-conflict: toolchain config must not exist, scegli nuovi percorsi. Un’installazione non riuscita rimuove la cartella e la configurazione che ha creato.

Per toolchain-mismatch: archive SHA256 does not match pinned official release, passa l’archivio originale della release con --archive, oppure ometti --archive per scaricarlo.

Per toolchain-mismatch: configuration does not identify the supported pinned XLS release, passa il file di configurazione che install ha scritto.

Per io-error: work root does not exist, crea la cartella di lavoro ed esegui di nuovo.

Per no-tests: upstream eval requires at least one executed test or test proc, aggiungi una funzione #[test] al modulo di ingresso.

Per invalid-request: check/eval operate on the entry module, not a selected top, rimuovi top. Per invalid-request: DSLX optimize/codegen require a concrete top, aggiungi top.

Per upstream-failed, il messaggio nomina lo strumento e inizia il suo output diagnostico. Correggi il modulo nella posizione indicata ed esegui di nuovo.

Comandi dei motori CLI