Instalar y ejecutar la cadena de herramientas XLS upstream fijada

Instale la versión upstream fijada de XLS, compruebe su cobertura y ejecute pruebas de módulos DSLX y la generación de SystemVerilog.

Utilice Altifigence CLI 0.1.9 en Linux x86_64 para instalar una versión fijada de la cadena de herramientas XLS upstream y ejecutar con ella proyectos DSLX de varios archivos. La CLI verifica la versión antes de cada uso.

Instalar la cadena de herramientas

Elija una carpeta de instalación nueva y un archivo de configuración nuevo dentro de una carpeta existente. Ambas rutas deben ser absolutas y no deben existir todavía. Ejecute los comandos con su usuario habitual.

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"

Compruebe que el estado de salida sea 0. Los campos seleccionados del resultado son:

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

install descarga el archivo de la versión xls-v0.0.0-10617-geb3151083-linux-x64.tar.gz por HTTPS con /usr/bin/curl y comprueba su SHA-256 de9a5570f406d0865a159602180de1ac70e04cd51cfb808ead1f87549e56a4be. Extrae el archivo con /usr/bin/tar y /usr/bin/gzip y, después, comprueba el SHA-256 de cada una de las cinco herramientas y el inventario de la biblioteca estándar. Conserva los archivos de licencia de la versión y escribe la configuración solo cuando se superan estas comprobaciones. La carpeta de instalación es privada para su usuario. El archivo puede tener hasta 134217728 bytes y la instalación preparada hasta 536870912 bytes; los procesos secundarios comparten un plazo de 300 segundos.

Para instalar desde una copia del mismo archivo comprimido que ya tiene, añada --archive con su ruta absoluta. Se aplica la misma comprobación de SHA-256.

Leer la cobertura

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 es una consulta. Verifica de nuevo las herramientas instaladas con la versión fijada e informa de lo que puede solicitar. Para la instalación anterior, los campos seleccionados son:

{
  "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 enumera la versión, la revisión del código fuente, el SHA-256 del archivo comprimido, los valores SHA-256 de las herramientas y el SHA-256 de la biblioteca estándar. limits indica los límites de solicitud, código fuente, archivo, salida, resultado, tiempo y pipeline.

Ejecutar pruebas de módulos

Una solicitud incluye todos los módulos en files, indexados por una ruta relativa que termina en .x. entry indica el módulo que se va a ejecutar. Guarde esta solicitud como 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"
  }
}

Cree una carpeta de trabajo para la ejecución y, después, ejecute la solicitud:

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

Tras un estado de salida 0, los campos seleccionados del resultado son:

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

eval ejecuta las funciones de prueba y los procs de prueba del módulo de entrada. Cada ejecución utiliza una carpeta privada nueva dentro de la carpeta de trabajo y la elimina después. processes registra cada herramienta con su SHA-256, argumentos, código de salida y salida. Utilice la operación check para analizar y comprobar los tipos del módulo de entrada y de sus importaciones. Mantenga cada solicitud dentro de 2097152 bytes, hasta 64 archivos y 1048576 bytes de código fuente.

Generar SystemVerilog

Guarde esta solicitud como codegen.json. top indica la función DSLX que se va a generar:

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

Tras un estado de salida 0, los nombres de los artefactos son:

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

Cada artefacto tiene sha256, bytes y text. Esta solicitud genera el módulo xls_top con el reset rst. Elija de 1 a 64 etapas de pipeline, u omita pipeline_stages para obtener SystemVerilog combinacional. Utilice la operación convert para detenerse después de converted.ir y interface.textproto, o optimize para detenerse después de optimized.ir.

Corregir una instalación o una ejecución

Cuando el motor XLS devuelve un error, el comando termina con el estado de salida 2 y escribe un objeto altifigence.xls.error.v1 en la salida estándar. La CLI informa de una solicitud vacía o demasiado grande o de una ruta de host relativa en el error estándar con el prefijo error: y termina con el estado de salida 1. Para un error del motor XLS, lea su código y su mensaje:

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

Si aparece install-conflict: installation destination must not exist o install-conflict: toolchain config must not exist, elija rutas nuevas. Una instalación fallida elimina la carpeta y la configuración que creó.

Si aparece toolchain-mismatch: archive SHA256 does not match pinned official release, pase con --archive el archivo comprimido original de la versión, u omita --archive para descargarlo.

Si aparece toolchain-mismatch: configuration does not identify the supported pinned XLS release, pase el archivo de configuración que escribió install.

Si aparece io-error: work root does not exist, cree la carpeta de trabajo y ejecute de nuevo.

Si aparece no-tests: upstream eval requires at least one executed test or test proc, añada una función #[test] al módulo de entrada.

Si aparece invalid-request: check/eval operate on the entry module, not a selected top, elimine top. Si aparece invalid-request: DSLX optimize/codegen require a concrete top, añada top.

Si aparece upstream-failed, el mensaje indica la herramienta y da comienzo a su salida de diagnóstico. Corrija el módulo en la ubicación indicada y ejecute de nuevo.

Comandos de motor de la CLI