<p>如果我在使用Icarus时应用了以下差异,则测试将如预期失败:</p>
<pre><code>diff git a/examples/endian_swapper/hdl/endian_swapper.sv b/examples/endian_swapper/hdl/endian_swapper.sv
index 810d3b7..a85db0d 100644
- a/examples/endian_swapper/hdl/endian_swapper.sv
+++ b/examples/endian_swapper/hdl/endian_swapper.sv
@@ -119,7 +119,7 @@ always @(posedge clk or negedge reset_n) begin
stream_out_startofpacket <= stream_in_startofpacket;
stream_out_endofpacket <= stream_in_endofpacket;
- if (!byteswapping)
+ if (byteswapping)
stream_out_data <= stream_in_data;
else
stream_out_data <= byteswap(stream_in_data);
</code></pre>
<p>我没有访问Questa的权限,但我会看看在VHDL模拟器上会发生什么。我的直觉是在进行更改后再次检查您是否运行了<code>make clean</code>,并检查Questa是否以某种方式缓存了构建的RTL库。在</p>
<p>正确的是,记分板的<code>add_interface</code>方法有一些未记录的关键字参数:</p>
<ul>
<li><code>compare_fn</code>可以是任何可调用函数</li>
<li><code>reorder_depth</code>是一个整数,允许对事务进行重新排序</li>
</ul>
<p>然而,{supply是一个monitor}机制,当它被一个monitor}接收时,它将被一个monitor}调用。它是不可伸缩的,而且只是由于历史原因(因此没有文档记录)。在</p>
<p>更好的方法是将Scoreboard类子类化,并根据以下原型定义自定义<code>compare</code>方法:</p>
^{pr2}$
<p>其中<code>got</code>和<code>exp</code>是已接收和预期的事务,<code>log</code>是对监视器的<code>logger</code>实例的引用(以提供更有意义的消息)。在</p>