?? ch14.5.htm
字號(hào):
<!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="ch14.css"><TITLE> 14.5 Timing check system tasks</TITLE></HEAD><BODY BGCOLOR="#ffffff"><DIV><HR><P><A HREF="ch14.htm">Chapter start</A> <A HREF="ch14.4.htm">Previous page</A> <A HREF="ch14.6.htm">Next page</A></P></DIV><H1 CLASS="Section"><A NAME="pgfId=1062"> </A>14.5 <A NAME="marker=272"> </A>Timing c<A NAME="Timing Checks"> </A>heck system tasks</H1><P CLASS="Body"><A NAME="pgfId=1064"> </A>The timing check tasks may be invoked in specify blocks to verify the timing performance of a design by making sure critical events occur within given time limits. </P><P CLASS="Body"><A NAME="pgfId=1065"> </A>Timing checks perform the following steps:</P><OL><P CLASS="NumberedLista"><A NAME="pgfId=1066"> </A>a) Determine the elapsed time between two events.</P><P CLASS="NumberedListb"><A NAME="pgfId=1067"> </A>b) Compare the elapsed time to a specified limit. </P><P CLASS="NumberedListb"><A NAME="pgfId=1068"> </A>c) If the elapsed time does not fall within the specified time window, report a timing violation. </P></OL><P CLASS="Body"><A NAME="pgfId=1069"> </A>The following system tasks may be used for performing <A NAME="marker=274"> </A><A NAME="marker=275"> </A><A NAME="marker=276"> </A><A NAME="marker=277"> </A><A NAME="marker=278"> </A><A NAME="marker=279"> </A><A NAME="marker=280"> </A><A NAME="marker=281"> </A><A NAME="marker=282"> </A>timing checks:</P><P CLASS="Body"><A NAME="pgfId=838"> </A><B CLASS="Keyword"> $setup</B> <B CLASS="Keyword">$hold</B> <B CLASS="Keyword"> $setuphold</B> <B CLASS="Keyword">$period<BR> $skew</B> <B CLASS="Keyword">$recovery</B> <B CLASS="Keyword"> $width</B> <B CLASS="Keyword">$nochange </B></P><P CLASS="Body"><A NAME="pgfId=1071"> </A></P><P CLASS="Body"><A NAME="pgfId=1240"> </A><A HREF="ch14.5.htm#44194" CLASS="XRef">See : Timing check arguments</A> describes the arguments to these system tasks, which are explained with individual system task as well. </P><TABLE BORDER="1"><CAPTION><P CLASS="TableTitle"><A NAME="pgfId=1184"> </A>Table 14-10<A NAME="44194"> </A><A NAME="marker=286"> </A><A NAME="marker=287"> </A><A NAME="marker=288"> </A><A NAME="marker=289"> </A><A NAME="marker=290"> </A><A NAME="marker=291"> </A><A NAME="marker=292"> </A><A NAME="marker=293"> </A><A NAME="marker=294"> </A>: <A NAME="marker=295"> </A>Timing check <A NAME="marker=296"> </A>arguments</P></CAPTION><TR><TH ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=1190"> </A>Argument</P></TH><TH ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=1191"> </A>Description</P></TH><TH ROWSPAN="1" COLSPAN="1"><P CLASS="CellHeading"><A NAME="pgfId=1205"> </A>Type</P></TH></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1346"> </A>reference_event</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1376"> </A>the transition at a control signal that establishes the reference time for tracking timing violations on the data_event</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1377"> </A>module input or inout that is scalar or vector net</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1378"> </A>data_event</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1379"> </A>the signal change that initiates the timing check and is monitored for violations </P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1073"> </A>module input or inout that is scalar or vector net</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1381"> </A>limit</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1382"> </A>a time limit used to detect timing violations on the data_event</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1383"> </A>constant expression or specparam</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1384"> </A>threshold</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1385"> </A>the largest pulse width that is ignored by the timing check $width</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1206"> </A>constant expression or specparam</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1387"> </A>setup_limit</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1389"> </A>a time limit used to detect timing violations on the data_event for $setup</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1207"> </A>constant expression or specparam</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1390"> </A>hold_limit</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1388"> </A>a time limit used to detect timing violations on the data_event for $hold</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1300"> </A>constant expression or specparam</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1393"> </A>notifier (optional)</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1394"> </A>an optional argument that "notifies" the simulator when a timing violation occurs</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1395"> </A>register</P></TD></TR></TABLE><P CLASS="SubSection"><A NAME="pgfId=1074"> </A><A NAME="$setup"> </A><A NAME="marker=298"> </A><A NAME="marker=299"> </A><A NAME="marker=300"> </A>$setup</P><DIV><H2 CLASS="Syntax"><A NAME="pgfId=1076"> </A></H2><PRE CLASS="BNFDef"><A NAME="pgfId=1078"> </A> <B CLASS="Keyword">$setup</B> <B CLASS="Keyword">(</B> data_event <B CLASS="Keyword">,</B> reference_event <B CLASS="Keyword">,</B> limit [ <B CLASS="Keyword">,</B> notifier ] <B CLASS="Keyword">)</B> <B CLASS="Keyword">;</B> </PRE><P CLASS="Body"><A NAME="pgfId=691"> </A><EM CLASS="DocSetOnly"><A HREF="ch14.5.htm#24399" CLASS="XRef">See : $hold arguments</A></EM> defines the <B CLASS="Keyword">$setup</B> system task arguments.</P><TABLE BORDER="1"><CAPTION><P CLASS="TableTitle"><A NAME="pgfId=1023"> </A>Table 14-11: <A NAME="24399"> </A>$setup arguments</P></CAPTION><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1043"> </A><CODE CLASS="code">data_event</CODE></P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1375"> </A>lower bound event</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1046"> </A><CODE CLASS="code">reference_event</CODE></P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1045"> </A>upper bound event</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1048"> </A><CODE CLASS="code">limit</CODE></P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1047"> </A>positive constant expression or specparam</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1063"> </A>notifier (optional)</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1367"> </A>register</P></TD></TR></TABLE><P CLASS="Body"><A NAME="pgfId=1083"> </A>The <B CLASS="Keyword">$setup</B> timing check reports a timing violation in the following case: </P><P CLASS="Body"><A NAME="pgfId=1084"> </A> (time of reference event) - (time of data event) < limit</P><P CLASS="Body"><A NAME="pgfId=1085"> </A>If the reference event and data event occur at the same simulation time, <B CLASS="Keyword">$setup</B> performs the timing check before it records the new data event value, therefore no violation occurs.</P><P CLASS="SubSection"><A NAME="pgfId=1086"> </A><A NAME="marker=306"> </A><A NAME="marker=307"> </A><A NAME="marker=308"> </A>$hold</P></DIV><DIV><H2 CLASS="Syntax"><A NAME="pgfId=692"> </A></H2><PRE CLASS="BNFDef"><A NAME="pgfId=694"> </A> <B CLASS="Keyword">$hold</B> <B CLASS="Keyword">(</B> reference_event <B CLASS="Keyword">,</B> data_event <B CLASS="Keyword">,</B> limit [ <B CLASS="Keyword">,</B> notifier ] <B CLASS="Keyword">)</B> <B CLASS="Keyword">;</B></PRE><P CLASS="Body"><A NAME="pgfId=1089"> </A><EM CLASS="DocSetOnly"><A HREF="ch14.5.htm#24399" CLASS="XRef">See : $hold arguments</A> <A HREF="ch14.5.htm#71772" CLASS="XRef">See $hold system task reports a violation in the following case:</A></EM>defines the <B CLASS="Keyword">$hold</B><B CLASS="boldemphasis"> </B>system task arguments.</P><TABLE BORDER="1"><CAPTION><P CLASS="TableTitle"><A NAME="pgfId=695"> </A>Table 14-12: <A NAME="24399"> </A>$hold arguments</P></CAPTION><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=697"> </A><CODE CLASS="code">reference_event</CODE></P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=698"> </A>lower bound event</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=699"> </A><CODE CLASS="code">data_event</CODE></P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=700"> </A>upper bound event</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=701"> </A><CODE CLASS="code">limit</CODE></P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=711"> </A>positive constant expression or specparam</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=712"> </A>notifier (optional)</P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=1088"> </A>register</P></TD></TR></TABLE><P CLASS="Body"><A NAME="pgfId=713"> </A><B CLASS="Keyword">$hold</B><A NAME="71772"> </A> system task reports a violation in the following case:</P><PRE CLASS="BNFDef"><A NAME="pgfId=714"> </A> (time of data event) - (time of reference event) < limit</PRE><P CLASS="Body"><A NAME="pgfId=1094"> </A><B CLASS="Keyword">$hold</B> always records the new reference event time before it performs the timing check. Therefore, if reference and data events occur at the same simulation time, there will be a violation.</P><P CLASS="SubSection"><A NAME="pgfId=704"> </A><A NAME="marker=115"> </A><A NAME="marker=116"> </A><A NAME="marker=118"> </A>$setuphold</P></DIV><DIV><H2 CLASS="Syntax"><A NAME="pgfId=746"> </A></H2><PRE CLASS="BNFDef"><A NAME="pgfId=747"> </A> <B CLASS="Keyword">$setuphold</B> <B CLASS="Keyword">(</B> reference_event <B CLASS="Keyword">,</B> data_event <B CLASS="Keyword">,</B> setup_limit <B CLASS="Keyword">,</B> hold_limit <B CLASS="Keyword">,</B> [ notifier ] <B CLASS="Keyword">) ;</B></PRE><P CLASS="Body"><A NAME="pgfId=1149"> </A><A HREF="ch14.5.htm#24399" CLASS="XRef">See : $hold arguments</A> defines the <B CLASS="Keyword">$setuphold</B> system task arguments.</P><TABLE BORDER="1"><CAPTION><P CLASS="TableTitle"><A NAME="pgfId=749"> </A>Table 14-13: <A NAME="24399"> </A>$setuphold arguments</P></CAPTION><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=751"> </A><CODE CLASS="code">reference_event</CODE></P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=752"> </A>$hold lower bound event<BR>$setup upper bound event</P></TD></TR><TR><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=753"> </A><CODE CLASS="code">data_event</CODE></P></TD><TD ROWSPAN="1" COLSPAN="1"><P CLASS="CellBody"><A NAME="pgfId=754">
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -