VHDL जो FPGA को नुकसान पहुंचा सकता है


22

मैंने कहीं पढ़ा है कि खराब VHDL कोड FPGA को नुकसान पहुंचा सकता है।

क्या वीएचडीएल कोड के साथ एफपीजीए को नुकसान पहुंचाना संभव है? किस तरह की स्थितियां इसका कारण बनेंगी और सबसे खराब स्थिति क्या हैं?


2
एकमात्र ऐसा परिदृश्य जो मैं सोच सकता था कि एक ऐसा डिज़ाइन है जहाँ FPGA को गर्म करने के लिए कई, कई FF को देखा जाता है।
क्लाउडियो एवी चमी

ठीक है, इसे खराब तरीके से तैयार किए गए सर्किट में शामिल किया जा सकता है, जो ठीक से प्रोग्राम नहीं किए जाने पर जलते हुए सामान के आसपास कुछ धाराओं को चलाएगा।
यूजीन श।

3
सबसे बुरी स्थिति यह है कि fpga का उपयोग मशीन सीखने के लिए किया जाता है और यह एक दुष्ट AI बनाता है जो दुनिया और ब्रह्मांड को नष्ट कर देता है। अधिक गंभीरता से, यदि आप कंप्यूटर से जुड़े fpga में अनियंत्रित कोड का उपयोग कर रहे हैं, तो यह कंप्यूटर को संक्रमित कर सकता है। यह भी अगर यह उच्च शक्ति उपकरणों को नियंत्रित करने के लिए उपयोग किया जाता है, तो आप एक इमारत को जला सकते हैं।
satibel

जवाबों:


25

@ बेनामी जवाब में जोड़ते हुए, ऐसे डिज़ाइन हैं जो आप बना सकते हैं जो एक FPGA के कपड़े को नुकसान पहुंचा सकते हैं।

शुरुआत के लिए, यदि आप बहुत बड़ी मात्रा में रजिस्टरों (जैसे कि FPGA का 70%) से मिलकर बनाते हैं, तो सभी FPGAs को अधिकतम आवृत्ति के पास देखते हैं, तो सिलिकॉन को काफी गर्म करना संभव है। पर्याप्त ठंड के बिना यह शारीरिक नुकसान का कारण बन सकता है। हमने $ 13k FPGA को खो दिया क्योंकि देव-किट में एक भयानक शीतलन प्रणाली होने के कारण यह गर्म हो गया।

एक और सरल मामला दहनशील छोरों हो सकता है। उदाहरण के लिए यदि आप तीनों को एक अंगूठी में एक साथ जंजीर नहीं लगाते हैं, और इस तरह की संरचना के बारे में सिंथेसाइज़र चेतावनियों को अक्षम या अनदेखा करते हैं, तो आप कुछ ऐसा बना सकते हैं जो एक FPGA के लिए बहुत बुरा है। इस उदाहरण में आप एक बहु-गीगाहर्ट्ज थरथरानवाला बना सकते हैं जो बहुत छोटे क्षेत्र में बहुत अधिक गर्मी पैदा कर सकता है, शायद एएलएम और आसपास के तर्क को नुकसान पहुंचा रहा है।


1
संयुक्त छोरों को कभी-कभी सच्चे-यादृच्छिक-संख्या-जनरेटर के रूप में सुझाया जाता है। मुझे रिंग ऑसिलेटर के साथ कोई अनुभव नहीं है , लेकिन मुझे संदेह है कि केवल तीन द्वार कोई नुकसान नहीं करेंगे। इसके उत्पादन को कई गेटों तक पहुंचाना संभवत: हालांकि नुकसान ही पहुंचाएगा।
एंड्रियास

7
thx मैं 2-3 बोर्ड अब बेकार है क्योंकि उन पर संयमी 6 के साथ डिजाइन की गलतियाँ हैं। मैं इसे
आजमाऊंगा

एक बिटस्ट्रीम को लोड करना भी संभव है जो अन्य बिटस्ट्रीम को लोड करने से रोकता है, या कम से कम इसे करना काफी कठिन बनाता है।
व्लादिमीर क्रावेरो

8

इस संदर्भ में कोड एक सही शब्द नहीं है। हालांकि वेरिलोग या वीएचडीएल कार्यक्रम की तरह दिखते हैं, कंपाइलर का आउटपुट एक कॉन्फ़िगरेशन है जिसे एफपीजीए चिप में लोड किया जाता है जो इसके भीतर इलेक्ट्रॉनिक सर्किट बनाता है।

मेरे दिमाग में दो प्रकार आते हैं:

  • शारीरिक क्षति: उदाहरण के लिए, कई FPGA पिन एक साथ (या किसी अन्य उपकरण से) जुड़े हुए हैं और एक ही समय में विभिन्न तार्किक वोल्टेज का उत्पादन शुरू करते हैं। वर्तमान प्रवाह - अत्यधिक वर्तमान हो सकता है - जो अंततः गेट (एस) को नुकसान पहुंचाता है;
  • तार्किक क्षति: सर्किट फ्लैश चिप, या कॉन्फ़िगरेशन डिवाइस को अनुचित तरीके से संभाल सकता है, और इसमें भ्रष्ट डेटा छवि, यह पूरा उपकरण अंततः खराब हो सकता है।

4
शारीरिक क्षति का विषय हो सकता है कि ओपी का उद्धरण कहां से आया है। एक सॉफ्टवेयर डेवलपर के रूप में, मुझे बताया गया है कि एक सामान्य नियम यह है कि "सॉफ़्टवेयर" डिवाइस को शारीरिक नुकसान नहीं पहुंचा सकता है जबकि "फर्मवेयर" नुकसान का कारण बन सकता है, जैसे कि दो गोताखोरों को एक दूसरे से जोड़ना।
Cort Ammon - मोनिका

2
@CortAmmon "जैसे दो गोताखोरों को एक-दूसरे से जोड़ना" - यह क्या है, एक हवा-नली क्रॉस-कनेक्ट स्विच?
user253751

1
@ नौबत तुम मुझे मिल गई! वास्तविक नियम यह था कि "दोस्त की सांस लेते समय अपने दोस्त के सिर में सॉफ़्टवेयर / स्क्विशवेयर पर भरोसा न करें, इसके बजाय हमेशा अपने नियामक पर एक दृढ़ पकड़ रखें।" ;-)
Cort Ammon - मोनिका

3

इनपुट पिन के एक ब्लॉक को मिसकॉन्फ़िगर करने के रूप में आउटपुट यह कर सकता है यदि कोई और जो उन्हें चला रहा है वह काफी कठोर है।

मुझे नहीं पता कि LVDS या LVCMOS मानकों में से कुछ पिन को कॉन्फ़िगर करते समय IO बैंक अत्यधिक उच्च वोल्टेज से संचालित होता है (उदाहरण के लिए 1.8V IO मानक के साथ 3.3V पावर, या इनपुट पर विपरीत) यह?

स्पष्ट रूप से थर्मल समस्याएं एक मूर्खतापूर्ण काम करने की संभावना हो सकती हैं जैसे कि कई, कई, रिंग ऑसिलेटर।


डिज़ाइन के लिए बाधाओं के रूप में दिया गया I / O मानक केवल समय गणना के लिए है। यदि I / O बैंक 3.3 V बैंक है और 3.3V द्वारा संचालित होता है, तो यदि आप 1.8 V मानक चुनते हैं, तो कुछ भी नहीं होता है।
पैबेल्स

@Pabels, सुनिश्चित नहीं है कि आप किस उपकरण का उपयोग कर रहे हैं, लेकिन आमतौर पर जब आप I / O मानक सेट करते हैं तो यह उस I / O स्थान के वोल्टेज को नियंत्रित करता है। यदि FPGA इनपुट पिन बाहरी उपकरण की तुलना में बहुत कम वोल्टेज पर सेट की जाती है, तो उस FPGA इनपुट को नुकसान हो सकता है।
Ciano

@ पियानो जो सही नहीं है। पिन वोल्टेज I / O बैंक वोल्टेज पर निर्भर करता है न कि किसी बाधा पर।
पैबेल्स

1

FPGAs को नए (आंशिक) बिटस्ट्रीम के साथ रनटाइम पर फिर से जोड़ा जा सकता है। आम तौर पर, इस धारा को एक बाहरी स्रोत से लोड किया जाता है, लेकिन आप इसे FPGA में अपने स्वयं के द्वारा भी बना सकते हैं (उदाहरण के लिए एक एम्बेडेड सॉफ्टकोर CPU)। इस तरह के समाधान का उपयोग करने के लिए जैसे कि गतिशील रूप से सबडेसिग्न को स्थानांतरित करना, विक्रेता उपकरणों द्वारा की गई सभी स्थिरता जांच प्रदान नहीं करता है। इसलिए यदि आपका एल्गोरिथ्म टूट गया है, तो आप एक FPGA में झूठे पथ ट्रांजिस्टर को सक्षम कर सकते हैं और उन्हें जला सकते हैं।

आप पीएलएल या ट्रांससीवर्स जैसे एफपीजीए प्राइमेटिव के लिए गलत संचालन मोड भी चुन सकते हैं।

डायनेमिक रीकंफ़िगरेशन सॉफ्टवेयर में सेल्फ मॉडिफाइंग कोड की तरह है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.