वेरिलॉग प्रक्रियात्मक इंटरफ़ेस: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Software interface between C and Verilog}} Verilog प्रक्रियात्मक इंटरफ़ेस (VPI), जिसे मूल र...")
 
No edit summary
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Short description|Software interface between C and Verilog}}
{{Short description|Software interface between C and Verilog}}
[[Verilog]] प्रक्रियात्मक इंटरफ़ेस (VPI), जिसे मूल रूप से PLI 2.0 के रूप में जाना जाता है, मुख्य रूप से C ([[प्रोग्रामिंग भाषा]]) प्रोग्रामिंग भाषा के लिए अभिप्रेत एक इंटरफ़ेस है। यह व्यावहारिक Verilog कोड को C फ़ंक्शंस, और C फ़ंक्शंस को मानक Verilog सिस्टम कार्यों को प्रारंभ करने की अनुमति देता है। Verilog प्रक्रियात्मक इंटरफ़ेस IEEE [[सी (प्रोग्रामिंग भाषा)]] इंटरफ़ेस मानक का हिस्सा है; मानक का नवीनतम संस्करण 2005 से है। वीपीआई को कभी-कभी पीएलआई 2 के रूप में भी जाना जाता है, क्योंकि यह [[पदावनत]] वेरिलोग#प्रोग्राम लैंग्वेज इंटरफेस (पीएलआई) | प्रोग्राम लैंग्वेज इंटरफेस (पीएलआई) को प्रतिस्थापित करता है।
[[Verilog|'''वेरिलॉग''']] '''प्रक्रियात्मक इंटरफ़ेस''' (वीपीआई ), जिसे मूल रूप से पीएलआई 2.0 के रूप में जाना जाता है,इस प्रकार मुख्य रूप से C ([[प्रोग्रामिंग भाषा]]) प्रोग्रामिंग भाषा के लिए अभिप्रेत इंटरफ़ेस है। यह व्यावहारिक वेरिलॉग कोड को C फ़ंक्शंस, और C फ़ंक्शंस को मानक वेरिलॉग सिस्टम कार्यों को प्रारंभ करने की अनुमति देता है। वेरिलॉग प्रक्रियात्मक इंटरफ़ेस आईईईई [[सी (प्रोग्रामिंग भाषा)]] इंटरफ़ेस मानक का भाग होता है; मानक का नवीनतम संस्करण 2005 का है। इस प्रकार से वीपीआई को कभी-कभी पीएलआई 2 के रूप में भी जाना जाता है, क्योंकि यह [[पदावनत]] वेरिलोग या प्रोग्राम लैंग्वेज इंटरफेस (पीएलआई) प्रोग्राम लैंग्वेज इंटरफेस (पीएलआई) को प्रतिस्थापित करता है।


जबकि पीएलआई 1 को वीपीआई (उर्फ पीएलआई 2) के पक्ष में बहिष्कृत किया गया था, पीएलआई 1 अभी भी आमतौर पर वीपीआई पर उपयोग किया जाता है क्योंकि इसके अधिक व्यापक रूप से प्रलेखित tf_put, tf_get फ़ंक्शन इंटरफ़ेस है जो कई वेरिलॉग संदर्भ पुस्तकों में वर्णित है।
जबकि पीएलआई 1 को वीपीआई (पीएलआई 2) के पक्ष में बहिष्कृत किया गया था, पीएलआई 1 अभी भी सामान्यतः वीपीआई पर उपयोग किया जाता है क्योंकि इसके अधिक व्यापक रूप से प्रलेखित tf_put, tf_get फ़ंक्शन इंटरफ़ेसवर्णन कई वेरिलॉग संदर्भ पुस्तकों में किया गया है।


== सी ++ == का प्रयोग करें
=== सी ++ का प्रयोग ===
सी ++ कंपाइलर्स में निर्मित बाहरी सी/सी ++ कीवर्ड का उपयोग करके सी ++ वीपीआई (पीएलआई 2.0) और पीएलआई 1.0 के साथ पूर्णांक है।
सी ++ कंपाइलर्स में निर्मित बाहरी सी/सी ++ कीवर्ड का उपयोग करके सी ++ वीपीआई (पीएलआई 2.0) और पीएलआई 1.0 के साथ एकीकृत है।


== उदाहरण ==
== उदाहरण ==
एक उदाहरण के रूप में, निम्नलिखित Verilog कोड खंड पर विचार करें:
इस प्रकार से उदाहरण के रूप में, निम्नलिखित वेरिलॉग कोड खंड पर विचार करें:<syntaxhighlight lang="text">
 
<!-- Once Verilog is supported, change lang="text" into lang="verilog" -->
<syntaxhighlight lang="text">
val = 41;
val = 41;
$increment(val);
$increment(val);
$display("After $increment, val=%d", val);
$display("After $increment, val=%d", val);
</syntaxhighlight>
</syntaxhighlight>
मान लीजिए <code>increment</code> सिस्टम टास्क इसके पहले पैरामीटर को एक से बढ़ाता है। C और VPI तंत्र का उपयोग करते हुए, <code>increment</code> कार्य को निम्नानुसार कार्यान्वित किया जा सकता है:
मान लीजिए <code>increment</code> सिस्टम टास्क इसके पहले पैरामीटर को से बढ़ाता है। C और वीपीआई तंत्र का उपयोग करते हुए, <code>increment</code> कार्य को निम्नानुसार कार्यान्वित किया जा सकता है:


<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
Line 45: Line 42:
}
}
</syntaxhighlight>
</syntaxhighlight>
साथ ही, इस सिस्टम कार्य को पंजीकृत करने वाला एक फ़ंक्शन आवश्यक है। यह फ़ंक्शन विस्तार या संदर्भों के संकल्प से पहले लागू किया जाता है जब इसे बाह्य रूप से दृश्यमान में रखा जाता है <code>vlog_startup_routines[]</code> सरणी।
साथ ही, इस सिस्टम कार्य को पंजीकृत करने वाला फ़ंक्शन आवश्यक है। यह फ़ंक्शन विस्तार या संदर्भों के संकल्प से पहले प्रयुक्त किया जाता है जब इसे बाह्य रूप से दृश्यमान में रखा जाता है <code>vlog_startup_routines[]</code> सरणी।


<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
Line 60: Line 57:
};
};
</syntaxhighlight>
</syntaxhighlight>
सी कोड को एक साझा वस्तु में संकलित किया गया है जिसका उपयोग वेरिलॉग सिम्युलेटर द्वारा किया जाएगा। पहले उल्लेखित Verilog अंश का अनुकरण अब निम्नलिखित आउटपुट में परिणाम देगा:
सी कोड को साझा वस्तु में संकलित किया गया है जिसका उपयोग वेरिलॉग सिम्युलेटर द्वारा किया जाता है। प्रथम उल्लेखित वेरिलॉग अंश का अनुकरण अब निम्नलिखित आउटपुट में परिणाम देगा:<syntaxhighlight>
 
VPI routine received 41
<पूर्व>
After $increment, val=42
वीपीआई रूटीन को 41 मिले
</syntaxhighlight>
$ वृद्धि के बाद, वैल = 42
</पूर्व>


== यह भी देखें ==
== यह भी देखें ==
Line 72: Line 67:
== स्रोत ==
== स्रोत ==
{{reflist}}
{{reflist}}
*[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=496013 IEEE एक्सप्लोर]
*[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=496013 आईईईई एक्सप्लोर]


=== वेरिलोग वीपीआई इंटरफ़ेस के लिए स्रोत ===
=== वेरिलोग वीपीआई इंटरफ़ेस के लिए स्रोत ===
*[http://teal.sourceforge.net/ चैती], [[ सी ++ ]] के लिए
*[http://teal.sourceforge.net/ टील], [[ सी ++ |सी ++]] के लिए
*[http://jove.sourceforge.net/ JOVE], [[जावा (प्रोग्रामिंग भाषा)]] के लिए
*[http://jove.sourceforge.net/ जेओवीइ], [[जावा (प्रोग्रामिंग भाषा)]] के लिए
*[https://archive.today/20130415203151/http://ruby-vpi.rubyforge.org/ Ruby-VPI], रूबी (प्रोग्रामिंग लैंग्वेज) के लिए
*[https://archive.today/20130415203151/http://ruby-vpi.rubyforge.org/ रूबी- वीपीआई] , रूबी (प्रोग्रामिंग लैंग्वेज) के लिए
*[https://web.archive.org/web/20070731093359/http://embedded.eecs.berkeley.edu/Alumni/pinhong/scriptEDA/ ScriptEDA], [[पर्ल]], पायथन (प्रोग्रामिंग लैंग्वेज), [[Tcl]] के लिए
*[https://web.archive.org/web/20070731093359/http://embedded.eecs.berkeley.edu/Alumni/pinhong/scriptEDA/ स्क्रिप्ट इडीए], [[पर्ल]], पायथन (प्रोग्रामिंग लैंग्वेज), [[Tcl|टीसीएल]] के लिए
* [[Cocotb]] [https://github.com/cocotb/cocotb], Python (प्रोग्रामिंग भाषा) के लिए
* [[Cocotb|कोकोटीबी]] [https://github.com/cocotb/cocotb], पाइथन (प्रोग्रामिंग भाषा) के लिए
*[https://origen-sdk.org/origen/guides/simulation/introduction/ OrigenSim], [[रूबी (प्रोग्रामिंग भाषा)]] के लिए
*[https://origen-sdk.org/origen/guides/simulation/introduction/ ओरिजेनसिम], [[रूबी (प्रोग्रामिंग भाषा)]] के लिए


==बाहरी संबंध==
==बाहरी संबंध==
*[https://web.archive.org/web/20070413074919/http://www.edn.com/article/CA46145.html Verilog PLI primer]
*[https://web.archive.org/web/20070413074919/http://www.edn.com/article/CA46145.html वेरिलॉग पीएलआई primer]
*[http://www.asic-world.com/verilog/pli6.html#Verilog_Procedural_Interface_(VPI) Verilog VPI tutorial]
*[http://www.asic-world.com/verilog/pli6.html#Verilog_Procedural_Interface_(VPI) वेरिलॉग वीपीआई tutorial]


{{IEEE standards}}
{{IEEE standards}}
[[Category: आईईईई मानकों]]


[[Category: Machine Translated Page]]
[[Category:Collapse templates]]
[[Category:Created On 18/06/2023]]
[[Category:Created On 18/06/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with script errors]]
[[Category:Pages with syntax highlighting errors]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia metatemplates]]
[[Category:आईईईई मानकों]]

Latest revision as of 17:20, 30 June 2023

वेरिलॉग प्रक्रियात्मक इंटरफ़ेस (वीपीआई ), जिसे मूल रूप से पीएलआई 2.0 के रूप में जाना जाता है,इस प्रकार मुख्य रूप से C (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा के लिए अभिप्रेत इंटरफ़ेस है। यह व्यावहारिक वेरिलॉग कोड को C फ़ंक्शंस, और C फ़ंक्शंस को मानक वेरिलॉग सिस्टम कार्यों को प्रारंभ करने की अनुमति देता है। वेरिलॉग प्रक्रियात्मक इंटरफ़ेस आईईईई सी (प्रोग्रामिंग भाषा) इंटरफ़ेस मानक का भाग होता है; मानक का नवीनतम संस्करण 2005 का है। इस प्रकार से वीपीआई को कभी-कभी पीएलआई 2 के रूप में भी जाना जाता है, क्योंकि यह पदावनत वेरिलोग या प्रोग्राम लैंग्वेज इंटरफेस (पीएलआई) प्रोग्राम लैंग्वेज इंटरफेस (पीएलआई) को प्रतिस्थापित करता है।

जबकि पीएलआई 1 को वीपीआई (पीएलआई 2) के पक्ष में बहिष्कृत किया गया था, पीएलआई 1 अभी भी सामान्यतः वीपीआई पर उपयोग किया जाता है क्योंकि इसके अधिक व्यापक रूप से प्रलेखित tf_put, tf_get फ़ंक्शन इंटरफ़ेसवर्णन कई वेरिलॉग संदर्भ पुस्तकों में किया गया है।

सी ++ का प्रयोग

सी ++ कंपाइलर्स में निर्मित बाहरी सी/सी ++ कीवर्ड का उपयोग करके सी ++ वीपीआई (पीएलआई 2.0) और पीएलआई 1.0 के साथ एकीकृत है।

उदाहरण

इस प्रकार से उदाहरण के रूप में, निम्नलिखित वेरिलॉग कोड खंड पर विचार करें:

val = 41;
$increment(val);
$display("After $increment, val=%d", val);

मान लीजिए increment सिस्टम टास्क इसके पहले पैरामीटर को से बढ़ाता है। C और वीपीआई तंत्र का उपयोग करते हुए, increment कार्य को निम्नानुसार कार्यान्वित किया जा सकता है:

// Implements the increment system task
static int increment(char *userdata) {
  vpiHandle systfref, args_iter, argh;
  struct t_vpi_value argval;
  int value;

  // Obtain a handle to the argument list
  systfref = vpi_handle(vpiSysTfCall, NULL);
  args_iter = vpi_iterate(vpiArgument, systfref);

  // Grab the value of the first argument
  argh = vpi_scan(args_iter);
  argval.format = vpiIntVal;
  vpi_get_value(argh, &argval);
  value = argval.value.integer;
  vpi_printf("VPI routine received %d\n", value);

  // Increment the value and put it back as first argument
  argval.value.integer = value + 1;
  vpi_put_value(argh, &argval, NULL, vpiNoDelay);

  // Cleanup and return
  vpi_free_object(args_iter);
  return 0;
}

साथ ही, इस सिस्टम कार्य को पंजीकृत करने वाला फ़ंक्शन आवश्यक है। यह फ़ंक्शन विस्तार या संदर्भों के संकल्प से पहले प्रयुक्त किया जाता है जब इसे बाह्य रूप से दृश्यमान में रखा जाता है vlog_startup_routines[] सरणी।

// Registers the increment system task
void register_increment() {
  s_vpi_systf_data data = {vpiSysTask, 0, "$increment", increment, 0, 0, 0};
  vpi_register_systf(&data);
}

// Contains a zero-terminated list of functions that have to be called at startup
void (*vlog_startup_routines[])() = {
  register_increment,
  0
};

सी कोड को साझा वस्तु में संकलित किया गया है जिसका उपयोग वेरिलॉग सिम्युलेटर द्वारा किया जाता है। प्रथम उल्लेखित वेरिलॉग अंश का अनुकरण अब निम्नलिखित आउटपुट में परिणाम देगा:

VPI routine received 41
After $increment, val=42

यह भी देखें

स्रोत

वेरिलोग वीपीआई इंटरफ़ेस के लिए स्रोत

बाहरी संबंध