पिन किया गया अपस्ट्रीम XLS टूलचेन इंस्टॉल करें और चलाएँ
पिन किया गया अपस्ट्रीम XLS रिलीज़ इंस्टॉल करें, उसकी कवरेज जाँचें और DSLX मॉड्यूल टेस्ट तथा SystemVerilog जनरेशन चलाएँ।
Linux x86_64 पर Altifigence CLI 0.1.9 से एक पिन किया गया अपस्ट्रीम XLS टूलचेन रिलीज़ इंस्टॉल करें और उससे मल्टी-फ़ाइल DSLX प्रोजेक्ट चलाएँ। CLI हर उपयोग से पहले रिलीज़ को सत्यापित करता है।
टूलचेन इंस्टॉल करें
नया इंस्टॉलेशन फ़ोल्डर और किसी मौजूदा फ़ोल्डर के नीचे नई कॉन्फ़िगरेशन फ़ाइल चुनें। दोनों पाथ पूर्ण होने चाहिए और अभी मौजूद नहीं होने चाहिए। कमांड अपने सामान्य उपयोगकर्ता खाते से चलाएँ।
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"सुनिश्चित करें कि एग्ज़िट स्टेटस 0 हो। परिणाम के चुने हुए फ़ील्ड ये हैं:
{
"schema": "altifigence.xls.upstream-install.v1",
"status": "succeeded",
"license_files": [
"LICENSE",
"THIRD_PARTY_NOTICES.txt"
]
}install रिलीज़ आर्काइव xls-v0.0.0-10617-geb3151083-linux-x64.tar.gz को HTTPS पर /usr/bin/curl से डाउनलोड करता है और उसका SHA-256 de9a5570f406d0865a159602180de1ac70e04cd51cfb808ead1f87549e56a4be जाँचता है। वह आर्काइव को /usr/bin/tar और /usr/bin/gzip से निकालता है, फिर पाँच टूल में से हर एक का SHA-256 और स्टैंडर्ड लाइब्रेरी इन्वेंटरी जाँचता है। वह रिलीज़ की लाइसेंस फ़ाइलें रखता है और कॉन्फ़िगरेशन तभी लिखता है जब ये जाँचें पास हो जाएँ। इंस्टॉलेशन फ़ोल्डर केवल आपके उपयोगकर्ता के लिए निजी है। आर्काइव अधिकतम 134217728 बाइट का और स्टेज की गई इंस्टॉलेशन अधिकतम 536870912 बाइट की हो सकती है, और चाइल्ड प्रोसेस 300 सेकंड की साझा समय-सीमा इस्तेमाल करते हैं।
अपने पास पहले से मौजूद उसी आर्काइव की प्रति से इंस्टॉल करने के लिए --archive को उसके पूर्ण पाथ के साथ जोड़ें। वही SHA-256 जाँच लागू होती है।
कवरेज पढ़ें
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 एक क्वेरी है। वह इंस्टॉल किए गए टूल को पिन किए गए रिलीज़ से फिर मिलाकर सत्यापित करता है और बताता है कि आप क्या अनुरोध कर सकते हैं। ऊपर की इंस्टॉलेशन के लिए चुने हुए फ़ील्ड ये हैं:
{
"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 में रिलीज़, सोर्स रिविज़न, आर्काइव का SHA-256, टूल के SHA-256 मान और स्टैंडर्ड लाइब्रेरी का SHA-256 सूचीबद्ध होते हैं। limits में अनुरोध, सोर्स, फ़ाइल, आउटपुट, परिणाम, समय और पाइपलाइन की सीमाएँ दी जाती हैं।
मॉड्यूल टेस्ट चलाएँ
अनुरोध हर मॉड्यूल को files में रखता है, जिसकी कुंजी .x पर समाप्त होने वाला सापेक्ष पाथ होता है। entry चलाए जाने वाले मॉड्यूल का नाम बताता है। इस अनुरोध को 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"
}
}रन के लिए कार्य फ़ोल्डर पहले से बना लें, फिर अनुरोध चलाएँ:
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एग्ज़िट स्टेटस 0 के बाद परिणाम के चुने हुए फ़ील्ड ये हैं:
{
"schema": "altifigence.xls.upstream-result.v1",
"status": "succeeded",
"operation": "eval",
"tests_executed": 1
}eval एंट्री मॉड्यूल के टेस्ट फ़ंक्शन और टेस्ट प्रॉक चलाता है। हर रन कार्य फ़ोल्डर के भीतर एक नया निजी फ़ोल्डर इस्तेमाल करता है और बाद में उसे हटा देता है। processes हर टूल को उसके SHA-256, आर्ग्युमेंट, एग्ज़िट कोड और आउटपुट के साथ दर्ज करता है। एंट्री मॉड्यूल और उसके इम्पोर्ट को पार्स और टाइप-चेक करने के लिए ऑपरेशन check इस्तेमाल करें। अनुरोध को 2097152 बाइट के भीतर, अधिकतम 64 फ़ाइलों और 1048576 बाइट के सोर्स तक रखें।
SystemVerilog बनाएँ
इस अनुरोध को codegen.json के रूप में सहेजें। top उस DSLX फ़ंक्शन का नाम बताता है जिसे जनरेट करना है:
{
"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एग्ज़िट स्टेटस 0 के बाद आर्टिफ़ैक्ट के नाम ये हैं:
[
"converted.ir",
"interface.textproto",
"module.sv",
"optimized.ir",
"schedule.textproto",
"signature.textproto"
]हर आर्टिफ़ैक्ट में sha256, bytes और text होते हैं। यह अनुरोध रीसेट rst के साथ मॉड्यूल xls_top जनरेट करता है। 1 से 64 पाइपलाइन चरण चुनें, या कॉम्बिनेशनल SystemVerilog के लिए pipeline_stages छोड़ दें। converted.ir और interface.textproto के बाद रुकने के लिए ऑपरेशन convert इस्तेमाल करें, या optimized.ir के बाद रुकने के लिए optimize।
इंस्टॉल या रन ठीक करें
जब XLS इंजन त्रुटि लौटाता है, तो कमांड स्टेटस 2 के साथ समाप्त होता है और स्टैंडर्ड आउटपुट में altifigence.xls.error.v1 ऑब्जेक्ट लिखता है। CLI खाली या बहुत बड़े अनुरोध अथवा सापेक्ष होस्ट पाथ की सूचना स्टैंडर्ड एरर में error: प्रीफ़िक्स के साथ देता है और स्टेटस 1 के साथ समाप्त होता है। XLS इंजन की त्रुटि के लिए उसका कोड और संदेश पढ़ें:
jq -r '.error.code + ": " + .error.message' tests.result.jsoninstall-conflict: installation destination must not exist या install-conflict: toolchain config must not exist आने पर नए पाथ चुनें। विफल इंस्टॉल अपने बनाए फ़ोल्डर और कॉन्फ़िगरेशन को हटा देता है।
toolchain-mismatch: archive SHA256 does not match pinned official release आने पर मूल रिलीज़ आर्काइव --archive के साथ दें, या उसे डाउनलोड करने के लिए --archive छोड़ दें।
toolchain-mismatch: configuration does not identify the supported pinned XLS release आने पर वही कॉन्फ़िगरेशन फ़ाइल दें जो install ने लिखी थी।
io-error: work root does not exist आने पर कार्य फ़ोल्डर बनाएँ और फिर चलाएँ।
no-tests: upstream eval requires at least one executed test or test proc आने पर एंट्री मॉड्यूल में #[test] फ़ंक्शन जोड़ें।
invalid-request: check/eval operate on the entry module, not a selected top आने पर top हटाएँ। invalid-request: DSLX optimize/codegen require a concrete top आने पर top जोड़ें।
upstream-failed आने पर संदेश टूल का नाम बताता है और उसका डायग्नोस्टिक आउटपुट शुरू करता है। बताई गई जगह पर मॉड्यूल ठीक करें और फिर चलाएँ।