亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ch17.htm

?? Verilog DHL教程
?? HTM
?? 第 1 頁 / 共 3 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN"><HTML><HEAD><META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter"><LINK REL="STYLESHEET" HREF="ch17.css"><TITLE> Section 17</TITLE></HEAD><BODY BGCOLOR="#ffffff"><DIV><HR><P><A HREF="none">Chapter&nbsp;&nbsp;start</A>&nbsp;&nbsp;&nbsp;<A HREF="none">Next&nbsp;&nbsp;page</A></P></DIV><DIV><H2 CLASS="SectionNum"><A NAME="pgfId=255"> </A><A NAME="27886"> </A></H2></DIV><DIV><H2 CLASS="SectionTitle"><A NAME="pgfId=138"> </A><A NAME="marker=24"> </A>PLI TF and ACC interface mechanism</H2><P CLASS="BodyText"><A NAME="pgfId=139"> </A>The interface mechanism described in this section provides a means for users to link applications based on PLI task/function (TF) routines and access (ACC) routines to Verilog software products. Through the interface mechanism, a user will:</P><UL><LI CLASS="DashedList"><A NAME="pgfId=144"> </A>Specify a <A NAME="marker=38"> </A>user-defined <A NAME="marker=44"> </A>system <A NAME="marker=45"> </A>task or function <A NAME="marker=51"> </A>name that may be included in Verilog HDL source descriptions; the user-defined system task or function name must begin with a dollar sign (<A NAME="marker=54"> </A>$), such as <EM CLASS="Italic">$get_vector</EM> </LI><LI CLASS="DashedList"><A NAME="pgfId=140"> </A>Provide one or more PLI C applications to be called by a software implementation (such as a logic simulator)</LI><LI CLASS="DashedList"><A NAME="pgfId=155"> </A>Define which PLI C applications are to be called--and when the applications should be called--when the user-defined system task or function name is encountered in the Verilog HDL source description</LI><LI CLASS="DashedList"><A NAME="pgfId=171"> </A>Define whether the PLI C applications should be treated as  <EM CLASS="Italic">function</EM>s (which return a value), or <EM CLASS="Italic">task</EM>s (analogous to subroutines in other programming languages)</LI><LI CLASS="DashedList"><A NAME="pgfId=245"> </A>Define a data argument to be passed to the PLI C routines each time they are called</LI></UL><P CLASS="Note"><A NAME="pgfId=243"> </A>Note: The PLI interface mechanism described in this section may not apply to applications which use the Verilog Procedural Interface (VPI) routines; these routines use the VPI registry mechanism described in <A HREF="/Humuhumu/Files/Prof_Smith/Academic/ASICs/Web/ASICs/HTML/Verilog/LRM/HTML/17/ch22.htm#42361" CLASS="XRef"></A> and <A HREF="/Humuhumu/Files/Prof_Smith/Academic/ASICs/Web/ASICs/HTML/Verilog/LRM/HTML/17/ch23.htm#19452" CLASS="XRef"></A>.</P><DIV><H3 CLASS="H2(1.1)"><A NAME="pgfId=157"> </A>PLI purpose and <A NAME="marker=135"> </A>history</H3><P CLASS="BodyText"><A NAME="pgfId=159"> </A><A HREF="ch17.htm#27886" CLASS="XRef">See </A> through <A HREF="/Humuhumu/Files/Prof_Smith/Academic/ASICs/Web/ASICs/HTML/Verilog/LRM/HTML/17/ch23.htm#19452" CLASS="XRef"></A> and <A HREF="/Humuhumu/Files/Prof_Smith/Academic/ASICs/Web/ASICs/HTML/Verilog/LRM/HTML/17/annG.htm#74208" CLASS="XRef"></A> through <A HREF="/Humuhumu/Files/Prof_Smith/Academic/ASICs/Web/ASICs/HTML/Verilog/LRM/HTML/17/annE.htm#50345" CLASS="XRef"></A> describe the C-language procedural interface standard and interface mechanisms which are part of the Verilog Hardware Description Language. This procedural interface, known as the Programming Language Interface, or PLI, provides a means for Verilog HDL users to dynamically access and modify data in an instantiated Verilog HDL data structure. An instantiated Verilog HDL data structure is the result of compiling Verilog HDL source descriptions and generating the hierarchy modeled by module instances, primitive instances, and other Verilog HDL constructs which represent scope.  The PLI procedural interface provides a library of C language functions which can directly access data within an instantiated Verilog HDL data structure.</P><P CLASS="BodyText"><A NAME="pgfId=211"> </A>A few of the many possible applications for the PLI procedural interface are:</P><UL><LI CLASS="DashedList"><A NAME="pgfId=220"> </A>C language delay calculators for Verilog model libraries that can dynamically scan the data structure of a Verilog simulation or timing analyzer and then dynamically modify the delays of each instance of models from the library</LI><LI CLASS="DashedList"><A NAME="pgfId=225"> </A>C language routines that dynamically read test vectors or other data from a file and pass the data into a Verilog logic simulator or fault simulator </LI><LI CLASS="DashedList"><A NAME="pgfId=226"> </A>Custom graphical waveform and debugging environments for Verilog simulators</LI><LI CLASS="DashedList"><A NAME="pgfId=252"> </A>Source code decompilers that can generate Verilog HDL source code from the compiled data structure of a Verilog software product</LI><LI CLASS="DashedList"><A NAME="pgfId=253"> </A>Simulation models written in the C language and dynamically linked into Verilog HDL simulations</LI><LI CLASS="DashedList"><A NAME="pgfId=254"> </A>Interfaces to actual hardware, such as a hardware modeler, that dynamically interact with simulations</LI></UL><P CLASS="BodyText"><A NAME="pgfId=257"> </A>The IEEE-1364 Verilog PLI is a standardization of a public domain Verilog PLI that has been in use since the mid 1980's. The 1364 standard comprises three primary generations of public domain PLI routines.</P><OL><P CLASS="NumberedLista"><A NAME="pgfId=268"> </A>a)	<A NAME="marker=107"> </A><EM CLASS="Italic">Task/function</EM> routines, called <EM CLASS="ItalicBold">TF</EM> routines, make up the first generation of the PLI. These routines, most of which start with the characters <EM CLASS="ItalicBold">tf_</EM>, are primarily used for operations involving user-defined task/function arguments, along with utility functions such as setting up call-back mechanisms, and writing data to output devices. The TF routines are sometimes referred to as &quot;utility routines&quot;</P><P CLASS="NumberedListb"><A NAME="pgfId=269"> </A>b)	<EM CLASS="Italic">Access</EM><A NAME="marker=117"> </A> routines, called <EM CLASS="ItalicBold">ACC</EM> routines, form the second generation of the PLI. These routines, which all start with the characters <EM CLASS="ItalicBold">acc_</EM>, provide an object oriented access directly into a Verilog HDL structural description. ACC routines are used to access and modify information, such as delay values and logic values on a wide variety of objects that exist in a Verilog HDL description. There is some overlap in functionality between ACC routines and TF routines.</P><P CLASS="NumberedListb"><A NAME="pgfId=270"> </A>c)	<A NAME="marker=118"> </A>Verilog Procedural Interface routines, called <EM CLASS="ItalicBold">VPI</EM> routines, are the third generation of the PLI. These routines, all of which start with the characters <EM CLASS="ItalicBold">vpi_</EM>, provide an object oriented access for both Verilog HDL structural and behavioral objects. The VPI routines are a superset of the functionality of the TF routines and ACC routines.</P></OL><P CLASS="BodyText"><A NAME="pgfId=271"> </A>The first two generations of PLI routines were first developed as part of a proprietary commercial digital logic simulator product, and were released to the public domain in 1990. After release to the public domain, the TF routines and ACC routines became known as the <A NAME="marker=119"> </A>Open Verilog International (<A NAME="marker=120"> </A>OVI) <A NAME="marker=121"> </A>PLI 1.0 standard. The OVI PLI 1.0 standard did not document a number of TF and ACC routines that were widely used in commercial Verilog HDL software products. The IEEE-1364 Verilog PLI standard includes both the public domain OVI PLI 1.0 routines and the de facto standard PLI routines in use in commercial products.</P><P CLASS="BodyText"><A NAME="pgfId=272"> </A>The third generation PLI routines, the VPI routines, were first introduced in 1993 by OVI under the title of <A NAME="marker=122"> </A>PLI 2.0. OVI intended PLI 2.0 to replace PLI 1.0--the VPI routines provide more functionality with simpler syntax and semantics than the TF and ACC routines. However, this approach did not provide adequate backward compatibility with existing PLI applications. Therefore, the IEEE-1364 Verilog PLI standard includes all three generations of the PLI routines.</P></DIV><DIV><H3 CLASS="H2(1.1)"><A NAME="pgfId=137"> </A>User-defined task or function names</H3><P CLASS="BodyText"><A NAME="pgfId=247"> </A>A user-defined task or function name is the name which will be used within a Verilog HDL source file to invoke specific PLI C routines.  The name must adhere to the following rules:</P><UL><LI CLASS="DashedList"><A NAME="pgfId=249"> </A>The first character of the name must be the dollar sign character ( $ )</LI><LI CLASS="DashedList"><A NAME="pgfId=251"> </A>The remaining characters may be letters, digits, the underscore character ( _ ), or the dollar character ( $ )</LI><LI CLASS="DashedList"><A NAME="pgfId=273"> </A>Upper and lower case letters are considered to be unique--the name is case sensitive</LI><LI CLASS="DashedList"><A NAME="pgfId=274"> </A>The name may be any size, and all characters are significant</LI></UL></DIV><DIV><H3 CLASS="H2(1.1)"><A NAME="pgfId=248"> </A><A NAME="marker=55"> </A>Overloading built-in system task and function names</H3><P CLASS="BodyText"><A NAME="pgfId=275"> </A><A HREF="/Humuhumu/Files/Prof_Smith/Academic/ASICs/Web/ASICs/HTML/Verilog/LRM/HTML/17/ch14.htm#21043" CLASS="XRef"></A> of this document defines a number of built-in system tasks and functions which are part of the Verilog language.  In addition, software implementations may include other built-in system tasks and functions specific to the implementation.  These built-in system tasks and functions also begin with the dollar sign character ( $ ).</P><P CLASS="BodyText"><A NAME="pgfId=250"> </A>Using the PLI interface mechanism, it is possible to overload the definition of a built-in system task or function by simply using the same name; for example, a user could write a random number generator as a PLI C routine, and then associate the PLI routine with the name <EM CLASS="Italic">$random</EM>, thereby overriding the built-in <EM CLASS="Italic">$random</EM> function with the PLI C routine.</P></DIV><DIV><H3 CLASS="H2(1.1)"><A NAME="pgfId=201"> </A>User supplied PLI C applications</H3><P CLASS="BodyText"><A NAME="pgfId=189"> </A>User supplied C applications are C language functions that utilize the library of PLI C functions to dynamically access and interact with Verilog HDL software implementations as the Verilog HDL source code is executed.</P><P CLASS="BodyText"><A NAME="pgfId=246"> </A>These PLI C applications are not independent C programs.  They are C functions, which are linked into a software implementation, and become part of the implementation.  This allows the PLI C application to be called when the user-defined system task or function $ name is compiled or executed in the Verilog HDL source code.</P><P CLASS="BodyText"><A NAME="pgfId=145"> </A>The PLI interface mechanism provides a means to have PLI C applications called for various  reasons when the associated system task or function $ name is encountered in the Verilog HDL source description.  For example, when a Verilog HDL simulator first compiles the Verilog HDL source description, a specific PLI C application may be called that performs syntax checking to ensure the user-defined system task or function is being used correctly.  Then, as simulation is executing, a different PLI C application may be called to perform the operations required by the PLI application.  Other PLI C application can be automatically called by the simulator for miscellaneous reasons, such as the end of a simulation time step or a logic value change on a specific signal.</P><P CLASS="BodyText"><A NAME="pgfId=186"> </A>The PLI interface mechanism for TF and ACC routines provides five classes of user supplied PLI C applications, <EM CLASS="ItalicBold">checktf</EM> routines, <EM CLASS="ItalicBold">sizetf</EM> routines, <EM CLASS="ItalicBold">calltf</EM> routines, <EM CLASS="ItalicBold">misctf</EM> routines and <EM CLASS="ItalicBold">consumer</EM> routines.  The purpose of each of the PLI routine classes is explained in the following sections.</P><DIV><H4 CLASS="H3(1.1.1)"><A NAME="pgfId=281"> </A>The <A NAME="marker=60"> </A><EM CLASS="Italic">calltf</EM> class of PLI C routines</H4><P CLASS="BodyText"><A NAME="pgfId=285"> </A>A <EM CLASS="ItalicBold">calltf</EM> PLI routine is called each time the associated user defined system task or function is executed within the Verilog HDL source code.  For example, the following Verilog loop would call the PLI <EM CLASS="ItalicBold">calltf</EM> routine that is associated with the <EM CLASS="Italic">$get_vector</EM> user-defined system task name 1024 times:</P><PRE CLASS="CodeIndent"><A NAME="pgfId=286"> </A>for (i = 1; i &lt;= 1024; i = i + 1) </PRE><PRE CLASS="CodeIndent"><A NAME="pgfId=287"> </A>   @(posedge clk) $get_vector(&quot;test_vector.pat&quot;, input_bus); </PRE><P CLASS="BodyText"><A NAME="pgfId=280"> </A>In this example, the user supplied PLI <EM CLASS="ItalicBold">calltf</EM>  C routine might read a test vector from a file called <EM CLASS="Italic">test_vector.pat</EM> (the first task/function argument), perhaps manipulate the vector to put in a proper format for Verilog, and then assign the vector value to the second task/function argument called <EM CLASS="Italic">input_bus</EM>.</P></DIV><DIV><H4 CLASS="H3(1.1.1)"><A NAME="pgfId=277"> </A>The <A NAME="marker=59"> </A>c<EM CLASS="Italic">hecktf</EM> class of PLI C routines</H4><P CLASS="BodyText"><A NAME="pgfId=284"> </A>A <EM CLASS="ItalicBold">checktf</EM> PLI routine will be called when the user-defined system task or function name is encountered during parsing or compiling the Verilog HDL source code. This routine is typically used to check the correctness of any arguments used with the system task in the Verilog HDL source code.  The <EM CLASS="ItalicBold">checktf</EM> PLI routine is called one time for each system task or function reference in the source description.  Providing a <EM CLASS="ItalicBold">checktf</EM> routine is optional, but  it is recommended that any arguments used with the system task or function be checked for correctness to avoid problems when the <EM CLASS="Italic">calltf</EM> or other PLI routines read and perform operations on the arguments. </P></DIV><DIV><H4 CLASS="H3(1.1.1)"><A NAME="pgfId=278"> </A>The <A NAME="marker=61"> </A><EM CLASS="Italic">sizetf</EM> class of PLI routines</H4><P CLASS="BodyText"><A NAME="pgfId=276"> </A>A <EM CLASS="ItalicBold">sizetf</EM> PLI routine is used in conjunction with user-defined system <EM CLASS="Italic">functions</EM>.  A function will return a value, and the software implementations that execute the system function may need to determine how many bits wide that return will be.  The user supplied PLI <EM CLASS="ItalicBold">sizetf</EM> routine is called one time by the software implementation, typically when the Verilog HDL source code is compiled; when called, the <EM CLASS="ItalicBold">sizetf</EM> routine must return the number of bits of the system function return value. The <EM CLASS="ItalicBold">sizetf</EM> routine is not called for PLI system tasks.</P></DIV><DIV><H4 CLASS="H3(1.1.1)"><A NAME="pgfId=279"> </A>The <A NAME="marker=62"> </A><EM CLASS="Italic">misctf</EM> class of PLI routines</H4><P CLASS="BodyText"><A NAME="pgfId=282"> </A>A <EM CLASS="ItalicBold">

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区在线播放| 日韩国产精品大片| 欧美狂野另类xxxxoooo| 狠狠色狠狠色综合| 亚洲人午夜精品天堂一二香蕉| 欧美日韩高清一区二区不卡| 国产成人午夜精品影院观看视频| 天天综合网天天综合色| 国产精品美女久久久久久久| 欧美成人官网二区| 欧美日韩国产在线观看| 91啪亚洲精品| 国产成人综合自拍| 久久精品国产秦先生| 亚洲国产精品久久艾草纯爱| 最新日韩在线视频| 久久蜜桃av一区精品变态类天堂| 欧美精品在线观看播放| 日本高清不卡一区| 99久久久久免费精品国产| 国产精品自拍av| 麻豆国产精品777777在线| 亚洲激情欧美激情| 亚洲国产精品传媒在线观看| 久久久久国产精品麻豆ai换脸 | 欧美久久一区二区| 欧美在线免费观看亚洲| 91视频xxxx| 成人网在线免费视频| 国产在线国偷精品产拍免费yy| 日韩中文字幕亚洲一区二区va在线| 伊人一区二区三区| 一区二区三区四区亚洲| 国产精品传媒入口麻豆| 国产精品理论在线观看| 国产欧美视频一区二区| 国产女人水真多18毛片18精品视频| 久久蜜桃av一区二区天堂| 精品国产三级a在线观看| 日韩欧美一区二区三区在线| 欧美一级艳片视频免费观看| 欧美一级日韩免费不卡| 91精品国产综合久久婷婷香蕉| 欧美性色欧美a在线播放| 欧美三级日本三级少妇99| 欧美怡红院视频| 欧美日韩国产综合一区二区| 欧美日韩国产综合视频在线观看| 欧美日产在线观看| 欧美一区二区三区日韩| 欧美成人精品福利| 久久久蜜桃精品| 国产精品乱人伦| 亚洲激情校园春色| 日韩av网站免费在线| 激情av综合网| 成人av免费在线观看| 一本大道av伊人久久综合| 色吊一区二区三区| 91精品国产乱码| 欧美精品一区二区三| 国产精品午夜在线观看| 一区二区久久久久| 日韩国产高清在线| 国产精品自在在线| 色婷婷综合久久久中文字幕| 欧美日韩视频在线第一区| 精品久久国产97色综合| 欧美极品美女视频| 亚洲一二三区在线观看| 精品一区二区三区在线观看| 国产99久久久国产精品| 欧美网站大全在线观看| 亚洲精品一区二区三区蜜桃下载| 国产精品国产自产拍在线| 亚洲国产精品欧美一二99 | 91网页版在线| 91精品国产综合久久久久久久久久 | 久久久久久久一区| 亚洲视频香蕉人妖| 久久国产欧美日韩精品| 成人网在线免费视频| 精品污污网站免费看| 国产欧美综合在线观看第十页 | 亚洲男人的天堂网| 蜜臀国产一区二区三区在线播放| 粉嫩一区二区三区性色av| 欧美日韩一区中文字幕| 国产精品视频一二三| 午夜久久电影网| 国产 日韩 欧美大片| 欧美日韩美女一区二区| 亚洲国产精品成人综合色在线婷婷| 亚洲高清中文字幕| 国产成人激情av| 欧美日本一道本在线视频| 亚洲国产激情av| 蜜臀久久久99精品久久久久久| 99视频国产精品| 精品国产免费久久| 亚洲小说春色综合另类电影| 国产成人av福利| 欧美精品久久久久久久多人混战 | 久久久久久久精| 日本中文字幕不卡| 色综合av在线| 中文字幕在线不卡| 国产制服丝袜一区| 日韩一卡二卡三卡国产欧美| 一区二区久久久久| 99精品欧美一区| 国产日韩欧美亚洲| 久久国产精品区| 制服丝袜亚洲精品中文字幕| 一区二区三区免费看视频| 成人丝袜18视频在线观看| 精品国产免费视频| 麻豆极品一区二区三区| 欧美日韩高清不卡| 亚洲电影你懂得| 欧美私模裸体表演在线观看| 亚洲精品欧美在线| 97国产一区二区| 中文字幕不卡在线观看| 国产成a人亚洲精品| 国产网站一区二区三区| 国产原创一区二区| 精品少妇一区二区三区| 日本成人中文字幕| 欧美久久免费观看| 爽好多水快深点欧美视频| 在线国产亚洲欧美| 亚洲综合一区二区精品导航| 色综合久久中文综合久久97| 国产精品久久国产精麻豆99网站| 国产精品88av| 欧美国产精品中文字幕| 国产福利一区二区三区视频| 国产欧美一区二区精品性色| 国产精品香蕉一区二区三区| 久久久99久久| 成人免费视频一区| 亚洲欧洲国产日本综合| 91蜜桃免费观看视频| 一区二区三区精密机械公司| 日本韩国欧美在线| 亚洲午夜羞羞片| 7777精品伊人久久久大香线蕉超级流畅| 亚洲成人精品在线观看| 91精品婷婷国产综合久久竹菊| 婷婷综合五月天| 亚洲色图丝袜美腿| 色国产精品一区在线观看| 亚洲图片欧美视频| 777久久久精品| 免费成人你懂的| 久久久久国色av免费看影院| 成人性视频免费网站| 一二三四区精品视频| 欧美一区二区大片| 国产精品自拍毛片| 亚洲日本在线a| 欧美肥妇毛茸茸| 国产一区二区三区在线观看免费| 国产精品久久久久久久久久久免费看 | 国产在线视视频有精品| 国产精品麻豆久久久| 欧美亚洲丝袜传媒另类| 久久超碰97中文字幕| 国产精品视频在线看| 91视频免费看| 免费欧美日韩国产三级电影| 久久久国产精品午夜一区ai换脸| 色婷婷狠狠综合| 激情综合五月婷婷| 日韩一区在线免费观看| 日韩一级片在线播放| 成人黄色软件下载| 午夜精品一区二区三区电影天堂 | 亚洲第一久久影院| 欧美顶级少妇做爰| 国产精品久久久久7777按摩| 欧美日韩高清在线播放| 亚洲欧美福利一区二区| 欧美午夜在线一二页| 欧美a级理论片| 亚洲丝袜精品丝袜在线| 欧美日韩日日摸| 蜜桃久久久久久| 亚洲欧洲三级电影| 69堂国产成人免费视频| 国产真实乱偷精品视频免| 亚洲mv在线观看| 久久久亚洲午夜电影| 欧洲视频一区二区| 国产精品亚洲人在线观看| 亚洲午夜一区二区| 国产色产综合色产在线视频| 欧美精品高清视频| 成人精品国产免费网站|