Cài đặt và chạy chuỗi công cụ XLS upstream đã ghim
Cài đặt bản phát hành XLS upstream đã ghim, kiểm tra phạm vi bao phủ của nó, rồi chạy kiểm thử mô-đun DSLX và tạo SystemVerilog.
Dùng Altifigence CLI 0.1.9 trên Linux x86_64 để cài đặt một bản phát hành chuỗi công cụ XLS upstream đã ghim và chạy các dự án DSLX nhiều tệp với nó. CLI xác minh bản phát hành trước mỗi lần sử dụng.
Cài đặt chuỗi công cụ
Chọn một thư mục cài đặt mới và một tệp cấu hình mới nằm dưới một thư mục đã có. Cả hai đường dẫn phải là tuyệt đối và chưa tồn tại. Chạy các lệnh bằng tài khoản người dùng thông thường.
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"Xác nhận trạng thái thoát là 0. Các trường kết quả được chọn là:
{
"schema": "altifigence.xls.upstream-install.v1",
"status": "succeeded",
"license_files": [
"LICENSE",
"THIRD_PARTY_NOTICES.txt"
]
}install tải xuống tệp lưu trữ bản phát hành xls-v0.0.0-10617-geb3151083-linux-x64.tar.gz qua HTTPS bằng /usr/bin/curl và kiểm tra SHA-256 của nó de9a5570f406d0865a159602180de1ac70e04cd51cfb808ead1f87549e56a4be. Nó giải nén tệp lưu trữ bằng /usr/bin/tar và /usr/bin/gzip, rồi kiểm tra SHA-256 của từng công cụ trong năm công cụ và bản kê thư viện chuẩn. Nó giữ các tệp giấy phép của bản phát hành và chỉ ghi cấu hình sau khi các kiểm tra này đạt. Thư mục cài đặt là riêng tư đối với người dùng của bạn. Tệp lưu trữ có thể lớn tới 134217728 byte và bản cài đặt tạm tối đa 536870912 byte, và các tiến trình con dùng chung thời hạn 300 giây.
Để cài đặt từ một bản sao của cùng tệp lưu trữ mà bạn đã có, hãy thêm --archive với đường dẫn tuyệt đối của nó. Cùng phép kiểm tra SHA-256 được áp dụng.
Đọc phạm vi bao phủ
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 là một truy vấn. Nó xác minh lại các công cụ đã cài đặt so với bản phát hành đã ghim và báo cáo những gì bạn có thể yêu cầu. Với bản cài đặt ở trên, các trường được chọn là:
{
"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 liệt kê bản phát hành, bản sửa đổi mã nguồn, SHA-256 của tệp lưu trữ, các giá trị SHA-256 của công cụ và SHA-256 của thư viện chuẩn. limits đưa ra các giới hạn về yêu cầu, mã nguồn, tệp, đầu ra, kết quả, thời gian và pipeline.
Chạy kiểm thử mô-đun
Một yêu cầu mang mọi mô-đun trong files, khóa là đường dẫn tương đối kết thúc bằng .x. entry nêu tên mô-đun cần chạy. Lưu yêu cầu này thành 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"
}
}Tạo sẵn một thư mục làm việc cho lần chạy, rồi chạy yêu cầu:
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.jsonSau khi trạng thái thoát là 0, các trường kết quả được chọn là:
{
"schema": "altifigence.xls.upstream-result.v1",
"status": "succeeded",
"operation": "eval",
"tests_executed": 1
}eval chạy các hàm kiểm thử và test proc của mô-đun entry. Mỗi lần chạy dùng một thư mục riêng mới bên trong thư mục làm việc và xóa nó sau đó. processes ghi lại từng công cụ cùng SHA-256, đối số, mã thoát và đầu ra của nó. Dùng thao tác check để phân tích cú pháp và kiểm tra kiểu của mô-đun entry và các mô-đun mà nó nhập. Giữ một yêu cầu trong giới hạn 2097152 byte, tối đa 64 tệp và 1048576 byte mã nguồn.
Tạo SystemVerilog
Lưu yêu cầu này thành codegen.json. top nêu tên hàm DSLX cần tạo:
{
"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.svSau khi trạng thái thoát là 0, tên các sản phẩm đầu ra là:
[
"converted.ir",
"interface.textproto",
"module.sv",
"optimized.ir",
"schedule.textproto",
"signature.textproto"
]Mỗi sản phẩm đầu ra có sha256, bytes và text. Yêu cầu này tạo mô-đun xls_top với reset rst. Chọn từ 1 đến 64 tầng pipeline, hoặc bỏ pipeline_stages để có SystemVerilog tổ hợp. Dùng thao tác convert để dừng sau converted.ir và interface.textproto, hoặc optimize để dừng sau optimized.ir.
Sửa lần cài đặt hoặc lần chạy
Khi engine XLS trả về lỗi, lệnh thoát với trạng thái 2 và ghi một đối tượng altifigence.xls.error.v1 ra đầu ra chuẩn. CLI báo yêu cầu rỗng hoặc quá lớn hay đường dẫn host tương đối trên lỗi chuẩn với tiền tố error: và thoát với trạng thái 1. Với lỗi của engine XLS, hãy đọc mã và thông báo của nó:
jq -r '.error.code + ": " + .error.message' tests.result.jsonVới install-conflict: installation destination must not exist hoặc install-conflict: toolchain config must not exist, hãy chọn đường dẫn mới. Một lần cài đặt thất bại sẽ xóa thư mục và cấu hình mà nó đã tạo.
Với toolchain-mismatch: archive SHA256 does not match pinned official release, hãy truyền tệp lưu trữ bản phát hành gốc bằng --archive, hoặc bỏ --archive để tải xuống.
Với toolchain-mismatch: configuration does not identify the supported pinned XLS release, hãy truyền tệp cấu hình mà install đã ghi.
Với io-error: work root does not exist, hãy tạo thư mục làm việc rồi chạy lại.
Với no-tests: upstream eval requires at least one executed test or test proc, hãy thêm một hàm #[test] vào mô-đun entry.
Với invalid-request: check/eval operate on the entry module, not a selected top, hãy xóa top. Với invalid-request: DSLX optimize/codegen require a concrete top, hãy thêm top.
Với upstream-failed, thông báo nêu tên công cụ và mở đầu đầu ra chẩn đoán của nó. Hãy sửa mô-đun tại vị trí được báo và chạy lại.