Menginstal dan menjalankan toolchain XLS upstream yang disematkan

Instal rilis XLS upstream yang disematkan, periksa cakupannya, dan jalankan pengujian modul DSLX serta pembuatan SystemVerilog.

Gunakan Altifigence CLI 0.1.9 di Linux x86_64 untuk menginstal satu rilis toolchain XLS upstream yang disematkan dan menjalankan proyek DSLX multi-file dengannya. CLI memverifikasi rilis sebelum setiap penggunaan.

Menginstal toolchain

Pilih folder instalasi baru dan file konfigurasi baru di bawah folder yang sudah ada. Kedua jalur harus absolut dan belum boleh ada. Jalankan perintah sebagai pengguna biasa.

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"

Pastikan status keluar adalah 0. Kolom hasil yang dipilih adalah:

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

install mengunduh arsip rilis xls-v0.0.0-10617-geb3151083-linux-x64.tar.gz melalui HTTPS dengan /usr/bin/curl dan memeriksa SHA-256-nya, de9a5570f406d0865a159602180de1ac70e04cd51cfb808ead1f87549e56a4be. Perintah ini mengekstrak arsip dengan /usr/bin/tar dan /usr/bin/gzip, lalu memeriksa SHA-256 dari masing-masing lima alat dan inventaris pustaka standar. Perintah ini menyimpan file lisensi rilis dan menulis konfigurasi hanya setelah pemeriksaan ini lolos. Folder instalasi bersifat privat untuk pengguna Anda. Arsip dapat berukuran hingga 134217728 byte dan instalasi staging hingga 536870912 byte, dan proses anak berbagi tenggat 300 detik.

Untuk menginstal dari salinan arsip yang sama yang sudah Anda miliki, tambahkan --archive dengan jalur absolutnya. Pemeriksaan SHA-256 yang sama berlaku.

Membaca cakupan

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 adalah kueri. Perintah ini memverifikasi lagi alat yang terinstal terhadap rilis yang disematkan dan melaporkan apa yang dapat Anda minta. Untuk instalasi di atas, kolom yang dipilih adalah:

{
  "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 mencantumkan rilis, revisi sumber, SHA-256 arsip, nilai SHA-256 alat, dan SHA-256 pustaka standar. limits memberikan batas permintaan, sumber, file, output, hasil, waktu, dan pipeline.

Menjalankan pengujian modul

Sebuah permintaan membawa setiap modul di files, dengan kunci berupa jalur relatif yang berakhiran .x. entry menyebutkan modul yang dijalankan. Simpan permintaan ini sebagai 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"
  }
}

Buat folder kerja untuk eksekusi, lalu jalankan permintaan:

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

Setelah status keluar 0, kolom hasil yang dipilih adalah:

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

eval menjalankan fungsi pengujian dan proc pengujian dari modul entry. Setiap eksekusi menggunakan folder privat baru di dalam folder kerja dan menghapusnya setelahnya. processes mencatat setiap alat dengan SHA-256, argumen, kode keluar, dan outputnya. Gunakan operasi check untuk mengurai dan memeriksa tipe modul entry serta impornya. Batasi permintaan hingga 2097152 byte, hingga 64 file, dan 1048576 byte sumber.

Menghasilkan SystemVerilog

Simpan permintaan ini sebagai codegen.json. top menyebutkan fungsi DSLX yang akan dihasilkan:

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

Setelah status keluar 0, nama artefaknya adalah:

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

Setiap artefak memiliki sha256, bytes, dan text. Permintaan ini menghasilkan modul xls_top dengan reset rst. Pilih 1 hingga 64 tahap pipeline, atau hilangkan pipeline_stages untuk SystemVerilog kombinasional. Gunakan operasi convert untuk berhenti setelah converted.ir dan interface.textproto, atau optimize untuk berhenti setelah optimized.ir.

Memperbaiki instalasi atau eksekusi

Saat mesin XLS mengembalikan error, perintah keluar dengan status 2 dan menulis objek altifigence.xls.error.v1 ke standard output. CLI melaporkan permintaan kosong atau terlalu besar atau jalur host relatif di standard error dengan awalan error: dan keluar dengan status 1. Untuk error mesin XLS, baca kode dan pesannya:

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

Untuk install-conflict: installation destination must not exist atau install-conflict: toolchain config must not exist, pilih jalur baru. Instalasi yang gagal menghapus folder dan konfigurasi yang dibuatnya.

Untuk toolchain-mismatch: archive SHA256 does not match pinned official release, berikan arsip rilis asli dengan --archive, atau hilangkan --archive untuk mengunduhnya.

Untuk toolchain-mismatch: configuration does not identify the supported pinned XLS release, berikan file konfigurasi yang ditulis oleh install.

Untuk io-error: work root does not exist, buat folder kerja lalu jalankan lagi.

Untuk no-tests: upstream eval requires at least one executed test or test proc, tambahkan fungsi #[test] ke modul entry.

Untuk invalid-request: check/eval operate on the entry module, not a selected top, hapus top. Untuk invalid-request: DSLX optimize/codegen require a concrete top, tambahkan top.

Untuk upstream-failed, pesan menyebutkan alat dan memulai output diagnostiknya. Perbaiki modul pada lokasi yang dilaporkan lalu jalankan lagi.

Perintah engine CLI