compare3_tb.v.html

来自「和picoblaze完全兼容的mcu ip core」· HTML 代码 · 共 506 行 · 第 1/3 页

HTML
506
字号
linkText = is_nav4up ? document.links[i].text : document.links[i].innerText;linkY    = is_nav4up && ! is_nav5up ? document.links[i].y    : document.links[i].offsetTop;if ((linkText == text) && (linkY != y)) {window.status="";if (is_nav4up) if (relative) window.scrollBy(0,linkY - y);else          window.scrollTo(0,linkY); else if (is_ie4up)document.links[i].scrollIntoView(true); last_link=i;last_class=document.links[i].className;document.links[i].className='HI';return false;}}nextpage = (inc==1) ? next_page() : prev_page();wrappage = (inc==1) ? first_page() : last_page();if (nextpage!="" || wrappage!="") {if (nextpage=="") { if (!confirm(text + " not found. Search again from "+((inc==1)?"first":"last")+" page?"))return false;nextpage=wrappage;}location=nextpage+ "?" + escape(text) + "&" + ( y - window.pageYOffset ) + "&" + inc;return false;}if (confirm(text + " not found. Search again from "+((inc==1)?"start":"end")+"?")) {if (inc==1) i=-1;else i=document.links.length;} else return false;}return true;}function loadqs() {var opt=location.search, text="", s="", y=0, si=0, inc=1;if (opt.length==0) return true;  for (var i=1;i<opt.length;i++) { if (opt.charAt(i) != "&") s += opt.charAt(i);else {if (text=="") text=unescape(s);else             y=s;s="";}}if (text=="") return true;if (s == "-1") { si=document.links.length-1; inc=-1; }window.scrollTo(0,0);search(text,y,si,inc);return true;}// --></script><body onload='loadqs();'><script language="JavaScript"type="text/javascript"><!--function prev_page() { return ""; }function last_page() { return ""; }// --></script><center><table class=NB cols=7 ><tr><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';"  onclick="location='index.html';"><a target="_top" href="index.html">Hierarchy</a></td><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';"  onclick="location='index-f.html';"><a target="_top" href="index-f.html">Files</a></td><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';"  onclick="location='index-m.html';"><a target="_top" href="index-m.html">Modules</a></td><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';"  onclick="location='index-s.html';"><a target="_top" href="index-s.html">Signals</a></td><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';"  onclick="location='index-t.html';"><a target="_top" href="index-t.html">Tasks</a></td><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';"  onclick="location='index-fn.html';"><a target="_top" href="index-fn.html">Functions</a></td><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';"  onclick="location='http://www.burbleland.com/v2html/help_7_30.html?htf-ni-s-';"><a target="_top" href="http://www.burbleland.com/v2html/help_7_30.html?htf-ni-s-">Help</a></td></tr></table></center><pre><span class=C>/*
  Compare KCPSM3 and PacoBlaze3
*/</span>

<a name="5"></a><span class=M>`define</span> <a  onClick="return qs(event,this,0)"  class=D href="cmprnd3_tb.v.html#5">PACOBLAZE3</a>

<span class=M>`ifndef</span> <a  onClick="return qs(event,this,0)"  class=D href="#8">TEST_FILE</a>
<a name="8"></a><span class=M>`define</span> <a  onClick="return qs(event,this,0)"  class=D href="#8">TEST_FILE</a> <span class=S>&quot;../test/uclock.rmh&quot;</span>
<span class=M>`endif</span>

<span class=M>`ifndef</span> <a  onClick="return qs(event,this,0)"  class=D href="cmprnd3_tb.v.html#12">TEST_CYCLES</a>
<span class=M>`define</span> <a  onClick="return qs(event,this,0)"  class=D href="cmprnd3_tb.v.html#12">TEST_CYCLES</a> 100
<span class=M>`endif</span>

<span class=M>`ifndef</span> <a  onClick="return qs(event,this,0)"  class=D href="cmprnd3_tb.v.html#16">TEST_IRQ</a>
<span class=M>`define</span> <a  onClick="return qs(event,this,0)"  class=D href="cmprnd3_tb.v.html#16">TEST_IRQ</a> 50
<span class=M>`endif</span>

<span class=M>`include</span> <a  onClick="return qs(event,this,0)"  class=S href="timescale_inc.v.html">&quot;timescale_inc.v&quot;</a>
<span class=M>`include</span> <a  onClick="return qs(event,this,0)"  class=S href="pacoblaze_inc.v.html">&quot;pacoblaze_inc.v&quot;</a>

<a name="compare3_tb"></a><span class=K>module</span> <span class=MM>compare3_tb</span><a  href="index-m.html#compare3_tb"><img align=top border=0 alt="Index" src="v2html-i.gif"></a>;

<a name="24"></a><span class=K>parameter</span> <a  onClick="return qs(event,this,0)"  class=PA href="#24">tck</a> = 10, <a  onClick="return qs(event,this,0)"  class=PA href="#24">program_cycles</a> = <span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="cmprnd3_tb.v.html#12">TEST_CYCLES</a>, <a  onClick="return qs(event,this,0)"  class=PA href="#24">irq_cycles</a> = <span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="cmprnd3_tb.v.html#16">TEST_IRQ</a>;

<span class=K>defparam</span> glbl.ROC_WIDTH = 0;

<a name="28"></a><span class=K>reg</span> <a  onClick="return qs(event,this,1)"  class=SR href="#90">clk</a>, <a  onClick="return qs(event,this,2)"  class=SR href="#209">rst</a>, <a  onClick="return qs(event,this,3)"  class=SR href="#209">irq</a>; <span class=C>// clock, reset, interrupt req
</span><a name="29"></a><span class=K>wire</span> [<span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="pacoblaze_inc.v.html#73">code_depth</a>-1:0] <a  onClick="return qs(event,this,4)"  class=SW href="#29">addr_0</a>, <a  onClick="return qs(event,this,5)"  class=SW href="#29">addr_1</a>; <span class=C>// instruction address
</span><a name="30"></a><span class=K>reg</span> [<span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="pacoblaze_inc.v.html#60">operand_width</a>-1:0] <a  onClick="return qs(event,this,6)"  class=SR href="#94">port_0</a>[0:<span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="pacoblaze_inc.v.html#83">port_size</a>-1], <a  onClick="return qs(event,this,7)"  class=SR href="#95">port_1</a>[0:<span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="pacoblaze_inc.v.html#83">port_size</a>-1];
<a name="31"></a><span class=K>wire</span> [<span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="pacoblaze_inc.v.html#60">operand_width</a>-1:0] <a  onClick="return qs(event,this,8)"  class=SW href="#31">pid_0</a>, <a  onClick="return qs(event,this,9)"  class=SW href="#31">pid_1</a>, <a  onClick="return qs(event,this,10)"  class=SW href="#31">pout_0</a>, <a  onClick="return qs(event,this,11)"  class=SW href="#31">pout_1</a>; <span class=C>// port id, port out
</span><a name="32"></a><span class=K>wire</span> <a  onClick="return qs(event,this,12)"  class=SW href="#32">ren_0</a>, <a  onClick="return qs(event,this,13)"  class=SW href="#32">ren_1</a>, <a  onClick="return qs(event,this,14)"  class=SW href="#32">wen_0</a>, <a  onClick="return qs(event,this,15)"  class=SW href="#32">wen_1</a>, <a  onClick="return qs(event,this,16)"  class=SW href="#32">iak_0</a>, <a  onClick="return qs(event,this,17)"  class=SW href="#32">iak_1</a>; <span class=C>// read strobe, write strobe, interrupt ack
</span>
<a name="34"></a><span class=K>wire</span> [<span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="pacoblaze_inc.v.html#72">code_width</a>-1:0] <a  onClick="return qs(event,this,18)"  class=SW href="#45">din_0</a>, <a  onClick="return qs(event,this,19)"  class=SW href="#71">din_1</a>;
<a name="35"></a><span class=K>wire</span> [<span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="pacoblaze_inc.v.html#60">operand_width</a>-1:0] <a  onClick="return qs(event,this,20)"  class=SW href="#35">pin_0</a> = <a  onClick="return qs(event,this,6)"  class=SR href="#94">port_0</a>[<a  onClick="return qs(event,this,8)"  class=SW href="#31">pid_0</a>], <a  onClick="return qs(event,this,21)"  class=SW href="#35">pin_1</a> = <a  onClick="return qs(event,this,7)"  class=SR href="#95">port_1</a>[<a  onClick="return qs(event,this,9)"  class=SW href="#31">pid_1</a>]; <span class=C>// port in
</span>
<span class=C>/* PacoBlaze program memory */</span>
<a name="compare3_tb_rom_0"></a><a  onClick="return qs(event,this,0)"  class=MM href="blockram.v.html#blockram">blockram</a> #(.width(<span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="pacoblaze_inc.v.html#72">code_width</a>),.depth(<span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="pacoblaze_inc.v.html#73">code_depth</a>)) rom_0(
  <span class=SI>.clk</span>(<a  onClick="return qs(event,this,1)"  class=SR href="#90">clk</a>),
  <span class=SI>.rst</span>(<a  onClick="return qs(event,this,2)"  class=SR href="#209">rst</a>),
  <span class=SI>.enb</span>(1'b1),
  <span class=SI>.wen</span>(1'b0),
  <span class=SI>.addr</span>(<a  onClick="return qs(event,this,4)"  class=SW href="#29">addr_0</a>),
  <span class=SI>.din</span>(0),
<a name="45"></a>  <a  onClick="return qs(event,this,0)"  class=SOR href="blockram.v.html#47">.dout</a>(<a  onClick="return qs(event,this,18)"  class=SW href="#34">din_0</a>)
);

<span class=C>/* PacoBlaze dut */</span>
<a name="compare3_tb_dut_0"></a><span class=MM>pacoblaze3</span> dut_0(
  .clk(<a  onClick="return qs(event,this,1)"  class=SR href="#28">clk</a>),
  .reset(<a  onClick="return qs(event,this,2)"  class=SR href="#28">rst</a>),
  .address(<a  onClick="return qs(event,this,4)"  class=SW href="#29">addr_0</a>),
  .instruction(<a  onClick="return qs(event,this,18)"  class=SW href="#34">din_0</a>),
  .port_id(<a  onClick="return qs(event,this,8)"  class=SW href="#31">pid_0</a>),
  .read_strobe(<a  onClick="return qs(event,this,12)"  class=SW href="#32">ren_0</a>),
  .write_strobe(<a  onClick="return qs(event,this,14)"  class=SW href="#32">wen_0</a>),
  .in_port(<a  onClick="return qs(event,this,20)"  class=SW href="#35">pin_0</a>),
  .out_port(<a  onClick="return qs(event,this,10)"  class=SW href="#31">pout_0</a>),
  .interrupt(<a  onClick="return qs(event,this,3)"  class=SR href="#28">irq</a>),
  .interrupt_ack(<a  onClick="return qs(event,this,16)"  class=SW href="#32">iak_0</a>)
);

<span class=C>/* KCPSM3 program memory */</span>
<a name="compare3_tb_rom_1"></a><a  onClick="return qs(event,this,0)"  class=MM href="blockram.v.html#blockram">blockram</a> #(.width(<span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="pacoblaze_inc.v.html#72">code_width</a>),.depth(<span class=D>`</span><a  onClick="return qs(event,this,0)"  class=D href="pacoblaze_inc.v.html#73">code_depth</a>)) rom_1(
  <span class=SI>.clk</span>(<a  onClick="return qs(event,this,1)"  class=SR href="#90">clk</a>),
  <span class=SI>.rst</span>(<a  onClick="return qs(event,this,2)"  class=SR href="#209">rst</a>),
  <span class=SI>.enb</span>(1'b1),
  <span class=SI>.wen</span>(1'b0),
  <span class=SI>.addr</span>(<a  onClick="return qs(event,this,5)"  class=SW href="#29">addr_1</a>),
  <span class=SI>.din</span>(0),
<a name="71"></a>  <a  onClick="return qs(event,this,0)"  class=SOR href="blockram.v.html#47">.dout</a>(<a  onClick="return qs(event,this,19)"  class=SW href="#34">din_1</a>)
);

<span class=C>/* KCPSM3 dut */</span>
<a name="compare3_tb_dut_1"></a><span class=MM>kcpsm3</span> dut_1(
  .clk(<a  onClick="return qs(event,this,1)"  class=SR href="#28">clk</a>),
  .reset(<a  onClick="return qs(event,this,2)"  class=SR href="#28">rst</a>),
  .address(<a  onClick="return qs(event,this,5)"  class=SW href="#29">addr_1</a>),
  .instruction(<a  onClick="return qs(event,this,19)"  class=SW href="#34">din_1</a>),
  .port_id(<a  onClick="return qs(event,this,9)"  class=SW href="#31">pid_1</a>),
  .read_strobe(<a  onClick="return qs(event,this,13)"  class=SW href="#32">ren_1</a>),
  .write_strobe(<a  onClick="return qs(event,this,15)"  class=SW href="#32">wen_1</a>),
  .in_port(<a  onClick="return qs(event,this,21)"  class=SW href="#35">pin_1</a>),
  .out_port(<a  onClick="return qs(event,this,11)"  class=SW href="#31">pout_1</a>),
  .interrupt(<a  onClick="return qs(event,this,3)"  class=SR href="#28">irq</a>),
  .interrupt_ack(<a  onClick="return qs(event,this,17)"  class=SW href="#32">iak_1</a>)
);

<span class=C>/* Clocking device */</span>
<a name="90"></a><span class=K>always</span> #(<a  onClick="return qs(event,this,0)"  class=PA href="#24">tck</a>/2) <a  onClick="return qs(event,this,1)"  class=SR href="#28">clk</a> = ~<a  onClick="return qs(event,this,1)"  class=SR href="#90">clk</a>;

<span class=C>/* Watch external ports */</span>
<span class=K>always</span> @(<span class=K>posedge</span> <a  onClick="return qs(event,this,1)"  class=SR href="#28">clk</a>) <span class=K>begin</span>
<a name="94"></a>  <span class=K>if</span> (<a  onClick="return qs(event,this,14)"  class=SW href="#32">wen_0</a>) <a  onClick="return qs(event,this,6)"  class=SR href="#30">port_0</a>[<a  onClick="return qs(event,this,8)"  class=SW href="#31">pid_0</a>] &lt;= <a  onClick="return qs(event,this,10)"  class=SW href="#31">pout_0</a>;
<a name="95"></a>  <span class=K>if</span> (<a  onClick="return qs(event,this,15)"  class=SW href="#32">wen_1</a>) <a  onClick="return qs(event,this,7)"  class=SR href="#30">port_1</a>[<a  onClick="return qs(event,this,9)"  class=SW href="#31">pid_1</a>] &lt;= <a  onClick="return qs(event,this,11)"  class=SW href="#31">pout_1</a>;
<span class=K>end</span>

<a name="98"></a><span class=K>integer</span> <a  onClick="return qs(event,this,22)"  class=SIT href="#98">i</a>;
<span class=K>always</span> @(<span class=K>negedge</span> <a  onClick="return qs(event,this,1)"  class=SR href="#28">clk</a>)
  <span class=K>if</span> (!dut_0.timing_control) <span class=K>begin</span>
    <span class=ST>$display</span>(<span class=S>&quot;pb3=%h:%h kp3=%h:%h&quot;</span>, <a  onClick="return qs(event,this,4)"  class=SW href="#29">addr_0</a>, <a  onClick="return qs(event,this,18)"  class=SW href="#34">din_0</a>, <a  onClick="return qs(event,this,5)"  class=SW href="#29">addr_1</a>, <a  onClick="return qs(event,this,19)"  class=SW href="#34">din_1</a>);
    <span class=K>if</span> (<a  onClick="return qs(event,this,4)"  class=SW href="#29">addr_0</a> != <a  onClick="return qs(event,this,5)"  class=SW href="#29">addr_1</a>) <span class=ST>$display</span>(<span class=S>&quot;***address mismatch***&quot;</span>);
    <span class=K>if</span> (dut_0.zero != dut_1.zero_flag) <span class=ST>$display</span>(<span class=S>&quot;***zero mismatch***&quot;</span>);
    <span class=K>if</span> (dut_0.carry != dut_1.carry_flag) <span class=ST>$display</span>(<span class=S>&quot;***carry mismatch***&quot;</span>);
    <span class=K>if</span> (dut_0.register.dpr['h0] != dut_1.s0_contents) <span class=ST>$display</span>(<span class=S>&quot;***s0 mismatch***&quot;</span>);
    <span class=K>if</span> (dut_0.register.dpr['h1] != dut_1.s1_contents) <span class=ST>$display</span>(<span class=S>&quot;***s1 mismatch***&quot;</span>);
    <span class=K>if</span> (dut_0.register.dpr['h2] != dut_1.s2_contents) <span class=ST>$display</span>(<span class=S>&quot;***s2 mismatch***&quot;</span>);
    <span class=K>if</span> (dut_0.register.dpr['h3] != dut_1.s3_contents) <span class=ST>$display</span>(<span class=S>&quot;***s3 mismatch***&quot;</span>);

⌨️ 快捷键说明

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