क्या आप एक बाहरी उत्तेजनाओं के साथ एक मॉडलिम टेस्टबेंच को इंटरफ़ेस कर सकते हैं


10

मैं एक टीम पर काम कर रहा हूं जो ड्राइवर सॉफ्टवेयर और एफपीजीए विकास दोनों कर रही है। मॉडलजिम में FPGA सिमुलेशन किया जा रहा है और ड्राइवर सॉफ्टवेयर सी में लिखा गया है। एकीकरण जोखिम को कम करने के लिए, मुझे हार्डवेयर पर डालने से पहले हमारे उत्पाद के दो हिस्सों के बीच बातचीत को मॉडल करने में सक्षम होना अच्छा लगेगा।

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

पाठ फ़ाइल इनपुट के साथ मैं जो चाल नहीं कर सकता, वह उत्पाद इंटरेक्ट के दो हिस्सों की है। मुझे FPGA सिम्युलेटर में सॉफ़्टवेयर "राइट" मान रखने की आवश्यकता है, परिणाम पढ़ें, और फिर FPGA में नए मान लिखें जो कि पढ़े गए परिणामों पर निर्भर हैं। पाठ फ़ाइलों को आउटपुट से स्वतंत्र होने के लिए इनपुट की आवश्यकता होती है।

मैंने StackExchange और google दोनों पर खोज की है, लेकिन मैं अपनी खोज को संकीर्ण करने के लिए कीवर्ड के एक सेट के साथ आने में सक्षम नहीं हूं, या तो मैं उस व्यवहार की पहचान कर सकता हूं जिसे मैं देख रहा हूं, या यह निर्धारित करता हूं कि यह मौजूद नहीं है।

जवाबों:


9

एक ModelSim सिमुलेशन का बाहरी नियंत्रण Via Unix नामित पाइप्स

सार: इस थीसिस में, हम एक बाह्य कार्यक्रम के माध्यम से एक ModelSim सिमुलेशन को नियंत्रित करने की एक विधि प्रस्तुत करते हैं। मॉडलसिम और बाहरी कार्यक्रम के बीच संचार नामांकित पाइप्स ("एफआईएफओ") का उपयोग करके पूरा किया जाता है, जो प्रत्येक एप्लिकेशन के लिए सामान्य फ़ाइलों के रूप में दिखाई देते हैं। इंटर-प्रोसेस कम्युनिकेशन (IPC) के लिए FIFOs बनाम सामान्य फ़ाइलों का उपयोग करने के बीच मुख्य अंतर यह है कि एक FIFO को लिखने का प्रयास तब तक रोका जाता है जब तक कि कोई अन्य एप्लिकेशन FIFO और इसके विपरीत से पढ़ने का प्रयास नहीं करता। यह आईपीसी की विश्वसनीयता में सुधार करता है। इस पद्धति के प्रमुख लाभ 1 हैं) चूंकि केवल जेनेरिक फ़ाइल संचालन का उपयोग किया जाता है, बाहरी अनुप्रयोग लगभग किसी भी प्रोग्रामिंग भाषा में लिखा जा सकता है; 2) यह सत्यापन इंजीनियर को न्यूनतम पुनर्लेखन के साथ मानकों-सत्यापन सॉफ्टवेयर पैकेजों का पुन: उपयोग करने की क्षमता देता है; 3) टेस्ट (DUT) के तहत कई डिवाइसेस एक-दूसरे के साथ संचार करके, अंतिम सिस्टम का एक अधिक सटीक सिमुलेशन बनाया जा सकता है; और 4) समग्र सिमुलेशन के प्रदर्शन को सिंगल-सिस्टम इमेज (एसएसआई) क्लस्टर या मल्टीप्रोसेसर कंप्यूटर पर आसानी से बढ़ाया जा सकता है, भले ही मॉडलसिम का सिमुलेशन इंजन बहु-थ्रेडेड न हो। व्यवहार VHDL के लिए फ़ाइल इनपुट / आउटपुट (I / O) के कार्यान्वयन के कारण, ModelSim इन FIFS को सीधे पढ़ या लिख ​​नहीं सकता है। मॉडलसीम के फॉरेन लैंग्वेज इंटरफेस (FLI) का उपयोग करके इस सीमा के लिए वर्कअराउंड प्रदर्शित किया जाता है। यह पेपर VHDL में फ्लोटिंग पॉइंट रूटीन की अगली पीढ़ी के सत्यापन में उपयोग की जा रही इस पद्धति का एक कार्यशील उदाहरण भी दिखाता है। विशेष रूप से, ओपन-सोर्स IEEE अनुपालन परीक्षक सॉफ्टवेयर पैकेज, जो C ++ में लिखा गया है,

और एफआईएफओ के साथ एक विदेशी प्रोग्रामिंग इंटरफेस की आवश्यकता का मुद्दा यह है कि वीएचडीएल फ़ाइल I / O डेटा उपलब्ध होने तक अवरुद्ध के साथ शान से नहीं निपट सकता है।

दुर्भाग्य से थीसिस वेब पर उपलब्ध नहीं है।

मॉडल सिम ® विदेशी भाषा इंटरफ़ेस संस्करण 5.6d , पीडीएफ 3.4 एमबी।

C - VHDL Co- सिमुलेशन के लिए ModelSim विदेशी भाषा इंटरफ़ेस का उपयोग करना और Linux x86 प्लेटफॉर्म आंद्रे पूल पर सिम्युलेटर कंट्रोल के लिए fli@andrepool.com - संस्करण 1.5 - नवंबर 2012 में बनाया गया, अंतिम अपडेट सितंबर 2013 , पीडीएफ, 320KB (और फीफो का कभी उल्लेख नहीं) ।

सी - वीएचडीएल सह-सिमुलेशन के लिए और लिनक्स एक्स 86 प्लेटफ़ॉर्म पर सिम्युलेटर कंट्रोल के लिए मॉडलसिम विदेशी भाषा इंटरफ़ेस का उपयोग करना (मिलान गिथब कोड रिपॉजिटरी)।

VHPI फॉरेन फंक्शन कॉल का उपयोग ghdl में करने के लिए थोड़ा और अधिक खुला स्रोत है: vhdl / src / sim / ghdlex_mein at Master · texane / vhdl · GitHub

और GHDL_discuss सूची में मार्टिन स्ट्रबेल से एक अपडेट की तरह क्या दिखता है: http://www.section5.ch/downloads/ghdlex-0.051.tgz 14 अप्रैल 2014 की तारीख के लिए तारीख दिखाते हुए।

एफएलआई परिभाषा के आधार पर आपको लॉक कर देगा, उनके वीएचपीआई समर्थन की स्थिति के बारे में निश्चित नहीं है (जो आईईईई स्टड 1076-2008, वीएचडीएल एलआरएम का हिस्सा है)।

सॉकेट या फ़ाइल का उपयोग करके FIFO सॉफ्टवेयर और हार्डवेयर प्रक्रिया को अलग-अलग दरों पर चलाने की अनुमति देता है, दर बफरिंग प्रदान करके। यह हमेशा आवश्यक नहीं है यदि आप सॉफ्टवेयर सिस्टम हार्डवेयर सिमुलेशन की तुलना में तेजी से परिमाण के आदेश हैं (और यह आम तौर पर है)।

VHDL को UNIX (POSIX) कार्यक्षमता प्रदान करने का एक प्रयास है, सार्वजनिक डोमेन VHDL पैकेज देखें , जिसमें पहले के पेपर SNUG सैन जोस 2002 के लिए एक पॉइंटर शामिल है। 1 C / UNIX फ़ंक्शंस VHDL Testbenches C के लिए / UNIX फ़ंक्शंस एक स्लाइड के साथ VHDL टेस्टबेंच के लिए यूनिक्स पाइप और rsh पर अतिरिक्त नोट्स के साथ सेट करें । यह दिखाता है कि नामांकित पाइप को कैसे खोला जाए। सभी VHDL कोड को भी डाउनलोड किया जा सकता है। मेरी राय है कि यह आपके लक्ष्य को प्राप्त करने का सबसे आसान तरीका होगा।

तो क्या मॉडेम के मूल निवासी कुछ है जो आपको एक पाइप तक हुक करने की अनुमति देता है? संभवतः ऐसा नहीं है, विंडोज के तहत अधिक। क्या यह किया जा सकता है? हाँ, लेकिन रास्ता भयावह के लिए नहीं है। आप एक छोर या दूसरे पर गतिरोध कर सकते हैं या संभवतः दोनों डेटा उपलब्धता पर प्रतीक्षा कर सकते हैं।

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


शानदार शोध उत्तर के लिए धन्यवाद! "फॉरेन लैंग्वेज इंटरफेस" बिल्कुल वैसा ही मुहावरा था, जिसकी मुझे जरूरत थी कि मैं जिस डॉक्यूमेंटेशन डॉक्यूमेंट को खींचूं, मुझे कभी इसका अंदाजा न हो! जल्दी एकीकरण मैं यहाँ आता हूँ!
Cort Ammon

5

आप Cocotb को देखना चाह सकते हैं । यह एक पायथन आधारित सह-सिमुलेशन लाइब्रेरी है, डिजाइन लक्ष्यों में से एक था जिसे आप जिस पद्धति का वर्णन करते हैं, उसे आसानी से अन-संशोधित उत्पादन सॉफ्टवेयर और आरटीएल का अनुकरण करना।

pingएक सिमुलेशन और कोड के माध्यम से चलने वाले ट्यूटोरियल के खिलाफ अनमॉडिफाइड कमांड चलाने के भंडार में एक उदाहरण है ।

उपयोगकर्ता-स्पेस ड्राइवर, कॉन्फ़िगरेशन उपयोगिताओं आदि के लिए आपके पास अपने सॉफ़्टवेयर को अन-संशोधित करने के लिए कुछ विकल्प हैं :

  1. यदि डिवाइस तक आपकी पहुंच कुछ कार्यों के लिए उबलती है (उदाहरण के लिए रीड और राइट कॉल) तो आप सिमुलेशन लाइब्रेरी के खिलाफ लिंक कर सकते हैं जो सिमुलेशन के खिलाफ पहुंच का प्रदर्शन करते हुए ब्लॉक करते हैं। कॉन्फ़िगरेशन के लिए यह बहुत अच्छी तरह से काम करता है।

  2. यदि आपका सॉफ़्टवेयर डिवाइस तक पहुँचने के लिए मेमोरी मैप्ड IO और डेरीफेरेंस पॉइंटर्स का उपयोग करता है तो चीजें थोड़ी अधिक जटिल हो जाती हैं - आपको सुरक्षा बिट्स सेट और ट्रैप एक्सेस के साथ साझा मेमोरी क्षेत्र बनाना होगा ।

यदि आप नेटवर्किंग का उपयोग करते हैं तो TUN / TAP जैसे वर्चुअल इंटरफेस का उपयोग किया जा सकता है ( ऊपर उल्लिखित ट्यूटोरियल देखें ), मुझे संदेह है कि यूएसबी ट्रांसफर या अन्य सामान्य होस्ट इंटरफेस के लिए समान विकल्प हो सकते हैं।

Cocotb कई प्रकार के सिमुलेटर और VHDL (VHPI के माध्यम से) या Verilog / SystemVerilog डिजाइन (VPI के माध्यम से) के साथ काम करता है। दुर्भाग्यवश मॉडलिम वीएचपीआई को लागू नहीं करता है, इसलिए एक वीएचडीएल उपयोगकर्ता के रूप में आप एफएलआई के साथ फंस जाते हैं, जो एक इंटरफ़ेस के रूप में लगभग इतना उपयोगी नहीं है। आप कोशिश करने के लिए Mentor में विलाप कर सकते हैं और उन्हें एक उद्योग मानक इंटरफ़ेस लागू करने के लिए राजी कर सकते हैं, या आप VHPI का समर्थन करने वाले एक और सिम्युलेटर का मूल्यांकन कर सकते हैं।

अफसोस की बात है कि ऐसा प्रतीत होता है कि सामान्य तौर पर वीएचडीएल बाजार में उपकरण विक्रेता विशेष रूप से दिलचस्पी नहीं लेते हैं, किसी भी वीएचडीएल संबंधित कार्यक्षमता को लागू करने में लगने वाले समय को देखते हुए ...

अस्वीकरण: मैं एक Cocotb डेवलपर हूं।

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