📄 00163.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<title>17.14 时钟解析</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', '00163.html');" onmousedown="onBodyMouseDown();">
<!-- Begin Popups -->
<div class="Element801" id="popup00367">
<div class="Element800">
<div class="Element14">
链接</div>
<div class="Element11">
<div class="Element10">
<a href="00868.html" target="topic">第十七章 断言</a>, <a href="00952.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, 'popup00367');"><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="00162.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="00868.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="00164.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">
17.14 时钟解析</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">
<p class="Element10">
SystemVerilog具有多种方法为一个特性指定时钟。 </p>
<p class="Element10">
</p>
<p class="Element10">
— 具有一个时钟的序列实例,例如: </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00764');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00764"><pre class="Element12"><span style="color: #0000FF">sequence</span> s2<span style="color: #800080">;</span>
<span style="color: #800080"> @(</span><span style="color: #0000FF">posedge</span> clk<span style="color: #800080">)</span>
a <span style="color: #800080">##</span><span style="color: #FF0000">2</span> b<span style="color: #800080">;</span>
<span style="color: #0000FF">endsequence</span>
<span style="color: #0000FF">property</span> p2<span style="color: #800080">;</span>
<span style="color: #0000FF">not</span> s2<span style="color: #800080">;</span>
<span style="color: #0000FF">endproperty</span>
<span style="color: #0000FF">assert property</span><span style="color: #800080">(</span>p2<span style="color: #800080">);</span></pre></div></div>
<p class="Element10">
— 特性,例如: </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00765');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00765"><pre class="Element12">property p3; @(posedge clk) not (a ##2 b); endproperty
assert property (p3);</pre></div></div>
<p class="Element10">
— contextually inferred clock from a procedural block, for example: </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00766');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00766"><pre class="Element12">always @(posedge clk) assert property (not (a ##2 b));</pre></div></div>
<p class="Element10">
— clocking block, for example: </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00767');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00767"><pre class="Element12">clocking master_clk @(posedge clk);
property p3; not (a ##2 b); endproperty
endclocking
assert property (master_clk.p3);</pre></div></div>
<p class="Element10">
— default clock, for example: </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00768');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00768"><pre class="Element12">default clocking master_clk ; // master clock as defined above
property p4; (a ##2 b); endproperty
assert property (p4);</pre></div></div>
<p class="Element10">
For a multi-clocked assertion, the clocks are explicitly specified. No default clock or inferred clock is used. In addition, multi-clocked properties are not allowed to be defined within a clocking block. </p>
<p class="Element10">
</p>
<p class="Element10">
A multi-clocked property assert statement must not be embedded in procedural code where a clock is inferred.For example, following forms are not allowed. </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00769');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00769"><pre class="Element12">always @(clk) assert property (mult_clock_prop);// illegal
initial @(clk) assert property (mult_clock_prop);// illegal</pre></div></div>
<p class="Element10">
The rules for an assertion with one clock are discussed in the following paragraphs. </p>
<p class="Element10">
</p>
<p class="Element10">
The clock for an assertion statement is determined in the decreasing order of priority:
<ol class="Element632">
<li value="1" class="Element602">Explicitly specified clock for the assertion.</li>
<li value="2" class="Element602">Inferred clock from the context of the code when embedded.</li>
<li value="3" class="Element602">Default clock, if specified.</li>
</ol>A concurrent assertion statement must resolve to a clock. Otherwise, the statement is considered illegal. </p>
<p class="Element10">
</p>
<p class="Element10">
Sequences and properties specified in clocking blocks resolve the clock by the following rules:
<ol class="Element632">
<li value="1" class="Element602">Event control of the clocking block specifies the clock.</li>
<li value="2" class="Element602">No explicit event control is allowed in any property or sequence declaration.</li>
<li value="3" class="Element602">If a named sequence that is defined outside the clocking block is used , its clock, if specified, must be identical to the clocking block’s clock.</li>
<li value="4" class="Element602">Multi-clock properties are not allowed.</li>
</ol>Resolution of clock for a sequence declaration assumes that only one explicit event control can be specified. Also, the named sequences used in the sequence declaration can, but do not need to, contain event control in their definitions. </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00770');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00770"><pre class="Element12">sequence s;
//sequence composed of two named subsequences
@(posedge s_clk) e ##1 s1 ##1 s2 ##1 f;
endsequence
sequence s1;
@(posedge clk1) a ##1 b; // single clock sequence
endsequence
sequence s2;
@(posedge clk2) c ##1 d; // single clock sequence
endsequence</pre></div></div>
<p class="Element10">
These example sequences are used in Table 17-3 to explain the clock resolution rules for a sequence declaration. The clock of any sequence when explicitly specified is indicated by X. Otherwise, it is indicated by a dash. </p><p class="Element10" style="text-align: center">
<strong>Table 17-3: Resolution of clock for a sequence declaration</strong></p><div class="Element63">
<div class="TableDiv">
<table cellspacing="0" class="Table1">
<tr>
<td class="Element65" valign="top" width="6%">
<div class="Element66">
s_clk </div></td><td class="Element65" valign="top" width="6%">
<div class="Element66">
clk1 </div></td><td class="Element65" valign="top" width="6%">
<div class="Element66">
clk2 </div></td><td class="Element65" valign="top" width="25%">
<div class="Element66">
Resolved clock </div></td><td class="Element65" valign="top" width="57%">
<div class="Element66">
Semantic restriction </div></td></tr><tr>
<td class="Element67" valign="top" width="6%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="25%">
<div class="Element68">
unclocked </div></td><td class="Element67" valign="top" width="57%">
<div class="Element68">
- </div></td></tr><tr>
<td class="Element67" valign="top" width="6%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="25%">
<div class="Element68">
s_clk </div></td><td class="Element67" valign="top" width="57%">
<div class="Element68">
- </div></td></tr><tr>
<td class="Element67" valign="top" width="6%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="25%">
<div class="Element68">
s_clk </div></td><td class="Element67" valign="top" width="57%">
<div class="Element68">
s_clk and clk1 must be identical </div></td></tr><tr>
<td class="Element67" valign="top" width="6%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="25%">
<div class="Element68">
s_clk </div></td><td class="Element67" valign="top" width="57%">
<div class="Element68">
s_clk, clk1 and clk2 must be identical </div></td></tr><tr>
<td class="Element67" valign="top" width="6%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="25%">
<div class="Element68">
s_clk </div></td><td class="Element67" valign="top" width="57%">
<div class="Element68">
s_clk and clk2 must be identical </div></td></tr><tr>
<td class="Element67" valign="top" width="6%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="25%">
<div class="Element68">
unclocked </div></td><td class="Element67" valign="top" width="57%">
<div class="Element68">
- </div></td></tr><tr>
<td class="Element67" valign="top" width="6%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="25%">
<div class="Element68">
unclocked </div></td><td class="Element67" valign="top" width="57%">
<div class="Element68">
clk1 and clk2 must be identical </div></td></tr><tr>
<td class="Element67" valign="top" width="6%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="6%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="25%">
<div class="Element68">
unclocked </div></td><td class="Element67" valign="top" width="57%">
<div class="Element68">
- </div></td></tr></table></div></div>
<p class="Element10">
Once the clock for a sequence declaration is determined, the clock of a property declaration is resolved similar to the resolution for a sequence declaration. A single clocked property assumes that only one explicit event control can be specified. Also, the named sequences used in the property declaration can contain event control in their declarations. Table 17-4 specifies the rules for property declaration clock resolution. The property has the form: </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00771');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00771"><pre class="Element12">property p;
@(posedge p_clk) not s1 |=> s2;
endproperty</pre></div></div>
<p class="Element10">
p_clk is the property for the clock, clk1 is the clock for sequence s1 and clk2 is the clock for sequence s2. The same rules apply for operator |->. </p>
<p class="Element10">
</p><p class="Element10" style="text-align: center">
<strong>Table 17-4: Resolution of clock for a declaration</strong> </p><div class="Element63">
<div class="TableDiv">
<table cellspacing="0" class="Table1">
<tr>
<td class="Element65" valign="top" width="4%">
<div class="Element66">
p_clk </div></td><td class="Element65" valign="top" width="4%">
<div class="Element66">
clk1 </div></td><td class="Element65" valign="top" width="4%">
<div class="Element66">
clk2 </div></td><td class="Element65" valign="top" width="21%">
<div class="Element66">
Resolved clock </div></td><td class="Element65" valign="top" width="67%">
<div class="Element66">
Semantic restriction </div></td></tr><tr>
<td class="Element67" valign="top" width="4%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="4%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="4%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="21%">
<div class="Element68">
unclocked </div></td><td class="Element67" valign="top" width="67%">
<div class="Element68">
- </div></td></tr><tr>
<td class="Element67" valign="top" width="4%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="4%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="4%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="21%">
<div class="Element68">
p_clk </div></td><td class="Element67" valign="top" width="67%">
<div class="Element68">
- </div></td></tr><tr>
<td class="Element67" valign="top" width="4%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="4%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="4%">
<div class="Element68">
- </div></td><td class="Element67" valign="top" width="21%">
<div class="Element68">
p_clk </div></td><td class="Element67" valign="top" width="67%">
<div class="Element68">
p_clk and clk1 must be identical </div></td></tr><tr>
<td class="Element67" valign="top" width="4%">
<div class="Element68">
X </div></td><td class="Element67" valign="top" width="4%">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -