Installer et exécuter la chaîne d’outils XLS upstream épinglée
Installez la version XLS upstream épinglée, vérifiez sa couverture, puis exécutez des tests de modules DSLX et la génération de SystemVerilog.
Utilisez Altifigence CLI 0.1.9 sous Linux x86_64 pour installer une version épinglée de la chaîne d’outils XLS upstream et exécuter avec elle des projets DSLX multifichiers. La CLI vérifie la version avant chaque utilisation.
Installer la chaîne d’outils
Choisissez un nouveau dossier d’installation et un nouveau fichier de configuration dans un dossier existant. Les deux chemins doivent être absolus et ne doivent pas encore exister. Exécutez les commandes avec votre compte utilisateur habituel.
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"Vérifiez que le code de sortie est 0. Les champs de résultat sélectionnés sont :
{
"schema": "altifigence.xls.upstream-install.v1",
"status": "succeeded",
"license_files": [
"LICENSE",
"THIRD_PARTY_NOTICES.txt"
]
}install télécharge l’archive de version xls-v0.0.0-10617-geb3151083-linux-x64.tar.gz via HTTPS avec /usr/bin/curl et vérifie son SHA-256 de9a5570f406d0865a159602180de1ac70e04cd51cfb808ead1f87549e56a4be. Il extrait l’archive avec /usr/bin/tar et /usr/bin/gzip, puis vérifie le SHA-256 de chacun des cinq outils et l’inventaire de la bibliothèque standard. Il conserve les fichiers de licence de la version et écrit la configuration uniquement après la réussite de ces vérifications. Le dossier d’installation est privé à votre utilisateur. L’archive peut atteindre 134217728 octets et l’installation préparée 536870912 octets ; les processus enfants partagent une échéance de 300 secondes.
Pour installer à partir d’une copie de la même archive que vous avez déjà, ajoutez --archive avec son chemin absolu. La même vérification SHA-256 s’applique.
Lire la couverture
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 est une interrogation. Elle revérifie les outils installés par rapport à la version épinglée et indique ce que vous pouvez demander. Pour l’installation ci-dessus, les champs sélectionnés sont :
{
"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 liste la version, la révision source, le SHA-256 de l’archive, les valeurs SHA-256 des outils et le SHA-256 de la bibliothèque standard. limits donne les bornes de la requête, du code source, du fichier, de la sortie, du résultat, du temps et du pipeline.
Exécuter des tests de module
Une requête contient chaque module dans files, indexé par un chemin relatif se terminant par .x. entry nomme le module à exécuter. Enregistrez cette requête sous 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"
}
}Créez un dossier de travail pour l’exécution, puis exécutez la requête :
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.jsonAprès le code de sortie 0, les champs de résultat sélectionnés sont :
{
"schema": "altifigence.xls.upstream-result.v1",
"status": "succeeded",
"operation": "eval",
"tests_executed": 1
}eval exécute les fonctions de test et les procs de test du module d’entrée. Chaque exécution utilise un nouveau dossier privé dans le dossier de travail et le supprime ensuite. processes enregistre chaque outil avec son SHA-256, ses arguments, son code de sortie et sa sortie. Utilisez l’opération check pour analyser et vérifier les types du module d’entrée et de ses imports. Limitez une requête à 2097152 octets, à 64 fichiers et à 1048576 octets de source.
Générer du SystemVerilog
Enregistrez cette requête sous codegen.json. top nomme la fonction DSLX à générer :
{
"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.svAprès le code de sortie 0, les noms des artefacts sont :
[
"converted.ir",
"interface.textproto",
"module.sv",
"optimized.ir",
"schedule.textproto",
"signature.textproto"
]Chaque artefact a sha256, bytes et text. Cette requête génère le module xls_top avec le reset rst. Choisissez de 1 à 64 étages de pipeline, ou omettez pipeline_stages pour du SystemVerilog combinatoire. Utilisez l’opération convert pour vous arrêter après converted.ir et interface.textproto, ou optimize pour vous arrêter après optimized.ir.
Corriger une installation ou une exécution
Lorsque le moteur XLS renvoie une erreur, la commande se termine avec le code de sortie 2 et écrit sur la sortie standard un objet altifigence.xls.error.v1. La CLI signale une requête vide ou trop volumineuse ou un chemin hôte relatif sur l’erreur standard avec le préfixe error: et se termine avec le code de sortie 1. Pour une erreur du moteur XLS, lisez son code et son message :
jq -r '.error.code + ": " + .error.message' tests.result.jsonPour install-conflict: installation destination must not exist ou install-conflict: toolchain config must not exist, choisissez de nouveaux chemins. Une installation en échec supprime le dossier et la configuration qu’elle a créés.
Pour toolchain-mismatch: archive SHA256 does not match pinned official release, transmettez l’archive d’origine de la version avec --archive, ou omettez --archive pour la télécharger.
Pour toolchain-mismatch: configuration does not identify the supported pinned XLS release, transmettez le fichier de configuration écrit par install.
Pour io-error: work root does not exist, créez le dossier de travail et relancez la commande.
Pour no-tests: upstream eval requires at least one executed test or test proc, ajoutez une fonction #[test] au module d’entrée.
Pour invalid-request: check/eval operate on the entry module, not a selected top, supprimez top. Pour invalid-request: DSLX optimize/codegen require a concrete top, ajoutez top.
Pour upstream-failed, le message nomme l’outil et commence par sa sortie de diagnostic. Corrigez le module à l’emplacement indiqué et relancez la commande.