Verificar, avaliar e gerar RTL com XLS nativo
Verifique DSLX ou XLS IR, avalie vetores, otimize IR, gere SystemVerilog e salve o resultado de uma tarefa local.
Use o Altifigence CLI 0.1.9 no Linux para trabalhar com funções DSLX e XLS IR incluídas na solicitação. Comece com alti xls capabilities para consultar as operações compatíveis com o executor instalado. Estes exemplos selecionam o backend de CPU.
Avaliar uma função
Salve esta solicitação como eval.json. Os valores de entrada seguem a ordem dos parâmetros da função.
{
"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.jsonO resultado tem status "succeeded" e estas saídas:
["bits[8]:0x0","bits[8]:0x13"]A primeira soma dá a volta no limite de 8 bits da função. O resultado inclui a solicitação, as larguras dos parâmetros e os resumos do código-fonte e da solicitação. As solicitações nativas aceitam funções de 1 a 64 bits e até 256 vetores. Mantenha o código-fonte incluído em até 8192 bytes e a solicitação em até 16384 bytes.
Verificar e otimizar
Copie eval.json para check.json. Defina operation como "check" e vectors como []. Salve uma segunda cópia como optimize.json com operation "optimize" e vectors [].
alti xls check --request check.json
alti xls optimize --request optimize.json > optimized.jsonCheck retorna as informações da função analisada. Optimize resolve expressões constantes e remove nós puros não utilizados. Consulte compilation.ir e compilation.ir_top para obter o IR otimizado e o ponto de entrada. Para avaliá-lo, coloque esses valores em uma nova solicitação com input_kind "xls-ir".
Gerar SystemVerilog
Salve esta solicitação 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 obter o RTL e compilation.rtl_top para obter seu módulo de topo. Esta solicitação produz xls_pipeline com latency_cycles 2 e interface "synchronous-reset-valid-delay". Escolha de 1 a 16 estágios de registradores de saída. Para RTL combinacional, omita pipeline; o módulo de topo será xls_top.
Executar uma tarefa local e reabrir o resultado
Salve esta solicitação completa de tarefa de CPU como job.json. Seu resumo vincula a solicitação XLS incluída.
{
"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.jsonUm resultado bem-sucedido inclui result.status "succeeded", o artefato e sua referência em result.outputs. Copie seu artifact_id para ARTIFACT_ID para reabrir e reproduzir o resultado:
alti xls artifact show --project /home/me/design ARTIFACT_IDPara uma solicitação direta de operação, você também pode salvar e listar resultados com:
alti xls artifact store --project /home/me/design --request eval.json
alti xls artifact list --project /home/me/designCorrigir uma solicitação
Para uma entrada de 8 bits, "256" produz invalid-input. Substitua por um padrão de bits dentro do intervalo, como "255", e tente novamente. Para "command and request operation differ", defina operation no JSON de acordo com o comando em execução. Check, optimize e codegen usam vectors []; a avaliação contém pelo menos um vetor.
Para "XLS request digest differs", atualize o SHA-256 da entrada da tarefa para corresponder à serialização JSON compacta em UTF-8 da solicitação incluída, nesta ordem de campos: schema, operation, input_kind, source, top, backend, vectors e, por último, pipeline, quando fornecido. Execute a tarefa corrigida novamente.
Uma tarefa cujo deadline_unix_ms opcional já passou retorna cancelled com código de saída 3. Use um prazo futuro ou omita o prazo opcional antes de tentar novamente.