?? ch17.htm
字號:
<TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=309"> </A>for a the end of a time step flagged by <EM CLASS="Italic">tf_synchronize()</EM> </P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=310"> </A><EM CLASS="Italic">reason_synch</EM><A NAME="marker=75"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=216"> </A>for a the end of a time step flagged by <EM CLASS="Italic">tf_rosynchronize()</EM> </P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=217"> </A><EM CLASS="Italic">reason_rosynch</EM><A NAME="marker=76"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=307"> </A>for a simulation event scheduled by <EM CLASS="Italic">tf_setdelay()</EM> </P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=308"> </A><EM CLASS="Italic">reason_reactiviate</EM><A NAME="marker=77"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=256"> </A>for the execution of a procedural force or procedural continuous assignment on any net, register or variable</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=288"> </A><EM CLASS="Italic">reason_force</EM><A NAME="marker=78"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=241"> </A>for the execution of a procedural release or procedural deassign on any net, register or variable</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=244"> </A><EM CLASS="Italic">reason_release</EM><A NAME="marker=79"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=242"> </A>for the execution of a procedural disable statement</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=213"> </A><EM CLASS="Italic">reason_disable</EM><A NAME="marker=80"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=150"> </A>for the execution of the <EM CLASS="Italic">$stop()</EM> built-in system task</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=179"> </A><EM CLASS="Italic">reason_interactive</EM><A NAME="marker=81"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=227"> </A>for the execution of the <EM CLASS="Italic">$scope()</EM> built-in system task</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=228"> </A><EM CLASS="Italic">reason_scope</EM><A NAME="marker=82"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=170"> </A>for the start of execution of the <EM CLASS="Italic">$save()</EM> built-in system task</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=232"> </A><EM CLASS="Italic">reason_startofsave</EM><A NAME="marker=84"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=229"> </A>for the completion of execution of the <EM CLASS="Italic">$save()</EM> built-in system task</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=230"> </A><EM CLASS="Italic">reason_save</EM><A NAME="marker=83"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=233"> </A>for the execution of the <EM CLASS="Italic">$restart()</EM> built-in system task</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=234"> </A><EM CLASS="Italic">reason_restart</EM><A NAME="marker=85"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=231"> </A>for the start of execution of the <EM CLASS="Italic">$reset()</EM> built-in system task</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=238"> </A><EM CLASS="Italic">reason_reset</EM><A NAME="marker=86"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=215"> </A>for the completion of execution of the <EM CLASS="Italic">$reset()</EM> built-in system task</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=237"> </A><EM CLASS="Italic">reason_endofreset</EM><A NAME="marker=87"> </A> </P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBodyIndent"><A NAME="pgfId=212"> </A>for the <EM CLASS="Italic">$finish()</EM> built-in system task executed</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=214"> </A><EM CLASS="Italic">reason_finish</EM><A NAME="marker=88"> </A><EM CLASS="TableCode"> </EM></P></TD></TR></TABLE><P CLASS="BodyText"><A NAME="pgfId=162"> </A></P><P CLASS="BodyText"><A NAME="pgfId=236"> </A></P></DIV></DIV><DIV><H3 CLASS="H2(1.1)"><A NAME="pgfId=149"> </A>User-defined <A NAME="marker=89"> </A>system <A NAME="marker=90"> </A>task and function <A NAME="marker=91"> </A>arguments</H3><P CLASS="BodyText"><A NAME="pgfId=151"> </A>When a user-defined system task or function is used in a Verilog HDL source file, it may have arguments that will be used by the PLI C routines associated with the system task or function. In the following example, the user-defined system task <EM CLASS="Italic">$get_vector</EM> has two arguments:</P><PRE CLASS="CodeIndent"><A NAME="pgfId=153"> </A>$get_vector("test_vector.pat", input_bus); </PRE><P CLASS="BodyText"><A NAME="pgfId=158"> </A>The arguments to a system task or function are referred to as <EM CLASS="ItalicBold">task/function arguments</EM> (often abbreviated as <A NAME="marker=92"> </A><EM CLASS="ItalicBold">tfargs</EM>) by ACC routines, and as <EM CLASS="ItalicBold">task/function parameters</EM> by TF routines. <EM CLASS="Italic">These arguments are not the same as C language arguments</EM>. When the PLI C routines associated with a user-defined system task or function are called, the task/function arguments are <EM CLASS="ItalicBold">not</EM> passed to the PLI routine. Instead, a number of PLI functions are provided that allow the PLI routines to read and write to the task/function arguments. Refer to the sections on ACC routines and TF routines for information on specific routines that work with task/function arguments.</P><P CLASS="BodyText"><A NAME="pgfId=164"> </A>Note that when PLI routines are called, they are passed two or three C arguments, <EM CLASS="Italic">data</EM> and <EM CLASS="Italic">reason</EM>, and <EM CLASS="Italic">paramvc</EM>. These arguments are not the same as the task/function arguments that appear in the Verilog HDL source code.</P></DIV><DIV><H3 CLASS="H2(1.1)"><A NAME="pgfId=295"> </A>PLI include files</H3><P CLASS="BodyText"><A NAME="pgfId=172"> </A>C applications which use the PLI task/function routines should always include the file <B CLASS="Keyword">veriuser.h</B>. C applications which use the PLI ACC routines should always include the file <B CLASS="Keyword">acc_user.h</B>. These files define constants, structures and other data used by the library of PLI functions and the interface mechanism. The files are listed in the Annex of this document.</P><P CLASS="BodyText"><A NAME="pgfId=169"> </A></P></DIV></DIV><HR><P><A HREF="none">Chapter start</A> <A HREF="none">Next page</A></P></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -