Verificare, valutare e generare RTL con XLS nativo
Verifica DSLX o XLS IR, valuta i vettori, ottimizza l’IR, genera SystemVerilog e salva il risultato di un job locale.
Utilizza Altifigence CLI 0.1.9 su Linux per lavorare con funzioni DSLX e XLS IR incluse nella richiesta. Inizia con alti xls capabilities per leggere le operazioni supportate dall’esecutore installato. Questi esempi selezionano il backend CPU.
Valutare una funzione
Salva questa richiesta come eval.json. I valori di ingresso seguono l’ordine dei parametri della funzione.
{
"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.jsonIl risultato ha lo stato "succeeded" e questi output:
["bits[8]:0x0","bits[8]:0x13"]La prima somma viene riportata alla larghezza di 8 bit della funzione tramite overflow. Il risultato include la richiesta, le larghezze dei parametri e i digest del sorgente e della richiesta. Le richieste native accettano funzioni da 1–64 bit e fino a 256 vettori. Mantieni il sorgente incluso entro 8192 byte e la richiesta entro 16384 byte.
Verificare e ottimizzare
Copia eval.json in check.json. Imposta operation su "check" e vectors su []. Salva una seconda copia come optimize.json con operation "optimize" e vectors [].
alti xls check --request check.json
alti xls optimize --request optimize.json > optimized.jsonCheck restituisce le informazioni della funzione analizzata. Optimize calcola le espressioni costanti e rimuove i nodi puri inutilizzati. Leggi compilation.ir e compilation.ir_top per ottenere l’IR ottimizzata e il punto di ingresso. Per valutarla, inserisci questi valori in una nuova richiesta con input_kind "xls-ir".
Generare SystemVerilog
Salva questa richiesta come 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.jsonLeggi compilation.system_verilog per ottenere l’RTL e compilation.rtl_top per il modulo principale. Questa richiesta produce xls_pipeline con latency_cycles 2 e l’interfaccia "synchronous-reset-valid-delay". Scegli da 1 a 16 stadi di registri di uscita. Per RTL combinatorio, ometti pipeline; il modulo principale sarà xls_top.
Eseguire e riaprire un job locale
Salva questa richiesta completa di job CPU come job.json. Il suo digest vincola la richiesta XLS incorporata.
{
"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 risultato riuscito include result.status "succeeded", l’artefatto e il relativo riferimento in result.outputs. Copia il suo artifact_id in ARTIFACT_ID per riaprire e riprodurre il risultato:
alti xls artifact show --project /home/me/design ARTIFACT_IDPer una richiesta di operazione diretta, puoi anche salvare ed elencare i risultati con:
alti xls artifact store --project /home/me/design --request eval.json
alti xls artifact list --project /home/me/designCorreggere una richiesta
Per un ingresso di 8 bit, "256" produce invalid-input. Sostituiscilo con una sequenza di bit nell’intervallo consentito, come "255", e riprova. Per "command and request operation differ", imposta operation del JSON sul comando in esecuzione. Check, optimize e codegen utilizzano vectors []; la valutazione contiene almeno un vettore.
Per "XLS request digest differs", aggiorna lo SHA-256 dell’ingresso del job affinché corrisponda alla serializzazione JSON compatta in UTF-8 della richiesta incorporata in questo ordine di campi: schema, operation, input_kind, source, top, backend, vectors, quindi pipeline se fornito. Esegui nuovamente il job corretto.
Un job la cui scadenza facoltativa deadline_unix_ms è trascorsa restituisce cancelled con codice di uscita 3. Utilizza una scadenza futura oppure ometti la scadenza facoltativa prima di riprovare.