Comprobar, evaluar y generar RTL con XLS nativo
Compruebe DSLX o XLS IR, evalúe vectores, optimice IR, genere SystemVerilog y guarde el resultado de un trabajo local.
Utilice Altifigence CLI 0.1.9 en Linux para trabajar con funciones DSLX y XLS IR en línea. Empiece con alti xls capabilities para consultar las operaciones admitidas por el ejecutor instalado. Estos ejemplos seleccionan el backend CPU.
Evaluar una función
Guarde esta solicitud como eval.json. Los valores de entrada siguen el orden de los parámetros de la función.
{
"schema": "altifigence.xls.operation-request.v1",
"operation": "eval",
"input_kind": "dslx",
"source": "fn compute(x: u8, y: u8) -> u8 { x + y }",
"top": "compute",
"backend": "cpu",
"vectors": [
[
"255",
"1"
],
[
"0x10",
"0b11"
]
]
}alti xls eval --request eval.jsonEl resultado tiene el estado "succeeded" y estas salidas:
["bits[8]:0x0","bits[8]:0x13"]La primera suma se ajusta mediante desbordamiento a los 8 bits de la función. El resultado incluye la solicitud, los anchos de los parámetros y los resúmenes del código fuente y de la solicitud. Las solicitudes nativas aceptan funciones de 1–64 bits y hasta 256 vectores. Mantenga el código fuente en línea dentro de 8192 bytes y la solicitud dentro de 16384 bytes.
Comprobar y optimizar
Copie eval.json a check.json. Establezca operation en "check" y vectors en []. Guarde una segunda copia como optimize.json con operation "optimize" y vectors [].
alti xls check --request check.json
alti xls optimize --request optimize.json > optimized.jsonCheck devuelve la información de la función analizada. Optimize evalúa las expresiones constantes y elimina los nodos puros sin uso. Consulte compilation.ir y compilation.ir_top para obtener la IR optimizada y el punto de entrada. Para evaluarla, introduzca esos valores en una solicitud nueva con input_kind "xls-ir".
Generar SystemVerilog
Guarde esta solicitud como codegen.json:
{
"schema": "altifigence.xls.operation-request.v1",
"operation": "codegen",
"input_kind": "dslx",
"source": "fn compute(x: u8, y: u8) -> u8 { x + y }",
"top": "compute",
"backend": "cpu",
"vectors": [],
"pipeline": {
"stages": 2
}
}alti xls codegen --request codegen.json > generated.jsonConsulte compilation.system_verilog para obtener el RTL y compilation.rtl_top para su módulo superior. Esta solicitud produce xls_pipeline con latency_cycles 2 y la interfaz "synchronous-reset-valid-delay". Elija de 1 a 16 etapas de registros de salida. Para RTL combinacional, omita pipeline; el módulo superior será xls_top.
Ejecutar y volver a abrir un trabajo local
Guarde esta solicitud completa de trabajo CPU como job.json. Su resumen vincula la solicitud XLS integrada.
{
"schema": "altifigence.xls.job-request.v1",
"job": {
"schema": "altifigence.engine.job.v1",
"job_id": "xls-example",
"operation": {
"engine_id": "xls-engine",
"operation_id": "eval",
"contract_id": "altifigence.xls.operation-request.v1"
},
"execution_placement": "local",
"device_preference": {
"selection": {
"mode": "class",
"value": "cpu"
},
"fallback": "deny"
},
"resources": {
"cpu_slots": 1,
"memory_bytes": 1048576,
"device_slots": 0,
"device_memory_bytes": 0,
"max_wall_time_ms": 30000
},
"inputs": [
{
"artifact_id": "request",
"role": "xls-request",
"artifact_schema": "altifigence.xls.operation-request.v1",
"uri": "workspace://inputs/request.json",
"sha256": "fea82ea569518661ed34f31da0a1bd3df7387bd7d4b33e6c171a605bfe547325"
}
],
"cancellation": {
"cancellation_id": "xls-example-cancel"
}
},
"request": {
"schema": "altifigence.xls.operation-request.v1",
"operation": "eval",
"input_kind": "dslx",
"source": "fn compute(x: u8, y: u8) -> u8 { x + y }",
"top": "compute",
"backend": "cpu",
"vectors": [
[
"255",
"1"
],
[
"0x10",
"0b11"
]
]
}
}alti xls run --project /home/me/design --request job.jsonUn resultado correcto incluye result.status "succeeded", el artefacto y su referencia en result.outputs. Copie su artifact_id en ARTIFACT_ID para volver a abrir y reproducir el resultado:
alti xls artifact show --project /home/me/design ARTIFACT_IDPara una solicitud de operación directa, también puede guardar y enumerar resultados con:
alti xls artifact store --project /home/me/design --request eval.json
alti xls artifact list --project /home/me/designCorregir una solicitud
Para una entrada de 8 bits, "256" produce invalid-input. Sustitúyalo por un patrón de bits dentro del rango, como "255", y vuelva a intentarlo. Si aparece "command and request operation differ", establezca operation del JSON en el comando que está ejecutando. Check, optimize y codegen utilizan vectors []; la evaluación contiene al menos un vector.
Si aparece "XLS request digest differs", actualice el SHA-256 de la entrada del trabajo para que coincida con la serialización JSON compacta en UTF-8 de la solicitud integrada, con este orden de campos: schema, operation, input_kind, source, top, backend, vectors y, después, pipeline cuando se incluya. Ejecute de nuevo el trabajo corregido.
Un trabajo cuyo deadline_unix_ms opcional ha vencido devuelve cancelled con el código de salida 3. Utilice un plazo futuro u omita el plazo opcional antes de volver a intentarlo.