📄 00287.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<title>23.7 数组查询系统函数</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<meta name="generator" content="Doc-O-Matic" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link rel="STYLESHEET" href="default.css" type="text/css" />
<script type="text/javascript" src="scripts.js"></script>
</head>
<body class="Element700" onload="onBodyLoadEx('systemverilog31a.html', 'topic', '00287.html');" onmousedown="onBodyMouseDown();">
<!-- Begin Popups -->
<div class="Element801" id="popup00454">
<div class="Element800">
<div class="Element14">
链接</div>
<div class="Element11">
<div class="Element10">
<a href="00852.html" target="topic">第二十三章 系统任务与系统函数</a></div>
</div>
</div>
</div>
<!-- End Popups -->
<!-- Begin Page Header -->
<div class="Element710" id="areafixed">
<div class="Element92">
<table width="100%" cellspacing="0" cellpadding="0">
<tr><td width="33%">
<div class="Element1">
<a href="#" onmousedown="showPopup(this, 'popup00454');"><img src="seealsolink.png" border="0" alt="" title=""></a> SystemVerilog 3.1a语言参考手册</div>
</td><td width="34%">
<div class="Element2">
</div>
</td><td width="33%">
<div class="Element90">
<a href="00286.html" target="topic"><img src="btn_prev_lightblue.gif" border="0" alt="Previous" title="Previous" onmouseover="switchImage(this, 'btn_prev_lightblue_hover.gif');" onmouseout="switchImage(this, 'btn_prev_lightblue.gif');"></a><a href="00852.html" target="topic"><img src="btn_up_lightblue.gif" border="0" alt="Up" title="Up" onmouseover="switchImage(this, 'btn_up_lightblue_hover.gif');" onmouseout="switchImage(this, 'btn_up_lightblue.gif');"></a><a href="00288.html" target="topic"><img src="btn_next_lightblue.gif" border="0" alt="Next" title="Next" onmouseover="switchImage(this, 'btn_next_lightblue_hover.gif');" onmouseout="switchImage(this, 'btn_next_lightblue.gif');"></a></div>
</td></tr></table><div class="Element5">
23.7 数组查询系统函数</div>
</div>
</div>
<!-- End Page Header -->
<!-- Begin Client Area -->
<div class="Element720" id="areascroll">
<div class="Element721">
<!-- Begin Page Content -->
<div class="Element58">
<a name="描述"></a><div class="Element11">
<div class="Element10">
<div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00938');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00938"><pre class="Element12">array_query_function ::= // not in Annex A
array_dimension_function<strong><span style="color: #FF0000">(</span></strong>array_identifier<strong><span style="color: #FF0000">,</span></strong> dimension_expression<strong><span style="color: #FF0000">)</span></strong>
| array_dimension_function<strong><span style="color: #FF0000">(</span></strong>type_identifier[<strong><span style="color: #FF0000">,</span></strong> dimension_expression]<strong><span style="color: #FF0000">)</span></strong>
| <strong><span style="color: #FF0000">$dimensions(</span></strong>array_identifier<strong><span style="color: #FF0000">)</span></strong>
| <strong><span style="color: #FF0000">$dimensions(</span></strong>type_identifier<strong><span style="color: #FF0000">)</span></strong>
array_dimension_function ::=
<strong><span style="color: #FF0000">$left</span></strong>
| <strong><span style="color: #FF0000">$right</span></strong>
| <strong><span style="color: #FF0000">$low</span></strong>
| <strong><span style="color: #FF0000">$high</span></strong>
| <strong><span style="color: #FF0000">$increment</span></strong>
| <strong><span style="color: #FF0000">$size</span></strong>
dimension_expression ::= expression</pre></div></div>
<p class="Element10" style="text-align: center">
<strong>Syntax 23-5—Array querying function syntax (not in Annex A)</strong></p><p class="Element10">
</p>
<p class="Element10">
SystemVerilog provides system functions to return information about a particular dimension of an array variable or type. The return type is integer, and the default for the optional dimension expression is 1. The array dimension can specify any fixed sized index (packed or unpacked), or any dynamically sized index (dynamic, associative, or queue).
<ul class="Element639">
<li class="Element609">$left shall return the left bound (msb) of the dimension</li>
<li class="Element609">$right shall return the right bound (lsb) of the dimension</li>
<li class="Element609">$low shall return the minimum of $left and $right of the dimension</li>
<li class="Element609">$high shall return the maximum of $left and $right of the dimension</li>
<li class="Element609">$increment shall return 1 if $left is greater than or equal to $right, and -1 if $left is less than $right</li>
<li class="Element609">$size shall return the number of elements in the dimension, which is equivalent to $high - $low + 1</li>
<li class="Element609">$dimensions shall return the number of dimensions in the array, or 0 for a singular object</li>
</ul>The dimensions of an array shall be numbered as follows: The slowest varying dimension (packed or unpacked) is dimension 1. Successively faster varying dimensions have sequentially higher dimension numbers. Intermediate type definitions are expanded first before numbering the dimensions. </p>
<p class="Element10">
</p>
<p class="Element10">
For example: </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00939');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00939"><pre class="Element12">// Dimension numbers
// 3 4 1 2
reg [3:0][2:1] n [1:5][2:8];
typedef reg [3:0][2:1] packed_reg;
packed_reg n[1:5][2:8]; // same dimensions as in the lines above</pre></div></div>
<p class="Element10">
For a fixed sized integer type (integer, shortint, longint, and byte), dimension 1 is pre-defined. For an integer N declared without a range specifier, its bounds are assumed to be [$bits(N)-1:0]. </p>
<p class="Element10">
</p>
<p class="Element10">
If an out-of-range dimension is specified, these functions shall return a ’x. </p>
<p class="Element10">
</p>
<p class="Element10">
When used on a dynamic array or queue dimension, these functions return information about the current state of the array. If the dimension is currently empty, these functions shall return a ’x. It is an error to use these functions directly on a dynamically sized type identifier. </p>
<p class="Element10">
</p>
<p class="Element10">
Use on associative array dimensions is restricted to index types with integral values. With integral indexes, these functions shall return:
<ul class="Element639">
<li class="Element609">$left shall return 0</li>
<li class="Element609">$right shall return the highest possible index value</li>
<li class="Element609">$low shall return the lowest currently allocated index value</li>
<li class="Element609">$high shall return the largest currently allocated index value</li>
<li class="Element609">$increment shall return -1</li>
<li class="Element609">$size shall return the number of elements currently allocated</li>
</ul>If the array identifier is a fixed sized array, these query functions can be used as a constant function and passed as a parameter before elaboration. These query functions can also be used on fixed sized type identifiers in which case it is always treated as a constant function. </p>
<p class="Element10">
</p>
<p class="Element10">
Given the declaration below: </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00940');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00940"><pre class="Element12">typedef logic [16:1] Word;
Word Ram[0:9];</pre></div></div>
<p class="Element10">
The following system functions return 16: </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00941');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00941"><pre class="Element12">$size(Word)
$size(Ram,2)</pre></div></div>
</div>
</div>
<a name="Group"></a><div class="Element14">
<a onclick="toggleVisibilityStored('Group');" class="a_Element14"><img src="sectionminus.png" border="0" alt="" title="" id="imgGroup">Group</a></div>
<div id="divGroup">
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="00852.html" target="topic">第二十三章 系统任务与系统函数</a></p></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="00852.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="我要啦免费统计" 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 + -