⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00868.html

📁 这是一本关于verilog编程语言的教程,对学习verilog语言有帮助
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<div class="Element203">
<a href="00186.html" target="topic">17.8 处理一个序列中的数据</a>&nbsp;</div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
使用一个SystemVerilog静态变量意味着仅存在它的一份拷贝。如果需要在流水线设计中检查数据值,那么对于每一个进入流水线的数据量值,我们可以使用一个单独的变量来存储预期的流水线输出,以便在真正退出管线的时候比较结果。这个存储空间可以通过使用一个变量数组来构建,并且为了最小化通过流水线的传播这个数组可以安排在一个移位寄存器中。然而,在一些更为复杂的情况下,例如管线的潜伏期是可变的并且是乱序的,那么这种结构可能就变得非常复杂并且容易出错。因此,我们需要一些局部变量,这些变量在一个特定的、能够跨越任意时间间隔的事务检查中使用,并且能够与其它事务检查重叠。所以,这样的一个变量必须能够在需要的时候在一个序列实例中动态地产生并能在序列结束的时候移除。<br><br>一个变量的动态产生极其赋值是通过在一个序列或特性声明中使用局部变量声明并在序列中赋值来实现的。 &nbsp;</div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00187.html" target="topic">17.9 在一个序列匹配时调用子程序</a>&nbsp;</div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
任务、任务方法、<span style="color: #0000FF">void</span>函数、<span style="color: #0000FF">void</span>函数方法以及系统任务可以在一个序列成功匹配的结束处调用。子程序调用,例如局部变量赋值,出现在紧跟着序列的以逗号分割的列表中。子程序调用被称为附加到序列。序列以及之后的列表以括号包围。 &nbsp;</div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00144.html" target="topic">17.10 系统函数</a>&nbsp;</div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
断言一般被用来计算一个设计实现的某些特定属性,例如一个特定的信号是否为“热点(one-hot)”。SystemVerilog中包含下列系统函数来促进这些基本的断言功能:</p>
<ul class="Element630">
<li class="Element600"><i><span class="Element146"><span style="color: #0000FF">$onehot</span><span style="color: #800080">(</span>&lt;expression&gt;<span style="color: #800080">)</span></span></i> :如果表达式中只有一位为高,那么返回“真”。</li>
<li class="Element600"><i><span class="Element146"><span style="color: #0000FF">$onehot0</span><span style="color: #800080">(</span>&lt;expression&gt;<span style="color: #800080">)</span></span></i> :如果表达式中至少有一位为高,那么返回“真”。</li>
<li class="Element600"><i><span class="Element146"><span style="color: #0000FF">$isunknown</span><span style="color: #800080">(</span>&lt;expression&gt;<span style="color: #800080">)</span></span></i> :如果表达式任何一位为<span style="color: #FF0000">X</span>或<span style="color: #FF0000">Z</span>,那么返回“真”,等价于:<i><span class="Element146"><span style="color: #800080">^</span>&lt;expression&gt; <span style="color: #800080">===</span> <span style="color: #800080">'</span><span style="color: #0000FF">b</span><span style="color: #FF0000">x</span></span></i>。</li>
</ul><p class="Element207">
所有上述的系统函数都具有一个<span style="color: #0000FF">bit</span>类型的返回值。<span style="color: #FF0000">1</span><span style="color: #800080">'</span><span style="color: #0000FF">b</span><span style="color: #FF0000">1</span>的返回值指示“真”,<span style="color: #FF0000">1</span><span style="color: #800080">'</span><span style="color: #0000FF">b</span><span style="color: #FF0000">0</span>的返回值指示“假”。<br><br>为布尔表达式提供的另外一个有用的函数是<span style="color: #0000FF">$countones</span>,它可以计算一个位向量表达式中<span style="color: #FF0000">1</span>的数目。 &nbsp;</div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00145.html" target="topic">17.11 声明特性</a>&nbsp;</div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
一个特性定义了设计的一个行为。一个特性可以作为一个假设、一个检查器或者一个覆盖率规范被用于验证。为了将这种行为用于验证,必须使用一个断言、假设或者覆盖语句。一个特性声明本身不会产生任何结果。<br><br>一个特性可以在下列结构中声明:</p>
<ul class="Element630">
<li class="Element600">一个模块</li>
<li class="Element600">一个接口</li>
<li class="Element600">一个程序</li>
<li class="Element600">一个时钟控制块</li>
<li class="Element600">一个包</li>
<li class="Element600">一个编译单元作用域</li>
</ul><p class="Element207">
为了声明一个特性,我们可以使用如下所示的<strong><span style="color: #0000FF">property</span></strong>结构: &nbsp;</div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00151.html" target="topic">17.12 多时钟的支持</a>&nbsp;</div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
多时钟序列和特性可以使用下列的语法说明。&nbsp;</div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00157.html" target="topic">17.13 并发断言</a>&nbsp;</div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
A property on its own is never evaluated for checking an expression. It must be used within a verification statement for this to occur. A verification statement states the verification function to be performed on the property. The statement can be one of the following:</p>
<ul class="Element630">
<li class="Element600">assert to specify the property as a checker to ensure that the property holds for the design</li>
<li class="Element600">assume to specify the property as an assumption for the environment</li>
<li class="Element600">cover to monitor the property evaluation for coverage</li>
</ul><p class="Element207">
A concurrent assertion statement can be specified in:</p>
<ul class="Element630">
<li class="Element600">an always block or initial block as a statement, wherever these... <a href="00157.html" target="topic">more</a>&nbsp;</div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00163.html" target="topic">17.14 时钟解析</a>&nbsp;</div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
SystemVerilog具有多种方法为一个特性指定时钟。<br><br>— 具有一个时钟的序列实例,例如: &nbsp;</div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00165.html" target="topic">17.15 将特性绑定到作用域或实例</a>&nbsp;</div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
To facilitate verification separate from the design, it is possible to specify properties and bind them to specific modules or instances. The following are the goals of providing this feature:
<ul class="Element631">
<li class="Element601">It allows verification engineers to verify with minimum changes to the design code/files.</li>
<li class="Element601">It allows a convenient mechanism to attach verification IP to a module or an instance.</li>
<li class="Element601">No semantic changes to the assertions are introduced due to this feature. It is equivalent to writing properties external to a module, using hierarchical path names.</li>
</ul>With this feature, a user can bind a module, interface, or program instance to a module... <a href="00165.html" target="topic">more</a>&nbsp;</div></td></tr><tr>
<td class="Element202" valign="top" width="50%">
<div class="Element203">
<a href="00166.html" target="topic">17.16 expect语句</a>&nbsp;</div></td><td class="Element206" valign="top" width="50%">
<div class="Element207">
The expect statement is a procedural blocking statement that allows waiting on a property evaluation. The syntax of the expect statement accepts a named property or a property declaration, and is given below. &nbsp;</div></td></tr></table></div></div>
</div>
</div>
</div>
<a name="Links"></a><div class="Element14">
<a onclick="toggleVisibilityStored('链接');" class="a_Element14"><img src="sectionminus.png" border="0" alt="" title="" id="img链接">链接</a></div>
<div id="div链接">
<div class="Element11">
<div class="Element10">
<a href="00946.html" target="topic">主题</a></div>
</div>
</div>
</div>
<!-- End Page Content -->

<!-- Begin Page Footer -->
<hr width="98%" align="center" size="1" color="#CCCCCC" />
<table align="center" cellpadding="0" cellspacing="0" border="0">
	<tbody>
		<tr height="10">
			<td></td>
		</tr>
		<tr align="center">
			<td>
<script type="text/javascript"><!--
google_ad_client = "pub-5266859600380184";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_page_url = document.location;
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
			</td>
		</tr>
		<tr height="15">
			<td></td>
		</tr>
		<tr align="center">
			<td>
				<font size=2>除非特别声明,原文版权归作者所有,如有转摘请注明原作者以及译者(<a href="http://www.fpgatech.net/"  target="_blank">FPGA技术网</a>)信息。<br />
如果您对本主题有何建议或意见,请登陆<a href="http://www.fpgatech.net/forum/forumdisplay.php?fid=18" target="_blank">FPGA开发者家园</a>提交,您的参与是我们前进的动力。</font>
<script language="javascript" type="text/javascript" src="http://js.users.51.la/195685.js"></script>
<noscript><a href="http://www.51.la/?195685" target="_blank"><img alt="&#x6211;&#x8981;&#x5566;&#x514D;&#x8D39;&#x7EDF;&#x8BA1;" src="http://img.users.51.la/195685.asp" style="border:none" /></a></noscript>
			</td>
		</tr>
	</tbody>
</table>

<!-- End Page Footer -->
</div>
</div>

<!-- End Client Area -->
</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -