यह कमांड वेरिलेटर है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे कि उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।
कार्यक्रम:
नाम
वेरिलेटर - वेरिलॉग कोड को C++/SystemC में बदलें
SYNOPSIS
वेरिलेटर--मदद
वेरिलेटर--संस्करण
वेरिलेटर --cc [विकल्प] [top_level.v]... [opt_c_files.cpp/c/cc/a/o/so]
वेरिलेटर --sc [विकल्प] [top_level.v]... [opt_c_files.cpp/c/cc/a/o/so]
वेरिलेटर--लिंट-ओनली [top_level.v]...
वर्णन
वेरिलेटर संश्लेषित (व्यवहारिक नहीं) वेरिलॉग कोड, साथ ही कुछ संश्लेषण को परिवर्तित करता है,
SystemVerilog और Verilog AMS अभिकथनों का एक छोटा उपसमुच्चय, C++ या SystemC कोड में। यह
यह एक पूर्ण सिम्युलेटर नहीं है, बल्कि एक कंपाइलर है।
वेरिलेटर को जीसीसी, कैडेंस वेरिलॉग-एक्सएल/एनसी-वेरिलॉग, या के समान मापदंडों के साथ लागू किया जाता है
सिनोप्सिस का वी.सी.एस. यह निर्दिष्ट वेरिलॉग कोड को पढ़ता है, उसे लिंट करता है, और वैकल्पिक रूप से जोड़ता है
कवरेज और तरंगरूप अनुरेखण कोड। C++ और SystemC प्रारूपों के लिए, यह .cpp और .h आउटपुट करता है
फाइलें.
वेरिलेटर द्वारा बनाई गई फ़ाइलों को फिर C++ के साथ संकलित किया जाता है। उपयोगकर्ता थोड़ा सी++ लिखता है
रैपर फ़ाइल, जो शीर्ष स्तर के मॉड्यूल को इंस्टेंट करती है, और इस फ़ाइल नाम को पास करती है
कमांड लाइन। इन C फ़ाइलों को C++ में संकलित किया गया है, और Verilated फ़ाइलों के साथ लिंक किया गया है।
परिणामी निष्पादन योग्य वास्तविक सिमुलेशन निष्पादित करेगा।
आरंभ करने के लिए, "उदाहरण C++ निष्पादन" पर जाएं।
तर्क सारांश
यह वेरिलेटर के तर्कों का संक्षिप्त सारांश है। विस्तृत विवरण देखें
अधिक जानकारी के लिए अगले अनुभाग।
{file.v} वेरिलॉग शीर्ष स्तरीय फ़ाइल नाम
{file.c/cc/cpp} संकलित करने के लिए वैकल्पिक C++ फ़ाइलें
{file.a/o/so} लिंक करने के लिए वैकल्पिक C++ फ़ाइलें
+1364-1995एक्सट+ फ़ाइल एक्सटेंशन के साथ वेरिलॉग 1995 का उपयोग करें
+1364-2001एक्सट+ फ़ाइल एक्सटेंशन के साथ वेरिलॉग 2001 का उपयोग करें
+1364-2005एक्सट+ फ़ाइल एक्सटेंशन के साथ वेरिलॉग 2005 का उपयोग करें
+1800-2005ext+ फ़ाइल एक्सटेंशन के साथ SystemVerilog 2005 का उपयोग करें
+1800-2009ext+ फ़ाइल एक्सटेंशन के साथ SystemVerilog 2009 का उपयोग करें
+1800-2012ext+ फ़ाइल एक्सटेंशन के साथ SystemVerilog 2012 का उपयोग करें
--assert सभी दावे सक्षम करें
--ऑटोफ्लश सभी $डिस्प्ले के बाद फ्लश स्ट्रीम
--bbox-sys ब्लैकबॉक्स अज्ञात $system कॉल
--bbox-unsup ब्लैकबॉक्स असमर्थित भाषा सुविधाएँ
--बिन वेरिलेटर बाइनरी को ओवरराइड करें
-CFLAGS मेकफ़ाइल के लिए C++ कंपाइलर फ़्लैग
--cc C++ आउटपुट बनाएं
--सीडीसी क्लॉक डोमेन क्रॉसिंग विश्लेषण
--क्लक निर्दिष्ट सिग्नल को घड़ी के रूप में चिह्नित करें
--कंपाइलर निर्दिष्ट C++ कंपाइलर के लिए ट्यून करें
--अभिसरण-सीमा सुर अभिसरण समय व्यवस्थित करें
--कवरेज सभी कवरेज सक्षम करें
--कवरेज-लाइन लाइन कवरेज सक्षम करें
--कवरेज-टॉगल टॉगल कवरेज सक्षम करें
--कवरेज-उपयोगकर्ता एसवीएल उपयोगकर्ता कवरेज सक्षम करें
--कवरेज-अंडरस्कोर _सिग्नल का कवरेज सक्षम करें
-डी [= ] प्रीप्रोसेसर परिभाषित सेट करें
--डीबग डिबगिंग सक्षम करें
--डीबग-चेक डिबगिंग अभिकथन सक्षम करें
--डीबुगी किसी निर्दिष्ट स्तर पर डिबगिंग सक्षम करें
--डिबुगी- किसी स्रोत फ़ाइल को एक स्तर पर डीबग करना सक्षम करें
--डिफ़ॉल्ट भाषा पार्स करने के लिए डिफ़ॉल्ट भाषा
+परिभाषित+ = प्रीप्रोसेसर परिभाषित सेट करें
--dump-tree डंपिंग .tree फ़ाइलें सक्षम करें
--डंप-treei एक स्तर पर .tree फ़ाइलों को डंप करना सक्षम करें
--डंप-वृक्ष- एक स्तर पर स्रोत फ़ाइल पर डंपिंग .tree फ़ाइल सक्षम करें
-ई प्रीप्रोसेस, लेकिन संकलित न करें
--त्रुटि-सीमा इतनी त्रुटियों के बाद निरस्त करें
--exe निष्पादन योग्य बनाने के लिए लिंक
-एफ किसी फ़ाइल से विकल्पों को तुलनात्मक रूप से पार्स करें
-एफ किसी फ़ाइल से विकल्पों को पार्स करें
--gdb इंटरैक्टिव रूप से GDB के अंतर्गत वेरिलेटर चलाएँ
--gdbbt बैकट्रेस के लिए GDB के अंतर्गत वेरिलेटर चलाएँ
--help इस सहायता को प्रदर्शित करें
-मैं खोजने के लिए निर्देशिका में शामिल हैं
--अगर-गहराई IFDEPTH चेतावनी को ट्यून करें
+incdir+ खोजने के लिए निर्देशिका में शामिल हैं
--इनहिबिट-सिम सिम बंद करने के लिए फ़ंक्शन बनाएं
--इनलाइन-मल्टी मॉड्यूल इनलाइनिंग को ट्यून करें
-एलडीफ़्लैग्स मेकफ़ाइल के लिए लिंकर प्री-ऑब्जेक्ट फ़्लैग
-एलडीएलआईबीएस मेकफ़ाइल के लिए लिंकर लाइब्रेरी फ़्लैग
--भाषा पार्स करने के लिए डिफ़ॉल्ट भाषा मानक
+libext+ +[ext]... मॉड्यूल खोजने के लिए एक्सटेंशन
--लिंट-केवल लिंट, लेकिन आउटपुट न बनाएं
--MMD .d निर्भरता फ़ाइलें बनाएं
--एमपी नकली निर्भरता लक्ष्य बनाएं
--मदिर आउटपुट ऑब्जेक्ट निर्देशिका का नाम
--मॉड-उपसर्ग निचली कक्षाओं से पहले जोड़ने वाला नाम
--नो-क्लक निर्दिष्ट सिग्नल को घड़ी के रूप में चिह्नित करने से रोकें
--no-pins64 64-33 बिट सिग के लिए vluint64_t का उपयोग न करें
--नो-स्किप-समान समान आउटपुट को छोड़ना अक्षम करें
+नोटिंगचेक को नजरअंदाज कर दिया गया
-O0 अनुकूलन अक्षम करें
-O3 उच्च प्रदर्शन अनुकूलन
-ओ चयन योग्य अनुकूलन
-ओ अंतिम निष्पादन योग्य का नाम
--नो-ऑर्डर-क्लॉक-विलंब ऑर्डर देने को अक्षम करें, क्लॉक असाइनमेंट सक्षम करें
--आउटपुट-विभाजन .cpp फ़ाइलों को टुकड़ों में विभाजित करें
--आउटपुट-स्प्लिट-सीफंक्स स्प्लिट .cpp फ़ंक्शंस
--आउटपुट-स्प्लिट-सीट्रेस स्प्लिट ट्रेसिंग फ़ंक्शन
-पी -ई के साथ पंक्ति संख्या और रिक्त स्थान को अक्षम करें
--पिन्स-बी.वी शीर्ष स्तर के बंदरगाहों के लिए प्रकार निर्दिष्ट करें
--pins-sc-uint शीर्ष स्तरीय पोर्ट के लिए प्रकार निर्दिष्ट करें
--pins-sc-biguint शीर्ष स्तरीय पोर्ट के लिए प्रकार निर्दिष्ट करें
--pins-uint8 शीर्ष स्तरीय पोर्ट के लिए प्रकार निर्दिष्ट करें
--पाइप-फ़िल्टर सभी इनपुट को एक स्क्रिप्ट के माध्यम से फ़िल्टर करें
उपसर्ग शीर्ष स्तरीय कक्षा का नाम
--profile-cfuncs प्रोफाइलिंग के लिए नाम फ़ंक्शन
--निजी डिबगिंग; दस्तावेज़ देखें
--सार्वजनिक डिबगिंग; दस्तावेज़ देखें
--रिपोर्ट-unoptflat UNOPTFLAT के लिए अतिरिक्त निदान
--savable मॉडल सेव-रिस्टोर सक्षम करें
--sc SystemC आउटपुट बनाएं
--आँकड़े सांख्यिकी फ़ाइल बनाएँ
--stats-vars चरों पर आँकड़े प्रदान करें
-sv SystemVerilog पार्सिंग सक्षम करें
+systemverilogext+ +1800-2012ext+ का पर्यायवाची
--शीर्ष-मॉड्यूल शीर्ष स्तरीय इनपुट मॉड्यूल का नाम
--ट्रेस तरंगरूप निर्माण सक्षम करें
--निशान-गहराई अनुरेखण की गहराई
--ट्रेस-मैक्स-ऐरे अनुरेखण के लिए अधिकतम बिट चौड़ाई
--ट्रेस-अधिकतम-चौड़ाई अनुरेखण के लिए अधिकतम सरणी गहराई
--trace-params ट्रेसिंग पैरामीटर सक्षम करें
--trace-structs संरचना नामों का पता लगाने को सक्षम करें
--ट्रेस-अंडरस्कोर _सिग्नल्स की ट्रेसिंग सक्षम करें
-यू अपरिभाषित प्रीप्रोसेसर परिभाषित
--अनरोल-गिनती अधिकतम लूप पुनरावृत्तियों को ट्यून करें
--अनरोल-एसटीएमटीएस अधिकतम लूप बॉडी आकार को ट्यून करें
--अप्रयुक्त-regexp अप्रयुक्त लिंट सिग्नल को ट्यून करें
-V वर्बोज़ संस्करण और कॉन्फ़िगरेशन
-v वेरिलॉग लाइब्रेरी
+verilog1995ext+ +1364-1995ext+ का पर्यायवाची
+verilog2001ext+ +1364-2001ext+ का पर्यायवाची
-आतंक- चेतावनी को त्रुटि में बदलें
-Wभविष्य- अज्ञात संदेश चेतावनियाँ अक्षम करें
-नहीं- चेतावनी अक्षम करें
-नो-लिंट सभी लिंट चेतावनियों को अक्षम करें
-Wno-style सभी शैली चेतावनियाँ अक्षम करें
-नो-घातक चेतावनियों पर घातक निकास अक्षम करें
--x-असाइन करें प्रारंभ में इस मान पर Xs असाइन करें
--x-initial-edge प्रारंभिक X->0 और X->1 एज ट्रिगर सक्षम करें
-य मॉड्यूल खोजने के लिए निर्देशिका
बहस
{फ़ाइल.वी}
सत्यापित किए जाने वाले शीर्ष मॉड्यूल वाली वेरिलॉग फ़ाइल को निर्दिष्ट करता है।
{file.c/.cc/.cpp/.cxx}
वेरिलॉग कोड के साथ लिंक की जाने वाली वैकल्पिक C++ फ़ाइलें निर्दिष्ट करता है। यदि कोई C++ फ़ाइलें हैं
इस तरह से निर्दिष्ट हैं, वेरिलेटर में एक मेक नियम शामिल होगा जो उत्पन्न करता है मॉड्यूल
निष्पादन योग्य. बिना किसी C++ फ़ाइल के, Verilator यहीं रुक जाएगा मॉड्यूल__ALL.एक पुस्तकालय,
और मान लें कि आप स्वयं लिखे गए नियमों से जुड़ना जारी रखेंगे। यह भी देखें
-CFLAGS विकल्प.
{file.a/.o/.so}
वेरिलॉग कोड के साथ लिंक की जाने वाली वैकल्पिक ऑब्जेक्ट या लाइब्रेरी फ़ाइलों को निर्दिष्ट करता है
-LDFLAGS के लिए आशुलिपि " "। यदि कोई फ़ाइल इस प्रकार निर्दिष्ट की गई है, Verilator
इसमें एक मेक नियम शामिल होगा जो लिंक करते समय इन फ़ाइलों का उपयोग करता है मॉड्यूल निष्पादन योग्य।
यह आम तौर पर तभी उपयोगी होता है जब --exe विकल्प के साथ उपयोग किया जाता है।
+1364-1995एक्सट+ext
+1364-2001एक्सट+ext
+1364-2005एक्सट+ext
+1800-2005एक्सट+ext
+1800-2009एक्सट+ext
+1800-2012एक्सट+ext
किसी विशिष्ट फ़ाइल नाम एक्सटेंशन के साथ उपयोग किए जाने वाले भाषा मानक को निर्दिष्ट करता है, ext.
अन्य सिमुलेटर के साथ अनुकूलता के लिए, समानार्थक शब्द "+verilog1995ext+" भी देखें।ext,
"+verilog2001ext+"ext, और "+systemverilogext+"ext.
किसी भी स्रोत फ़ाइल के लिए, इन विकल्पों द्वारा निर्दिष्ट भाषा को किसी भी अन्य से अधिक प्राथमिकता दी जाती है
"--डिफ़ॉल्ट-भाषा" या "--भाषा" विकल्पों द्वारा निर्दिष्ट भाषा।
ये विकल्प उसी क्रम में प्रभावी होते हैं जिस क्रम में उनका सामना किया जाता है। इस प्रकार निम्नलिखित होगा
"एवी" के लिए वेरिलॉग 1995 और "बीवी" के लिए वेरिलॉग 2001 का उपयोग करें।
वेरिलेटर ... +1364-1995ext+v av +1364-2001ext+v bv
इन झंडों को केवल विरासती मिश्रित भाषा डिज़ाइनों के लिए अनुशंसित किया जाता है, जो कि बेहतर है
विकल्प नए कीवर्ड को सुधारने या उपयुक्त जोड़ने के लिए कोड को संपादित करना है
"`begin_keywords"।
नोट "`begin_keywords" एक SystemVerilog निर्माण है, जो निर्दिष्ट करता है केवल के जो
कीवर्ड के सेट को पहचाना जाना है। जो भी सेट चुना जाएगा, शब्दार्थ वही होगा
SystemVerilog के. इसके विपरीत "+1364-1995ext+" आदि दोनों वाक्यविन्यास निर्दिष्ट करते हैं और
शब्दार्थ का प्रयोग किया जाना है।
--जोर दें
सभी दावे सक्षम करें.
यह भी देखें --x-assign और --x-initial-edge; सेटिंग "--x-असाइन यूनिक" और/या
"--x-प्रारंभिक-किनारे" वांछनीय हो सकता है।
--ऑटोफ्लश
प्रत्येक $display या $fdisplay के बाद, आउटपुट स्ट्रीम को फ्लश करें। यह उसका बीमा करता है
संदेश तुरंत दिखाई देंगे लेकिन प्रदर्शन कम हो सकता है; सर्वोत्तम प्रदर्शन के लिए कॉल करें
मुख्य सी लूप में कभी-कभी "fflush(stdout)"। डिफ़ॉल्ट बंद है, जो बफ़र करेगा
सामान्य C stdio कॉल द्वारा प्रदान किया गया आउटपुट।
--बॉक्स-sys
किसी भी अज्ञात $system कार्य या फ़ंक्शन कॉल को ब्लैक बॉक्स करें। सिस्टम संबंधी कार्य सरलता से होंगे
एनओपीड, और सिस्टम फ़ंक्शंस को अनसाइज़्ड शून्य से बदल दिया जाएगा। ऐसे में तर्क
फ़ंक्शंस को पार्स किया जाएगा, लेकिन अन्यथा जांच नहीं की जाएगी। यह त्रुटियों को रोकता है जब
कंपनी विशिष्ट पीएलआई कॉलों की उपस्थिति में लाइनिंग।
--बीबॉक्स-अनसुप
ब्लैक बॉक्स में कुछ असमर्थित भाषा सुविधाएँ, वर्तमान में यूडीपी टेबल और सीएमओएस आदि
ट्रांस गेट आदिम। इससे शेष डिज़ाइन को तब भी लाइनिंग करना संभव हो सकता है
असमर्थित निर्माण मौजूद हैं।
--बिन फ़ाइल का नाम
शायद ही कभी जरूरत पड़े. वेरिलेटर के लिए डिफ़ॉल्ट फ़ाइल नाम को ओवरराइड करें। जब एक निर्भरता
(.d) फ़ाइल बनाई गई है, यह फ़ाइल नाम एक स्रोत निर्भरता बन जाएगा, जैसे कि a
इस बाइनरी में परिवर्तन से आउटपुट फ़ाइलों का पुनर्निर्माण होगा।
-CFLAGS झंडे
जेनरेट किए गए मेकफ़ाइल्स में निर्दिष्ट सी कंपाइलर फ़्लैग जोड़ें। जब मेक पर चलाया जाता है
जेनरेट की गई मेकफ़ाइल इन्हें C++ कंपाइलर (gcc/g++/msvc++) को पास कर दी जाएगी।
--सीसी
SystemC आउटपुट मोड के बिना C++ निर्दिष्ट करता है; यह भी देखें--एस.सी.
--CDC
प्रायोगिक. कुछ क्लॉक डोमेन क्रॉसिंग जाँचें करें और संबंधित चेतावनियाँ जारी करें
(CDCRSTLOGIC) और फिर बाहर निकलें; यदि सीडीसी चेतावनियों के अलावा अन्य चेतावनियों की आवश्यकता है तो एक बनाएं
दूसरा रन --लिंट-ओनली के साथ। अतिरिक्त चेतावनी सूचना भी लिखी जाती है
फ़ाइल {उपसर्ग}__cdc.txt.
वर्तमान में केवल कुछ आइटम की जाँच करता है जो अन्य सीडीसी उपकरण से छूट गए हैं; यदि आपकी रुचि है
अधिक पारंपरिक सीडीसी जाँच जोड़ने के लिए, कृपया लेखकों से संपर्क करें।
--क्लक संकेत-नाम
कभी-कभी वेरिलेटर के लिए घड़ी के संकेतों को अन्य से अलग करना काफी कठिन होता है
डेटा सिग्नल. कभी-कभी घड़ी के सिग्नल जाँच सूची में समाप्त हो सकते हैं
संकेत जो निर्धारित करते हैं कि आगे मूल्यांकन की आवश्यकता है या नहीं। इससे भारी गिरावट होगी
सत्यापित मॉडल का प्रदर्शन.
-क्लक के साथ , उपयोगकर्ता मॉडल में रूट क्लॉक निर्दिष्ट कर सकता है, फिर वेरिलेटर
सिग्नल को क्लॉकर के रूप में चिह्नित करेगा और क्लॉकर विशेषता को स्वचालित रूप से प्रचारित करेगा
उससे प्राप्त अन्य संकेत। इस तरह वेरिलेटर लेने से बचने की कोशिश करेगा
जाँच सूची में क्लॉकर सिग्नल।
नोट सिग्नल-नाम आरटीएल पदानुक्रम पथ द्वारा निर्दिष्ट किया गया है। उदाहरण के लिए, v.foo.bar. अगर
सिग्नल शीर्ष-मॉड्यूल का इनपुट है, सीधे सिग्नल का नाम। यदि आप इसे पा लेते हैं
सटीक नाम ढूंढना मुश्किल है, इसके लिए आरटीएल फ़ाइल में "/*वेरिलेटर क्लॉकर*/" का उपयोग करने का प्रयास करें
सिग्नल को सीधे चिह्नित करें.
--कंपाइलर कंपाइलर-नाम
निर्दिष्ट C++ कंपाइलर के लिए ट्यूनिंग और वर्कअराउंड सक्षम करता है।
बजना
बजने की धुन. इससे निष्पादन गति कम हो सकती है क्योंकि यह कई समाधानों को सक्षम बनाता है
क्लैंग में मूर्खतापूर्ण हार्डकोडेड सीमाओं से बचने के लिए। इसमें गहरी संरचनाओं को तोड़ना भी शामिल है
एमएसवीसी के लिए जैसा कि नीचे बताया गया है।
जीएनयू सी++ के लिए जीसीसी ट्यून, हालांकि जेनरेट किया गया कोड लगभग किसी भी अनुरूप सी++ पर काम करना चाहिए
संकलक. वर्तमान में डिफ़ॉल्ट.
एमएसवीसी
माइक्रोसॉफ्ट विज़ुअल सी++ के लिए ट्यून करें। यह सक्षम होने पर निष्पादन गति को कम कर सकता है
MSVC++ में मूर्खतापूर्ण हार्डकोडेड सीमाओं से बचने के लिए कई समाधान। यह भी शामिल है
बचने के लिए गहराई से निहित कोष्ठक में रखे गए भावों को उप-अभिव्यक्तियों में तोड़ना
त्रुटि C1009, और त्रुटि C1061 से बचने के लिए गहरे ब्लॉकों को फ़ंक्शंस में तोड़ना।
--अभिसरण-सीमा
शायद ही कभी जरूरत पड़े. बनाने से पहले रनटाइम पुनरावृत्तियों की अधिकतम संख्या निर्दिष्ट करता है
मॉडल त्रुटि एकत्रित करने में विफल रहा। 100 पर डिफ़ॉल्ट।
--कवरेज
सभी प्रकार के कवरेज को सक्षम करता है, उपनाम "--कवरेज-लाइन --कवरेज-टॉगल
--कवरेज-उपयोगकर्ता"।
--कवरेज-लाइन
निर्दिष्ट करता है कि बुनियादी ब्लॉक लाइन कवरेज विश्लेषण कोड डाला जाना चाहिए।
कवरेज विश्लेषण प्रत्येक कोड प्रवाह परिवर्तन बिंदु पर कथन जोड़ता है, जो हैं
IF और CASE कथनों की शाखाएँ, सामान्य वेरिलॉग लाइन कवरेज का एक सुपर-सेट। पर
ऐसी प्रत्येक शाखा में एक अद्वितीय काउंटर बढ़ाया जाता है। एक परीक्षण के अंत में, काउंटर
प्रत्येक काउंटर से संबंधित फ़ाइल नाम और लाइन नंबर के साथ लिखा जाता है
लॉग/कवरेज.pl.
वेरिलेटर स्वचालित रूप से उन शाखाओं के कवरेज को अक्षम कर देता है जिनमें $stop होता है
माना जाता है कि $stop शाखाओं में एक त्रुटि जांच होती है जो नहीं होनी चाहिए। ए /*सत्यापनकर्ता
कवरेज_ब्लॉक_ऑफ*/ टिप्पणी उस ब्लॉक के किसी भी कोड पर समान कार्य करेगी
या नीचे, या /*वेरिलेटर कवरेज_ऑन/कवरेज_ऑफ*/ लाइनों के आसपास कवरेज को अक्षम कर देगा
कोड का।
नोट वेरिलेटर उन ब्लॉकों पर कॉम्बिनेटोरियल (नॉन-क्लॉक्ड) ब्लॉकों की अधिक गिनती कर सकता है
ऐसे सिग्नल प्राप्त करें जिनमें UNOPTFLAT चेतावनी अक्षम है; सबसे सटीक के लिए
परिणाम कवरेज का उपयोग करते समय इस चेतावनी को अक्षम नहीं करते हैं।
--कवरेज-टॉगल
निर्दिष्ट करता है कि सिग्नल टॉगल कवरेज विश्लेषण कोड डाला जाना चाहिए।
मॉड्यूल में प्रत्येक सिग्नल के प्रत्येक बिट में एक काउंटर डाला गया है। काउंटर होगा
संबंधित बिट के प्रत्येक किनारे परिवर्तन पर वृद्धि।
सिग्नल जो कार्यों या आरंभ/अंत ब्लॉक का हिस्सा हैं, उन्हें स्थानीय चर माना जाता है
कवर नहीं हैं. जो सिग्नल अंडरस्कोर से शुरू होते हैं, वे पूर्णांक होते हैं, या बहुत विस्तृत होते हैं
(>सभी आयामों में कुल संग्रहण 256 बिट्स) भी कवर नहीं किया गया है।
पदानुक्रम को संपीड़ित किया जाता है, जैसे कि यदि एक मॉड्यूल को कई बार त्वरित किया जाता है,
कवरेज को उस मॉड्यूल के सभी तात्कालिकताओं में उस बिट के लिए सारांशित किया जाएगा
समान पैरामीटर सेट. विभिन्न पैरामीटर मानों के साथ इंस्टेंटिअट किया गया एक मॉड्यूल है
एक अलग मॉड्यूल माना जाता है, और अलग से गिना जाएगा।
वेरिलेटर सिग्नल किस क्लॉक डोमेन के बारे में न्यूनतम-बुद्धिमान निर्णय लेता है
पर जाता है, और केवल उस घड़ी डोमेन में किनारों की तलाश करता है। इसका मतलब है कि किनारे हो सकते हैं
यदि यह ज्ञात हो कि किनारे को प्राप्त तर्क द्वारा कभी नहीं देखा जा सकता है तो इसे अनदेखा कर दिया जाता है। यह
भविष्य में एल्गोरिदम में सुधार हो सकता है. शुद्ध परिणाम यह है कि कवरेज इससे कम हो सकता है
निशानों को देखकर क्या पता चलेगा, लेकिन कवरेज अधिक सटीक है
डिज़ाइन में प्रोत्साहन की गुणवत्ता का प्रतिनिधित्व।
मॉडल के स्थिर होने पर समय शून्य के निकट किनारों की गिनती हो सकती है। यह एक अच्छी बात है
ऐसी गिनती रोकने के लिए रीसेट जारी करने से ठीक पहले सभी कवरेज को शून्य करने का अभ्यास करें
व्यवहार.
ए /*वेरिलेटर कवरेज_ऑफ/ऑन */ टिप्पणी जोड़ी का उपयोग उन सिग्नलों के आसपास किया जा सकता है जो ऐसा नहीं करते हैं
विश्लेषण को टॉगल करने की आवश्यकता है, जैसे RAM और रजिस्टर फ़ाइलें।
--कवरेज-अंडरस्कोर
अंडरस्कोर से शुरू होने वाले संकेतों का कवरेज सक्षम करें। आम तौर पर, ये संकेत होते हैं
शामिल नहीं किया हुआ। यह भी देखें--ट्रेस-अंडरस्कोर।
--कवरेज-उपयोगकर्ता
उपयोगकर्ता द्वारा सम्मिलित कार्यात्मक कवरेज सक्षम करता है। वर्तमान में, सभी कार्यात्मक कवरेज बिंदु
एसवीए का उपयोग करके निर्दिष्ट किया जाता है जिसे --assert के साथ अलग से सक्षम किया जाना चाहिए।
उदाहरण के लिए, निम्नलिखित कथन टिप्पणी के साथ एक कवरेज बिंदु जोड़ देगा
"डिफ़ॉल्टक्लॉक":
डिफॉल्टक्लॉक: कवर प्रॉपर्टी (@(possge clk) cyc==3);
-Dथा=मूल्य
अनुमति दिए बिना, दिए गए प्रीप्रोसेसर प्रतीक को परिभाषित करता है। +परिभाषित के समान; +परिभाषित करें
वेरिलॉग टूल्स में काफी मानक है जबकि -डी जीसीसी संगतता के लिए एक उपनाम है।
- दाढ़
वेरिलेटर की डिबग निर्मित छवि का चयन करें (यदि उपलब्ध हो), और अधिक आंतरिक सक्षम करें
अभिकथन ("--डीबग-चेक" के समतुल्य), संदेशों को डिबग करना (समकक्ष)।
"--डीबगी 4"), और इंटरमीडिएट फॉर्म डंप फ़ाइलें ("--डंप-ट्रीई 3" के बराबर)।
--डीबग-चेक
शायद ही कभी जरूरत पड़े. डिबग बदले बिना, आंतरिक डिबगिंग अभिकथन जांच सक्षम करें
वाचालता. --debug निर्दिष्ट होने पर स्वचालित रूप से सक्षम हो जाता है।
--डीबुगी
--डिबुगी-
डेवलपर उपयोग के लिए - शायद ही कभी आवश्यक हो। वैश्विक स्तर पर आंतरिक डिबगिंग स्तर सेट करें
निर्दिष्ट डिबग स्तर (1-10) या निर्दिष्ट वेरिलेटर स्रोत फ़ाइल को सेट करें
निर्दिष्ट स्तर (उदाहरण के लिए "--debugi-V3Width 9")। उच्च स्तर अधिक विस्तृत उत्पादन करते हैं
संदेश.
--डिफ़ॉल्ट भाषा मूल्य
प्रत्येक वेरिलॉग फ़ाइल को पहली बार संसाधित करते समय डिफ़ॉल्ट रूप से उपयोग की जाने वाली भाषा का चयन करें।
भाषा का मान "1364-1995", "1364-2001", "1364-2005", "1800-2005" होना चाहिए।
"1800-2009" या "1800-2012"।
किसी विशेष फ़ाइल एक्सटेंशन से जुड़ी कोई भी भाषा (विभिन्न + देखें)।langविस्तार+
विकल्प) का उपयोग --डिफ़ॉल्ट-भाषा द्वारा निर्दिष्ट भाषा की प्राथमिकता में किया जाएगा।
--डिफ़ॉल्ट-भाषा ध्वज केवल उसी का उपयोग करने वाले लीगेसी कोड के लिए अनुशंसित है
सभी स्रोत फ़ाइलों में भाषा, क्योंकि सुधार के लिए कोड को संपादित करना बेहतर विकल्प है
नए कीवर्ड, या उपयुक्त "`begin_keywords" जोड़ें। विरासत मिश्रित भाषा डिज़ाइन के लिए,
विभिन्न +langext+ विकल्पों का उपयोग किया जाना चाहिए।
यदि कोई भाषा निर्दिष्ट नहीं है, तो इस ध्वज या + द्वाराlangext+ विकल्प, फिर नवीनतम
SystemVerilog भाषा (IEEE 1800-2012) का उपयोग किया जाता है।
+परिभाषित करें+था=मूल्य
+परिभाषित करें+था=मूल्य+वर३०५७=value2...
प्लसस द्वारा अलग किए जाने पर दिए गए प्रीप्रोसेसर प्रतीक, या एकाधिक प्रतीकों को परिभाषित करता है।
-डी के समान; वेरिलॉग टूल्स में +डिफाइन काफी मानक है जबकि -D एक उपनाम है
जीसीसी अनुकूलता के लिए.
--डम्प-वृक्ष
शायद ही कभी जरूरत पड़े. डंपिंग स्तर 3 के साथ .tree डिबग फ़ाइलें लिखना सक्षम करें, जो डंप करता है
मानक महत्वपूर्ण चरण. प्रारूप के विवरण के लिए वेरिलेटर इंटरनल्स देखें
नियमावली। --डंप-ट्री स्वचालित रूप से --debug के साथ सक्षम होता है, इसलिए "--debug
--नो-डंप-ट्री" उपयोगी हो सकता है यदि डंप फ़ाइलें बड़ी हैं और वांछित नहीं हैं।
--डंप-treei
--डंप-वृक्ष-
डेवलपर उपयोग के लिए - शायद ही कभी आवश्यक हो। वैश्विक स्तर पर आंतरिक वृक्ष डंपिंग स्तर को सेट करें
विशिष्ट डंपिंग स्तर या निर्दिष्ट वेरिलेटर स्रोत फ़ाइल को निर्दिष्ट पर सेट करें
वृक्ष डंपिंग स्तर (जैसे "--डंप-ट्रीआई-वी3ऑर्डर 9")। लेवल 0 डंप को डिसेबल करता है और है
"--नो-डंप-ट्री" के बराबर। स्तर 9 हर चरण की डंपिंग को सक्षम बनाता है।
-ई स्रोत कोड को प्रीप्रोसेस करें, लेकिन संकलित न करें, जैसा कि 'जीसीसी -ई' के साथ होता है। आउटपुट लिखा है
मानकीकृत करने के लिए. डिबगिंग संदेशों को सक्षम करने से सावधान रहें, क्योंकि वे भी जाएंगे
मानक बाहर।
--त्रुटि-सीमा
इतनी संख्या में त्रुटियाँ या चेतावनियाँ सामने आने के बाद बाहर निकलें। डिफ़ॉल्ट 50.
--प्रोग्राम फ़ाइल
एक निष्पादन योग्य उत्पन्न करें. आपको अतिरिक्त .cpp फ़ाइलें भी पास करने की आवश्यकता होगी
कमांड लाइन जो आपके सिमुलेशन के लिए मुख्य लूप लागू करती है।
-F पट्टिका
निर्दिष्ट फ़ाइल पढ़ें, और कार्य करें जैसे कि उसके अंदर का सभी पाठ कमांड के रूप में निर्दिष्ट किया गया था
लाइन पैरामीटर. कोई भी सापेक्ष पथ युक्त निर्देशिका से संबंधित होता है
निर्दिष्ट फ़ाइल. यह भी देखें -एफ. नोट -एफ वेरिलॉग टूल्स में काफी मानक है।
-f पट्टिका
निर्दिष्ट फ़ाइल पढ़ें, और कार्य करें जैसे कि उसके अंदर का सभी पाठ कमांड के रूप में निर्दिष्ट किया गया था
लाइन पैरामीटर. कोई भी सापेक्ष पथ वर्तमान निर्देशिका से संबंधित है। यह सभी देखें
-एफ। नोट -f वेरिलॉग टूल्स में काफी मानक है।
फ़ाइल में // टिप्पणियाँ हो सकती हैं जिन्हें पंक्ति के अंत तक अनदेखा कर दिया जाता है। कोई भी $VAR,
$(VAR), या ${VAR} को निर्दिष्ट पर्यावरण चर से बदल दिया जाएगा।
--जीडीबी
एक इंटरैक्टिव GDB (या VERILATOR_GDB पर्यावरण चर) के नीचे वेरिलेटर चलाएँ
मूल्य) सत्र। यह भी देखें --gdbbt.
--gdbbt
यदि --डीबग निर्दिष्ट है, तो जीडीबी प्रक्रिया के नीचे वेरिलेटर चलाएं और बैकट्रेस प्रिंट करें
बाहर निकलने पर, तुरंत GDB से बाहर निकलें। --डीबग के बिना या यदि जीडीबी काम नहीं कर रहा है,
इस झंडे को नजरअंदाज कर दिया गया है. उपयोगकर्ताओं द्वारा बैकट्रेस के आसान निर्माण के लिए अभिप्रेत है; अन्यथा
--gdb ध्वज देखें.
--मदद
यह संदेश और प्रोग्राम संस्करण प्रदर्शित करता है और बाहर निकलता है।
-Iदीर
फिर मिलेंगे।
--अगर-गहराई मूल्य
शायद ही कभी जरूरत पड़े. वह गहराई सेट करें जिस पर IFDEPTH चेतावनी सक्रिय होगी, डिफ़ॉल्ट रूप से 0
जो इस चेतावनी को अक्षम कर देता है.
+इंदिर+दीर
फिर मिलेंगे।
--इनहिबिट-सिम
शायद ही कभी जरूरत पड़े. मूल्यांकन को सक्षम और अक्षम करने के लिए एक "इनहिबिटसिम(बूल)" फ़ंक्शन बनाएं।
यह ऊपरी स्तर के टेस्टबेंच को उन मॉड्यूल को अक्षम करने की अनुमति देता है जो महत्वपूर्ण नहीं हैं
SystemC मॉड्यूल को पुन: संकलित करने या बदलने की आवश्यकता के बिना, सिमुलेशन दिया गया
त्वरित।
--इनलाइन-मल्टी मूल्य
मॉड्यूल की इनलाइनिंग को ट्यून करें। 2000 का डिफ़ॉल्ट मान निर्दिष्ट करता है कि 2000 तक नया
इस संख्या से अधिक होने पर इनलाइनिंग द्वारा ऑपरेशन को मॉडल में जोड़ा जा सकता है
संचालन का परिणाम होगा, मॉड्यूल इनलाइन नहीं है। बड़े मान, या मान <= 1
हर चीज़ को इनलाइन कर देगा, संकलन में अधिक समय लगेगा, लेकिन संभावित रूप से तेज़
रनटाइम. बहुत छोटे मॉड्यूल के लिए इस सेटिंग को अनदेखा कर दिया जाता है; वे हमेशा रहेंगे
यदि अनुमति हो तो रेखांकित करें।
-एलडीएफएलजीएस झंडे
जेनरेट किए गए मेकफ़ाइल्स में निर्दिष्ट सी लिंकर फ़्लैग जोड़ें। जब मेक पर चलाया जाता है
जेनरेट की गई मेकफ़ाइल इन्हें प्राथमिक के बाद *C++ लिंकर (ld) को पास कर दी जाएगी
फ़ाइल लिंक की जा रही है. इस झंडे को -LDFLAGS कहा जाता है क्योंकि यह इसका पारंपरिक नाम है
सिमुलेटर; इसे एलडीएलआईबीएस कहना बेहतर होता क्योंकि यह मेकफ़ाइल वैरिएबल है
यह नियंत्रित करता है. (मेक में, LDFLAGS पहले ऑब्जेक्ट से पहले है, LDLIBS बाद में। -L
लाइब्रेरीज़ को मेक वेरिएबल LDLIBS में होना चाहिए, LDFLAGS में नहीं।)
--भाषा: हिन्दी मूल्य
अन्य उपकरणों और पहले के उपकरणों के साथ अनुकूलता के लिए "--डिफॉल्ट-लैंगेज" का एक पर्यायवाची
वेरिलेटर के संस्करण।
+लिबेक्स्ट+ext+ext...
मॉड्यूल खोजने के लिए उपयोग किए जाने वाले एक्सटेंशन निर्दिष्ट करें। यदि उदाहरण के लिए मॉड्यूल
x संदर्भित है, में देखें x.ext. नोट +libext+ वेरिलॉग में काफी मानक है
औजार। .v और .sv पर डिफ़ॉल्ट।
--केवल-लिंट
केवल लिंट उल्लंघनों के लिए फ़ाइलों की जाँच करें, कोई अन्य आउटपुट न बनाएं।
आप उन संदेशों को सक्षम करने के लिए -वॉल विकल्प भी चाह सकते हैं जिन्हें शैलीगत माना जाता है
और डिफ़ॉल्ट रूप से सक्षम नहीं है.
यदि डिज़ाइन को पूरी तरह सत्यापित नहीं किया जाना है तो --bbox-sys और भी देखें
--बीबॉक्स-अनसअप विकल्प।
--एमएमडी
.d निर्भरता फ़ाइलों के निर्माण को सक्षम करें, जिसका उपयोग निर्भरता का पता लगाने के लिए किया जाता है
जीसीसी -एमएमडी विकल्प। डिफ़ॉल्ट रूप से, अक्षम करने के लिए --no-MMD का उपयोग करें।
--एमपी
--MMD के साथ .d निर्भरता फ़ाइलें बनाते समय, नकली लक्ष्य बनाएं। जीसीसी-एमपी के समान
विकल्प.
--मदिर डायरेक्टरी
मेक ऑब्जेक्ट निर्देशिका का नाम निर्दिष्ट करता है। सभी जेनरेट की गई फ़ाइलें रखी जाएंगी
इस निर्देशिका में. यदि निर्दिष्ट नहीं है, तो "obj_dir" का उपयोग किया जाता है। निर्देशिका बनाई गई है यदि
यह अस्तित्व में नहीं है और मूल निर्देशिकाएँ मौजूद हैं; अन्यथा मैन्युअल रूप से Mdir बनाएँ
वेरिलेटर को कॉल करने से पहले.
--मॉड-उपसर्ग शीर्षनाम
सभी निचले स्तर की कक्षाओं से पहले जोड़ने के लिए नाम निर्दिष्ट करता है। डिफ़ॉल्ट उसी के समान है
--उपसर्ग.
--नो-क्लक
निर्दिष्ट सिग्नल को घड़ी के रूप में चिह्नित होने से रोकें। देखें "--क्लक"।
--नो-पिन64
"--पिंस-बीवी 33" के लिए पिछड़ा संगत उपनाम।
--नो-स्किप-समान
शायद ही कभी जरूरत पड़े. यदि सभी स्रोत फ़ाइलें हैं तो वेरिलेटर का निष्पादन छोड़ना अक्षम कर देता है
समान, और सभी आउटपुट फ़ाइलें नई तारीखों के साथ मौजूद हैं।
+नोटिंगचेक
अन्य सिमुलेटरों के साथ संगतता के लिए अनदेखा किया गया।
-O0 मॉडल का अनुकूलन अक्षम करता है।
-O3 वेरिलेटर द्वारा स्वयं उत्पन्न किए गए कोड के लिए धीमे अनुकूलन को सक्षम करता है (इसके विपरीत)।
"-CFLAGS -O3" जो C कंपाइलर के अनुकूलन को प्रभावित करता है। -O3 सिमुलेशन को कम कर सकता है
संकलन समय की कीमत पर रनटाइम। यह वर्तमान में --inline-mult -1 सेट करता है।
-Oअनुकूलन-पत्र
शायद ही कभी जरूरत पड़े. अनुकूलन के साथ, किसी विशिष्ट अनुकूलन को सक्षम या अक्षम करता है
पारित पत्र के आधार पर चयन किया गया। एक छोटा अक्षर एक अनुकूलन को अक्षम कर देता है, और
अपर केस लेटर इसे सक्षम बनाता है। यह केवल डिबगिंग उपयोग के लिए है; स्रोत देखें
-O अक्षरों में अनुकूलन की संस्करण-निर्भर मैपिंग के लिए कोड।
-ओ
यदि --exe का उपयोग कर रहे हैं तो निर्मित अंतिम निष्पादन योग्य के लिए नाम निर्दिष्ट करें। के लिए डिफ़ॉल्ट
--उपसर्ग यदि निर्दिष्ट नहीं है।
--कोई-ऑर्डर-घड़ी-विलंब नहीं
शायद ही कभी जरूरत पड़े. देरी से सक्षम होने वाली घड़ी के ऑर्डर के लिए बग फिक्स को अक्षम करता है
असाइनमेंट। इस ध्वज का उपयोग केवल तभी किया जाना चाहिए जब डेवलपर्स द्वारा सुझाव दिया जाए।
--आउटपुट-विभाजन बाइट्स
आउटपुट .cpp/.sp फ़ाइलों को एकाधिक आउटपुट में विभाजित करने में सक्षम बनाता है। जब एक C++ फ़ाइल
संचालन की निर्दिष्ट संख्या से अधिक होने पर, अगली बार एक नई फ़ाइल बनाई जाएगी
कार्य सीमा. इसके अलावा, किसी भी धीमी दिनचर्या को __धीमी फ़ाइलों में रखा जाएगा।
इससे संकलन में तेजी आती है क्योंकि धीमी दिनचर्या पर अनुकूलन को अक्षम किया जा सकता है,
और शेष फ़ाइलें समानांतर मशीनों पर संकलित की जा सकती हैं। --आउटपुट-स्प्लिट का उपयोग करना
प्रदर्शन पर केवल मामूली प्रभाव होना चाहिए। 3.3GHz Opteron पर GCC 2 के साथ,
--आउटपुट-स्प्लिट 20000 का परिणाम लगभग एक-मिनट-संकलन में विभाजित हो जाएगा
मात्रा।
--आउटपुट-स्प्लिट-सीफंक्स बयान
आउटपुट .cpp/.sp फ़ाइलों में फ़ंक्शंस को कई फ़ंक्शंस में विभाजित करने में सक्षम बनाता है।
जब कोई जेनरेट किया गया फ़ंक्शन संचालन की निर्दिष्ट संख्या से अधिक हो जाता है, तो एक नया फ़ंक्शन
बनाया जाएगा। --आउटपुट-स्प्लिट के साथ, यह जीसीसी को तेजी से संकलित करने में सक्षम करेगा
प्रदर्शन में छोटी हानि जो विभाजित मूल्यों में कमी के साथ बदतर हो जाती है। ध्यान दें कि
यह विकल्प --आउटपुट-स्प्लिट से इस अर्थ में अधिक मजबूत है कि --आउटपुट-स्प्लिट नहीं होगा
एक फ़ंक्शन के अंदर विभाजित करें।
--आउटपुट-स्प्लिट-सीट्रेस बयान
आउटपुट .cpp/.sp फ़ाइलों में ट्रेस फ़ंक्शंस को एकाधिक में विभाजित करने में सक्षम बनाता है
कार्य. डिफ़ॉल्ट रूप से --आउटपुट-स्प्लिट-सीफंक्स जैसी ही सेटिंग होती है।
-पी -ई के साथ, जीसीसी-पी ध्वज के समान, `लाइन मार्कर और रिक्त लाइनों की पीढ़ी को अक्षम करें।
--पिन्स64
"--पिंस-बीवी 65" के लिए पिछड़ा संगत उपनाम। ध्यान दें कि यह 65 है, 64 नहीं।
--पिन्स-बी.वी चौडाई
इससे अधिक या उसके बराबर के SystemC इनपुट/आउटपुट को निर्दिष्ट करता है चौडाई बिट्स चौड़े होने चाहिए
uint32/vluint64_t के बजाय sc_bv का उपयोग करें। डिफ़ॉल्ट "--पिंस-बीवी 65" है। संस्करणों
वेरिलेटर 3.671 के डिफ़ॉल्ट होने से पहले "--पिंस-बीवी 33"। जितना अधिक sc_bv का उपयोग किया जाएगा, उतना ही बुरा होगा
प्रदर्शन के लिए. विशिष्ट पोर्ट का चयन करने के लिए "/*वेरिलेटर sc_bv*/" विशेषता का उपयोग करें
sc_bv हो.
--पिंस-एससी-यूइंट
निर्दिष्ट करता है कि 2 बिट से अधिक चौड़ाई वाले SystemC इनपुट/आउटपुट को sc_uint का उपयोग करना चाहिए
2 और 64 के बीच। जब इसे "--पिंस-एससी-बिगुइंट" संयोजन के साथ जोड़ा जाता है, तो इसका परिणाम होता है
sc_uint में 2 और 64 के बीच और sc_biguint में 65 और 512 के बीच उपयोग किया जा रहा है।
--पिन-एससी-बिगुइंट
निर्दिष्ट करता है कि 65 बिट से अधिक चौड़ाई वाले SystemC इनपुट/आउटपुट को sc_biguint का उपयोग करना चाहिए
65 और 512 के बीच, और sc_bv 513 से ऊपर की ओर। के साथ संयुक्त होने पर
"--pins-sc-uint" संयोजन, इसके परिणामस्वरूप sc_uint का उपयोग 2 और 64 के बीच किया जाता है और
sc_biguint का उपयोग 65 और 512 के बीच किया जा रहा है।
--पिंस-यूइंट8
SystemC इनपुट/आउटपुट निर्दिष्ट करता है जो --pins-bv सेटिंग और 8 से छोटे होते हैं
बिट्स या उससे कम को uint8_t के बजाय uint32_t का उपयोग करना चाहिए। इसी तरह 9-16 चौड़ाई के पिन भी लगेंगे
uint16_t के बजाय uint32_t का उपयोग करें।
--पाइप-फ़िल्टर आदेश
शायद ही कभी आवश्यक और प्रयोगात्मक हो। वेरिलेटर निर्दिष्ट कमांड को एक के रूप में उत्पन्न करेगा
सबप्रोसेस पाइप, कमांड को वेरिलॉग कोड पर कस्टम संपादन करने की अनुमति देने के लिए
वेरिलेटर तक पहुंचने से पहले.
प्रत्येक वेरिलॉग फ़ाइल को पढ़ने से पहले, वेरिलेटर फ़ाइल नाम को उपप्रोसेस में भेज देगा।
'read_verilog' के साथ stdin "'. फ़िल्टर तब फ़ाइल को पढ़ सकता है और निष्पादित कर सकता है
कोई भी फ़िल्टरिंग जो वह चाहता है, और नई फ़ाइल सामग्री को स्टडआउट पर वेरिलेटर को वापस फ़ीड करता है
'सामग्री-लंबाई' के साथ. फ़िल्टर से stderr का आउटपुट वेरिलेटर के माध्यम से फ़ीड होता है
stdout और यदि फ़िल्टर गैर-शून्य स्थिति के साथ बाहर निकलता है तो वेरिलेटर समाप्त हो जाता है। देखें
उदाहरण के लिए t/t_pipe_filter परीक्षण।
फ़िल्टर के आउटपुट को डीबग करने के लिए, प्रीप्रोसेस्ड आउटपुट देखने के लिए -E विकल्प का उपयोग करने का प्रयास करें।
उपसर्ग शीर्षनाम
शीर्ष स्तरीय वर्ग और मेकफ़ाइल का नाम निर्दिष्ट करता है। डिफ़ॉल्ट रूप से V से जुड़ा हुआ है
--टॉप-मॉड्यूल स्विच का नाम, या V पहले वेरिलॉग फ़ाइल नाम से जुड़ा हुआ है
कमांड लाइन पर पारित किया गया।
--प्रोफ़ाइल-cfuncs
प्रोफ़ाइलिंग का समर्थन करने के लिए बनाए गए C++ फ़ंक्शंस को संशोधित करें। कार्य होंगे
एक "बुनियादी" कथन, आम तौर पर एक हमेशा ब्लॉक या तार को शामिल करने के लिए न्यूनतम रखा गया है
कथन। (ध्यान दें कि यह निष्पादन योग्य को ~5% तक धीमा कर देगा।) इसके अलावा,
फ़ंक्शन नाम को वेरिलॉग मॉड्यूल के बेसनाम और लाइन नंबर के साथ जोड़ा जाएगा
का बयान आया. यह gprof या oprofile रिपोर्टों को सहसंबद्ध करने की अनुमति देता है
मूल वेरिलॉग स्रोत कथन।
--निजी
--सार्वजनिक के विपरीत। डिफ़ॉल्ट है; यह विकल्प पश्चगामी संगतता के लिए मौजूद है।
--सह लोक
यह केवल ऐतिहासिक डिबग उपयोग के लिए है। इसके प्रयोग से गलत अनुकरण हो सकता है
उत्पन्न घड़ियाँ.
सभी सिग्नल और मॉड्यूल को सार्वजनिक घोषित करता है। इससे सिग्नल ऑप्टिमाइज़ेशन बंद हो जाएगा
यदि सभी सिग्नलों में /*वेरिलेटर पब्लिक*/ टिप्पणियाँ और इनलाइनिंग हो। ये भी पलटेगा
इनलाइनिंग बंद करें जैसे कि सभी मॉड्यूल में /*वेरिलेटर public_module*/ था, जब तक कि मॉड्यूल न हो
इसे विशेष रूप से /*वेरिलेटर इनलाइन_मॉड्यूल* के साथ सक्षम किया गया/.
--रिपोर्ट-अनऑप्टफ्लैट
UNOPTFLAT चेतावनियों के लिए अतिरिक्त निदान। इसमें प्रत्येक लूप के लिए 10 सबसे चौड़े लूप शामिल हैं
लूप में वेरिएबल्स, और लूप में 10 सबसे अधिक प्रसारित वेरिएबल्स। ये
लूप को तोड़ने के लिए उम्मीदवारों को कई वेरिएबल्स में विभाजित करना होगा।
इसके अलावा संपूर्ण मजबूती से जुड़े घटकों की एक ग्राफ़विज़ डीओटी फ़ाइल तैयार करता है
प्रत्येक लूप से जुड़े स्रोत के भीतर। चाहे कुछ भी हो इसका उत्पादन किया जाता है
--डंप-ट्री सेट है। ऐसे ग्राफ़ समस्या का विश्लेषण करने में मदद कर सकते हैं, लेकिन बहुत अधिक हो सकते हैं
वास्तव में बड़ा.
डीओटी फाइलों को देखने और उनमें हेरफेर करने के लिए विभिन्न कमांड मौजूद हैं। उदाहरण के लिए डॉट
कमांड का उपयोग प्रिंटिंग के लिए डीओटी फ़ाइल को पीडीएफ में बदलने के लिए किया जा सकता है। उदाहरण के लिए:
डॉट-टीपीडीएफ-ओ Vt_unoptflat_simple_2_35_unoptflat.dot
DOT फ़ाइल से एक पीडीएफ Vt_unoptflat_simple_2_35_unoptflat.dot.pdf उत्पन्न होगा।
- बचाने योग्य
जनरेट किए गए मॉडल में सेव और रिस्टोर फ़ंक्शंस को शामिल करना सक्षम करें।
उपयोगकर्ता कोड को तब VerilatedSerialize या VerilatedDeserialze ऑब्जेक्ट बनाना होगा
उत्पन्न मॉडल और किसी अन्य डेटा पर << या >> ऑपरेटरों को कॉल करने की प्रक्रिया
सहेजे/पुनर्स्थापित करने की आवश्यकता है। उदाहरण के लिए:
शून्य सेव_मॉडल(स्थिरांक चार* फ़ाइल नाम) {
VerilatedSave ओएस;
ओएस.ओपन(फ़ाइलनामईपी);
ओएस << मुख्य_समय; // उपयोगकर्ता कोड को टाइमस्टैम्प आदि सहेजना होगा
ओएस << *टॉप;
}
शून्य पुनर्स्थापना_मॉडल(स्थिरांक चार* फ़ाइल नाम) {
VerilatedRestore ओएस;
ओएस.ओपन(फ़ाइलनामईपी);
ओएस >> मुख्य_समय;
ओएस >> *टॉप;
}
--अनुसूचित जाति
SystemC आउटपुट मोड निर्दिष्ट करता है; यह भी देखें --cc.
--आँकड़े
{prefix}__stats.txt में डिज़ाइन के आँकड़ों के साथ एक डंप फ़ाइल बनाता है।
--आँकड़े-वर्स
आकार (सादा) के अनुसार सभी चरों की सूची सहित अधिक विस्तृत आँकड़े बनाता है
--आँकड़े सिर्फ एक गिनती देता है)। देखें--आँकड़े, जो इससे निहित है।
-sv निर्दिष्ट करता है कि SystemVerilog भाषा सुविधाओं को सक्षम किया जाना चाहिए; "--भाषा" के समतुल्य
1800-2005"। यह विकल्प डिफ़ॉल्ट रूप से चुना गया है, यह संगतता के लिए मौजूद है
अन्य सिमुलेटर.
+systemverilogext+ext
"+1800-2012ext+" का पर्यायवाचीext.
--शीर्ष-मॉड्यूल शीर्षनाम
जब इनपुट वेरिलॉग में एक से अधिक शीर्ष स्तरीय मॉड्यूल होते हैं, तो इसका नाम निर्दिष्ट करता है
शीर्ष स्तर का वेरिलॉग मॉड्यूल शीर्ष बन जाता है, और if --prefix के लिए डिफ़ॉल्ट सेट करता है
उपयोग नहीं होता है। केवल एक शीर्ष वाले मानक डिज़ाइनों के लिए इसकी आवश्यकता नहीं है।
--ट्रेस
मॉडल में वेवफॉर्म ट्रेसिंग कोड जोड़ता है। वेरिलेटर अतिरिक्त उत्पन्न करेगा
{prefix}__Trace*.cpp फ़ाइलें जिन्हें संकलित करने की आवश्यकता होगी। इसके साथ ही
verilated_vcd_sc.cpp (SystemC ट्रेस के लिए) या verilated_vcd_c.cpp (दोनों के लिए) होना चाहिए
संकलित और लिंक किया गया। यदि वेरिलेटर जेनरेटेड मेकफ़ाइल्स का उपयोग कर रहा है, तो ये होंगे
आपके लिए स्रोत लक्ष्य के रूप में जोड़ा गया। यदि आप वेरिलेटर मेकफ़ाइल्स का उपयोग नहीं कर रहे हैं, तो आप
इन्हें आपकी मेकफ़ाइल में मैन्युअल रूप से जोड़ना होगा।
ट्रेसिंग को संकलित करने से कुछ छोटे प्रदर्शन नुकसान हो सकते हैं, भले ही
मॉडल निष्पादन के दौरान तरंगरूप चालू नहीं होते हैं।
--निशान-गहराई स्तर
ट्रेसिंग को सक्षम करने के लिए गहरे स्तरों की संख्या निर्दिष्ट करें, उदाहरण के लिए --ट्रेस-लेवल 1 से
केवल शीर्ष स्तर के सिग्नल देखें। संपूर्ण मॉडल के लिए डिफ़ॉल्ट. छोटी संख्या का उपयोग करना
दृश्यता कम हो जाएगी, लेकिन रनटाइम और ट्रेस फ़ाइल आकार में काफी सुधार होगा।
--ट्रेस-मैक्स-ऐरे गहराई
शायद ही कभी जरूरत पड़े. किसी सिग्नल की अधिकतम सरणी गहराई निर्दिष्ट करें जिसका पता लगाया जा सकता है।
32 पर डिफ़ॉल्ट, क्योंकि बड़े एरे को ट्रेस करने से ट्रेस किए गए सिमुलेशन काफी धीमा हो सकते हैं।
--ट्रेस-अधिकतम-चौड़ाई चौडाई
शायद ही कभी जरूरत पड़े. किसी सिग्नल की अधिकतम बिट चौड़ाई निर्दिष्ट करें जिसे ट्रेस किया जा सके।
डिफ़ॉल्ट 256 है, क्योंकि बड़े वैक्टरों को ट्रेस करने से ट्रेस किए गए सिमुलेशन की गति काफी धीमी हो सकती है।
--नो-ट्रेस-पैराम्स
पैरामीटर्स का पता लगाना अक्षम करें.
--ट्रेस-structs
पैक्ड संरचना, यूनियन और पैक्ड ऐरे फ़ील्ड का नाम दिखाने के लिए ट्रेसिंग सक्षम करें,
एक साधारण संयुक्त खचाखच भरी बस के बजाय। वीसीडी फ़ाइल स्वरूप बाधाओं के कारण ऐसा हो सकता है
परिणामस्वरूप ट्रेस समय काफी धीमा हो जाता है और फ़ाइलें बड़ी हो जाती हैं।
--ट्रेस-अंडरस्कोर
अंडरस्कोर से शुरू होने वाले संकेतों का पता लगाना सक्षम करें। आम तौर पर, ये संकेत होते हैं
ट्रेसिंग के दौरान आउटपुट नहीं। यह भी देखें--कवरेज-अंडरस्कोर।
-Uथा
दिए गए प्रीप्रोसेसर प्रतीक को अपरिभाषित करता है।
--अनरोल-गिनती छोरों
शायद ही कभी जरूरत पड़े. लूप पुनरावृत्तियों की अधिकतम संख्या निर्दिष्ट करता है जिन्हें अनियंत्रित किया जा सकता है।
BLKLOOPINIT चेतावनी भी देखें।
--अनरोल-एसटीएमटीएस बयान
शायद ही कभी जरूरत पड़े. उस लूप के लिए लूप में कथनों की अधिकतम संख्या निर्दिष्ट करता है
अनियंत्रित हो जाओ. BLKLOOPINIT चेतावनी भी देखें।
--अप्रयुक्त-regexp regexp
शायद ही कभी जरूरत पड़े. * और ? के साथ एक सरल regexp निर्दिष्ट करता है कि यदि कोई सिग्नल नाम मेल खाता है
अप्रयुक्त चेतावनी को दबा देगा. डिफ़ॉल्ट "*अप्रयुक्त*"। इसे "" पर सेट करने से अक्षम हो जाता है
मेल मिलाना।
-V वर्बोज़ संस्करण दिखाता है, जिसमें संकलित कॉन्फ़िगरेशन जानकारी भी शामिल है
सत्यापनकर्ता। (पर्ल-वी के समान)
-v फ़ाइल का नाम
फ़ाइल नाम को वेरिलॉग लाइब्रेरी के रूप में पढ़ें। फ़ाइल में किसी भी मॉड्यूल का उपयोग किया जा सकता है
शीर्ष स्तर के मॉड्यूल में सेल इंस्टेंटेशन को हल करें, अन्यथा अनदेखा कर दिया जाएगा। नोट-v निष्पक्ष है
वेरिलॉग टूल में मानक।
+वेरिलॉग1995एक्सट+ext
+वेरिलॉग2001एक्सट+ext
"+1364-1995ext+" के पर्यायवाचीext और "+1364-2001ext+"ext क्रमश
-दीवार
कोड शैली चेतावनियों सहित सभी चेतावनियाँ सक्षम करें जो सामान्यतः अक्षम होती हैं
चूक।
-आतंक-message
निर्दिष्ट चेतावनी संदेश को त्रुटि संदेश में बदलें। यह आम तौर पर है
उदाहरण के लिए, उपयोगकर्ताओं को महत्वपूर्ण साइट-व्यापी नियमों का उल्लंघन करने से हतोत्साहित करना
"-Werror-NOUNOPTFLAT"।
-Wभविष्य-message
शायद ही कभी जरूरत पड़े. अज्ञात वेरिलेटर टिप्पणियों या चेतावनी संदेशों को दिए गए शब्दों से दबाएँ
संदेश कोड. इसका उपयोग बाद के संस्करण के लिए प्राग्मास के साथ लिखे गए कोड को अनुमति देने के लिए किया जाता है
वेरिलेटर पुराने संस्करण के अंतर्गत चलेगा; प्रत्येक संदेश कोड के लिए -Wfuture- तर्क जोड़ें
या टिप्पणी करें कि नया संस्करण उस चीज़ का समर्थन करता है जिसका पुराना संस्करण समर्थन नहीं करता है।
-नहीं-message
निर्दिष्ट चेतावनी संदेश अक्षम करें. यह किसी भी lint_on निर्देश को ओवरराइड कर देगा
स्रोत, यानी चेतावनी अभी भी मुद्रित नहीं की जाएगी।
-वनो-लिंट
सभी लिंट संबंधित चेतावनी संदेशों और सभी शैली चेतावनियों को अक्षम करें। यह समतुल्य है
से "-वनो-ALWCOMBORDER -Wनो-केसअपूर्ण -वनो-केसओवरलैप -वनो-केसएक्स -वनो-केसविथएक्स
-Wno-CMPCONST -Wno-ENDLABEL -Wno-IMPLICIT -Wno-Litendian -Wno-PINCONNECTEMPTY
-Wno-पिनमिसिंग -Wno-SYNCASYNCNET -Wno-अनड्राइव -Wno-अहस्ताक्षरित -Wno-अप्रयुक्त -Wno-Width"
साथ ही Wno-शैली के लिए दिखाई गई सूची।
यह दृढ़तापूर्वक अनुशंसा की जाती है कि आप इस विकल्प का उपयोग करने के बजाय अपना कोड साफ़ करें, ऐसा है
इसका उपयोग केवल तीसरे पक्ष से प्राप्त कोड के परीक्षण-मामलों को चलाने के दौरान किया जाना है।
-वनो-शैली
सभी कोड शैली संबंधी चेतावनी संदेशों को अक्षम करें (ध्यान दें कि डिफ़ॉल्ट रूप से वे पहले से ही हैं
अक्षम)। यह "-Wno-DECLFILENAME -Wno-DEFPARAM -Wno-INCABSPATH" के समतुल्य है
-Wno-पिनकनेक्टटेम्प्टी -Wno-PINNOCONNECT -Wno-SYNCASYNCNET -Wno-अनड्राइव -Wno-अप्रयुक्त
-Wno-VARHIDDEN"।
-नहीं-घातक
जब चेतावनियों का पता चले, तो उन्हें प्रिंट करें, लेकिन सिम्युलेटर से बाहर न निकलें।
बिल्ड में चेतावनी संदेश रखना टेढ़ापन है। आपको सफ़ाई करने की पुरजोर अनुशंसा की जाती है
अपना कोड, इस विकल्प का उपयोग करने के बजाय इनलाइन lint_off का उपयोग करें, या -Wno-... फ़्लैग का उपयोग करें।
-चेतावनी-message
निर्दिष्ट चेतावनी संदेश सक्षम करता है.
-वार्न-लिंट
सभी लिंट संबंधित चेतावनी संदेशों को सक्षम करें (ध्यान दें कि डिफ़ॉल्ट रूप से वे पहले से ही सक्षम हैं),
लेकिन शैली संदेशों को प्रभावित न करें. यह "-Wwarn-ALWCOMBORDER" के समतुल्य है
-चेतावनी-मामलाअपूर्ण -चेतावनी-केसओवरलैप -चेतावनी-केसएक्स -चेतावनी-केसविथएक्स -वार्न-सीएमपीकॉन्स्ट
-वार्न-एंडलेबल -वार्न-इम्प्लिसिट -वार्न-लिटेंडियन -वार्न-पिनमिसिंग -वार्न-रियलवीटी
-चेतावनी-अहस्ताक्षरित -चेतावनी-चौड़ाई"।
-चेतावनी शैली
सभी कोड शैली संबंधी चेतावनी संदेश सक्षम करें. यह "-वार्न" के समतुल्य है
असाइन्डली -वार्न-डिक्लफाइलनाम -वार्न-डेफपरम -वार्न-इनकैबस्पैट -वार्न-पिननोकनेक्ट
-वार्न-सिंकैसिननेट -वार्न-अनड्राइवन -वार्न-अप्रयुक्त -वार्न-वार्नहिडन"।
--x-असाइन 0
--x-असाइन 1
--x-तेज़ी से असाइन करें (डिफ़ॉल्ट)
--x-असाइन अद्वितीय
दो-अवस्था वाले मान को नियंत्रित करता है जिसे X को असाइनमेंट मिलने पर बदल दिया जाता है।
--x-assign=fast, डिफ़ॉल्ट, सभी Xs को प्रदर्शन के लिए सर्वोत्तम में परिवर्तित करता है।
--x-assign=0 सभी Xs को 0s में परिवर्तित करता है, और तेज़ भी है। --x-assign=1 सभी Xs को परिवर्तित करता है
1s, यह लगभग 0 जितना तेज़ है, लेकिन सक्रिय उच्च के रूप में रीसेट बग मिलने की अधिक संभावना है
तर्क आग उगलेगा. --x-assign=unique, मान निर्धारित करने के लिए एक फ़ंक्शन को कॉल करेगा
रीसेट बग ढूंढने के लिए सभी एक्स के रैंडमाइजेशन की अनुमति देता है और यह सबसे धीमा है, लेकिन सबसे सुरक्षित है
कोड में रीसेट बग ढूंढना।
यदि --x-असाइन यूनिक का उपयोग कर रहे हैं, तो हो सकता है कि आप अपने यादृच्छिक संख्या जनरेटर को सीड करना चाहें
प्रत्येक प्रतिगमन रन को एक अलग यादृच्छिकीकरण अनुक्रम मिलता है। सिस्टम का उपयोग करें
srand48() या विंडोज़ के लिए सरंड () ऐसा करने के लिए कार्य करें. शायद आप भी चाहेंगे
चयनित किसी भी बीज को प्रिंट करें, और उसी बीज के साथ पुन: चलाने को सक्षम करने के लिए कोड डालें ताकि आप ऐसा कर सकें
बग पुनरुत्पादित करें।
नोट्स। यह विकल्प केवल उन वेरिएबल्स पर लागू होता है जो स्पष्ट रूप से X को निर्दिष्ट हैं
वेरिलॉग स्रोत कोड। घड़ियों का प्रारंभिक मान 0 पर सेट है जब तक कि --x-प्रारंभिक-किनारे न हो
निर्दिष्ट. अन्य सभी राज्य होल्डिंग वेरिएबल्स के प्रारंभिक मान वैसे ही सेट किए गए हैं
--x-assign अद्वितीय निर्दिष्ट किया गया था।
--x-प्रारंभिक-किनारा
इवेंट संचालित सिमुलेटर के अनुकरण को सक्षम बनाता है जो आम तौर पर बढ़त को ट्रिगर करता है
X से 1 ("पोज़ेज") या X से 0 ("नेगेज") में संक्रमण। इस प्रकार निम्नलिखित कोड,
जहां "rst_n" अप्रारंभीकृत है, वहां "rst_n" को पहली बार सेट करने पर "res_n" को "1'b1" पर सेट किया जाएगा
शून्य करने के लिए:
reg res_n = 1'b0;
हमेशा @(negedge rst_n) प्रारंभ करें
यदि (rst_n == 1'b0) प्रारंभ करें
res_n <= 1'बी1;
समाप्त
समाप्त
वेरिलेटर में, डिफ़ॉल्ट रूप से, अप्रारंभीकृत घड़ियों को शून्य का मान दिया जाता है, इसलिए उपरोक्त
"हमेशा" ब्लॉक ट्रिगर नहीं होगा।
हालाँकि यह अच्छा अभ्यास नहीं है, कुछ डिज़ाइन ऐसे हैं जो XX 0 पर निर्भर होकर ट्रिगर होते हैं
"नेगेज", विशेष रूप से रीसेट अनुक्रमों में। वेरिलेटर के साथ --x-initial-edge का उपयोग करना होगा
इस व्यवहार को दोहराएँ. यह यह भी सुनिश्चित करेगा कि XX 1 एक "पोज़ेज" ट्रिगर करता है।
नोट्स। कुछ उपयोगकर्ताओं ने बताया है कि इस विकल्प का उपयोग करने से अभिसरण प्रभावित हो सकता है, इत्यादि
अभिसरण की संख्या बढ़ाने के लिए --converge-limit का उपयोग करना आवश्यक हो सकता है
पुनरावृत्तियाँ यह मॉडल किए गए डिज़ाइन के साथ समस्याओं का एक और संकेत हो सकता है
संबोधित किया जाना चाहिए.
-y दीर
निर्देशिका को उन निर्देशिकाओं की सूची में जोड़ें जिन्हें खोजा जाना चाहिए जिनमें फ़ाइलें शामिल हैं
या पुस्तकालय. तीन झंडों -y, +incdir और -I का प्रभाव समान है; +incdir और +y
वेरिलॉग टूल्स में काफी मानक हैं जबकि -I जीसीसी संगतता के लिए एक उपनाम है।
हालाँकि, वेरिलेटर वर्तमान निर्देशिका ("-y।") और किसी भी निर्दिष्ट --Mdir पर डिफॉल्ट करता है
इन डिफ़ॉल्ट पथों का उपयोग किसी भी उपयोगकर्ता निर्दिष्ट निर्देशिका के बाद किया जाता है। यह '-y' की अनुमति देता है
यदि त्रुटि संदेशों के लिए पूर्ण फ़ाइल नाम वांछित हैं तो "$(pwd)"' का उपयोग किया जाएगा
सापेक्ष फ़ाइल नाम.
उदाहरण सी + + कार्यान्वयन
हम इस उदाहरण को C++ में संकलित करेंगे।
mkdir test_our
सीडी परीक्षण_हमारा
बिल्ली < हमारा.वि
मॉड्यूल हमारा;
आरंभिक आरंभ $प्रदर्शन('हैलो वर्ल्ड'); $खत्म; अंत
endmodule
EOF
बिल्ली < sim_main.cpp
#शामिल है "Vour.h"
#शामिल है "verilated.h"
int मुख्य(int argc, char **argv, char **env) {
Verilated::commandArgs(argc, argv);
वोर* शीर्ष = नया वोर;
जबकि (!सत्यापित::गॉटफिनिश()) { शीर्ष->eval(); }
शीर्ष हटाएं;
निकास; (0)
}
EOF
यदि आपने वेरिलेटर को किसी स्रोत या टारबॉल से स्थापित किया है, लेकिन अपने संचालन के हिस्से के रूप में नहीं
सिस्टम (आरपीएम के रूप में), सबसे पहले आपको किट की ओर इशारा करना होगा:
निर्यात VERILATOR_ROOT=/path/to/where/verilator/था/स्थापित
निर्यात PATH=$VERILATOR_ROOT/bin:$PATH
अब हम अपने छोटे से उदाहरण पर वेरिलेटर चलाते हैं।
वेरिलेटर -वॉल --cc our.v --exe sim_main.cpp
हम स्रोत कोड को "obj_dir" निर्देशिका के अंतर्गत देख सकते हैं। इसके लिए नीचे फ़ाइलें अनुभाग देखें
बनाई गई कुछ फ़ाइलों का विवरण।
ls -l obj_dir
फिर हम इसे संकलित कर सकते हैं
सीडी obj_dir
मेक -जे -एफ वोर.एमके वोर
(वेरिलेटर में एक डिफ़ॉल्ट संकलन नियम और लिंक नियम शामिल था, क्योंकि हमने --exe का उपयोग किया था और a पारित किया था
वेरिलेटर कमांड लाइन पर .cpp फ़ाइल। आप अपने स्वयं के संकलन नियम भी लिख सकते हैं
हम SYSTEMC अनुभाग में दिखाएंगे।)
और अब हम इसे चलाते हैं
सीडी ..
obj_dir/Vour
और हमें आउटपुट मिलता है
नमस्ते विश्व
- हमारा.v:2: वेरिलॉग $फिनिश
वास्तव में, आपके लिए यह सब करने के लिए मेकफ़ाइल लिखना बेहतर होगा। फिर, जब आपका
स्रोत बदलता है तो यह स्वचालित रूप से इन सभी चरणों को चलाएगा। इसमें test_c निर्देशिका देखें
उदाहरण के लिए वितरण.
उदाहरण सिस्टम कार्यान्वयन
यह उपरोक्त के समान एक उदाहरण है, लेकिन SystemC का उपयोग कर रहा है।
mkdir test_our_sc
सीडी परीक्षण_हमारा_एससी
बिल्ली < हमारा.वि
मॉड्यूल हमारा (सीएलके);
इनपुट क्लॉक; // प्रारंभिक सक्रियण प्राप्त करने के लिए घड़ी की आवश्यकता है
हमेशा @ (पोजेज क्लर्क)
$ डिस्प्ले शुरू करें ("हैलो वर्ल्ड"); $खत्म; अंत
endmodule
EOF
बिल्ली < sc_main.cpp
#शामिल है "Vour.h"
int sc_main(int argc, char **argv) {
Verilated::commandArgs(argc, argv);
एससी_क्लॉक क्लॉक ("सीएलके",10, 0.5, 3, सत्य);
वोर* शीर्ष;
शीर्ष = नया वोर ("शीर्ष"); // SP_CELL (शीर्ष, वोर);
शीर्ष->सीएलके(सीएलके); // SP_PIN (शीर्ष, clk, clk);
जबकि (!सत्यापित::गॉटफिनिश()) { एससी_स्टार्ट(1, एससी_एनएस); }
शीर्ष हटाएं;
निकास; (0)
}
EOF
यदि आपने वेरिलेटर को किसी स्रोत या टारबॉल से स्थापित किया है, लेकिन अपने संचालन के हिस्से के रूप में नहीं
सिस्टम (आरपीएम के रूप में), सबसे पहले आपको किट की ओर इशारा करना होगा:
निर्यात VERILATOR_ROOT=/path/to/where/verilator/था/स्थापित
निर्यात PATH=$VERILATOR_ROOT/bin:$PATH
अब हम अपने छोटे से उदाहरण पर वेरिलेटर चलाते हैं।
verilator -Wall --sc our.v
फिर हम इसे संकलित कर सकते हैं
मेक -j -f Vour.mk Vour__ALL.a
make -j -f Vour.mk ../sc_main.o verilated.o
और SystemC से लिंक करें। ध्यान दें कि पुस्तकालयों तक आपका पथ इसके आधार पर भिन्न हो सकता है
ऑपरेटिंग सिस्टम।
निर्यात SYSTEMC_LIBDIR=/path/to/where/libsystemc.a/exists
निर्यात LD_LIBRARY_PATH=$SYSTEMC_LIBDIR:$LD_LIBRARY_PATH
# यदि SystemC 2.3.0 की आवश्यकता हो सकती है
निर्यात SYSTEMC_CXX_FLAGS=-pthread
g++ -L$SYSTEMC_LIBDIR ../sc_main.o Vour__ALL*.o सत्यापित.o
-ओ वोर -एलसिस्टमसी
और अब हम इसे चलाते हैं
सीडी ..
obj_dir/Vour
और हमें C++ उदाहरण के समान आउटपुट मिलता है:
नमस्ते विश्व
- हमारा.v:2: वेरिलॉग $फिनिश
वास्तव में, आपके लिए यह सब करने के लिए मेकफ़ाइल का उपयोग करना बेहतर है। फिर, जब आपका स्रोत
परिवर्तन यह स्वचालित रूप से इन सभी चरणों को चलाएगा। में test_sc निर्देशिका देखें
उदाहरण के लिए वितरण.
बेंच मार्किंग & OPTIMIZATION
सर्वोत्तम प्रदर्शन के लिए, वेरिलेटर को "-O3 --x-assign=fast --noassert" फ़्लैग के साथ चलाएँ।
-O3 ध्वज को लंबे समय तक संकलित करने की आवश्यकता होगी, और --x-assign=fast का जोखिम बढ़ सकता है
प्रदर्शन के बदले बग रीसेट करें; इन झंडों के लिए उपरोक्त दस्तावेज़ देखें।
वेरिलॉग कोड में मामूली बदलाव भी बड़ी जीत दिला सकते हैं। आपके पास कोई UNOPTFLAT नहीं होना चाहिए
वेरिलेटर से चेतावनियाँ. इन चेतावनियों को ठीक करने से बड़े सुधार हो सकते हैं; एक उपयोगकर्ता
गेट के लिए उपयोग की जाने वाली घड़ी की कुंडी में एक साधारण परिवर्तन करके उनकी एक UNOPTFLAT चेतावनी को ठीक किया गया
घड़ियाँ और 60% प्रदर्शन सुधार प्राप्त किया।
इसके अलावा, एक Verilated मॉडल का प्रदर्शन अधिकतर आपके C++ कंपाइलर पर निर्भर करता है
आपके सीपीयू के कैश का आकार।
डिफ़ॉल्ट रूप से, lib/verilated.mk फ़ाइल में अनुकूलन बंद है। यह के लिए है
नए उपयोगकर्ताओं के लिए लाभ, क्योंकि यह रनटाइम की कीमत पर संकलन समय में सुधार करता है। जमा करना
अनुकूलन को डिफ़ॉल्ट के रूप में, तीन चर, OPT, OPT_FAST, या OPT_SLOW में से एक सेट करें
lib/verilated.mk. या, वेरिलेटर कमांड पर -CFLAGS और/या -LDFLAGS विकल्प का उपयोग करें
झंडे को सीधे कंपाइलर या लिंकर तक पहुंचाने के लिए लाइन। या, केवल एक रन के लिए, पास करें
उन्हें बनाने के लिए कमांड लाइन पर:
OPT_FAST='-O2' -f Vour.mk Vour__ALL.a बनाएं
OPT_FAST उन प्रोग्रामों के लिए अनुकूलन निर्दिष्ट करता है जो अधिकतर तेज़ पथ का हिस्सा होते हैं
कोड जो हर चक्र में निष्पादित होता है। OPT_SLOW धीमी-पथ वाली फ़ाइलों के लिए अनुकूलन निर्दिष्ट करता है
(प्लस ट्रेसिंग), जो कभी-कभार ही निष्पादित होते हैं, फिर भी इन्हें संकलित करने में लंबा समय लगता है
अनुकूलन चालू. ओपीटी समग्र अनुकूलन को निर्दिष्ट करता है और सभी संकलनों को प्रभावित करता है
वे OPT_FAST और OPT_SLOW प्रभावित करते हैं। सर्वोत्तम परिणामों के लिए, OPT='-O2' का उपयोग करें और इसके साथ लिंक करें
"-स्थैतिक"। बेहतर संकलन समय के साथ लगभग समान परिणाम प्राप्त किए जा सकते हैं
OPT_FAST='-O1 -फस्ट्रिक्ट-अलियासिंग'। उच्च अनुकूलन जैसे "-O3" मदद कर सकता है, लेकिन जीसीसी
मध्यम आकार के डिज़ाइनों पर भी O3 के अंतर्गत संकलन समय अत्यधिक हो सकता है। वैकल्पिक रूप से, कुछ
बड़े डिज़ाइन "-ओएस" का उपयोग करके बेहतर प्रदर्शन की रिपोर्ट करते हैं।
दुर्भाग्य से, SystemC फ़ाइलों के साथ ऑप्टिमाइज़र का उपयोग करने से संकलन में देरी हो सकती है
कई मिनट। (SystemC लाइब्रेरीज़ में कई छोटे इनलाइन फ़ंक्शंस हैं जो इसे संचालित करते हैं
कंपाइलर नट.)
सर्वोत्तम परिणामों के लिए, GCC 3.3 या नए संस्करण का उपयोग करें। GCC 3.2 और इससे पहले के संस्करण में अनुकूलन बग हैं
पॉइंटर अलियासिंग डिटेक्शन, जिसके परिणामस्वरूप 2x प्रदर्शन हानि हो सकती है।
यदि आप एक ही संकलन पर कई सिमुलेशन चला रहे हैं, तो फीडबैक आधारित जांच करें
संकलन. जीसीसी के साथ, -fprofile-arcs का उपयोग करके, -fbranch-संभावनाएँ प्राप्त होंगी
अन्य 15% या तो।
आधुनिक कंपाइलर लिंक-टाइम ऑप्टिमाइज़ेशन (एलटीओ) का भी समर्थन करते हैं, जो विशेष रूप से मदद कर सकता है
आप डीपीआई कोड में लिंक करें। जीसीसी पर एलटीओ सक्षम करने के लिए, संकलन और लिंक दोनों में "-flto" पास करें।
नोट LTO बड़े डिज़ाइनों पर अत्यधिक संकलन समय का कारण बन सकता है।
यदि आप अपनी स्वयं की मेकफ़ाइल्स का उपयोग कर रहे हैं, तो आप Verilated कोड को संकलित करना चाह सकते हैं
-DVL_INLINE_OPT=इनलाइन. यह इनलाइन फ़ंक्शन करेगा, हालाँकि इसके लिए सभी सी.पी.पी. की आवश्यकता है
फ़ाइलों को एक ही कंपाइलर रन में संकलित किया जाना चाहिए।
आप वेरिलॉग कोड की प्रोफाइलिंग करके आगे की ट्यूनिंग संभावनाओं को उजागर कर सकते हैं। उपयोग
वेरिलेटर का --profile-cfuncs, फिर GCC का -g -pg। फिर आप या तो ओप्रोफाइल चला सकते हैं या
gprof यह देखने के लिए कि C++ कोड में समय कहाँ व्यतीत हुआ है। gprof आउटपुट को इसके माध्यम से चलाएँ
verilator_profcfunc और यह आपको बताएगा कि वेरिलॉग लाइन नंबर किस पर सबसे अधिक हैं
समय व्यतीत हो रहा है.
जब पूरा हो जाए, तो कृपया लेखक को परिणाम बताएं। मुझे वेरिलेटर पर नज़र रखना पसंद है
तुलना करता है, और अतिरिक्त सुधार सुझाने में सक्षम हो सकता है।
onworks.net सेवाओं का उपयोग करके ऑनलाइन वेरिलेटर का उपयोग करें