找回密码
 注册
搜索
查看: 1677|回复: 2

[讨论] modelsim仿真错误,如何写testbench

[复制链接]
发表于 2006-5-27 12:06:00 | 显示全部楼层 |阅读模式
在isplever中编写程序,对一路数字信号采样,检查它的跳变,我的做法如下:
检测待测信号的上升延次数,在读信号rd有效时,读取计数值,若计数值为0,则待测信号没有跳变,计数不为0则待测信号有跳变,我的代码如下:
module datasmp(reset,rd,clk,data1,dout1);
input reset,clk,rd,data1;
output [7:0] dout1;
//output clr;
reg    [7:0]  dcnt;
//reg clr;
wire clr;
reg temp1, temp2;
reg [1:0] c;


always@(posedge clk)
begin
    if(!rd)
        begin
        c<=0;
        end
    else
        begin
        if(c<2)
           c <= c+1;
        end   
end
assign clr = ~c[0];  

   


always@(posedge clk)      //count data pulse
begin
  if (!reset)
     dcnt<=0;
  else
     begin
         temp1<=temp2;
         temp2<=data1;
         if(temp1 ^ temp2)
             dcnt <= dcnt+1;
         if(dcnt>200)
             dcnt <= 200;
         if(!clr)
             dcnt <= 0;
     end
end

   assign dout1 = (!rd)?dcnt:8'hZZ;

endmodule


在quartus II中仿真时可以得到正确结果,但在isplever中仿真时要写testbench,我的testbench代码如下,
`timescale 1ns/1ns
`include  "datasmp.v"

module datasmp_tb;

reg reset,clk,rd,data1;

wire [7:0] dout1;

parameter DELY=10;

datasmp  mydatasmp(reset,clk,rd,data1,dout1);

always #(DELY/2)  clk=~clk;

//always #(DELY*20)   data1=~data1;
initial
   begin
      clk =0;  reset =0; rd=1;data1=1;

    #(DELY*10)   reset=1;
    #(DELY*20)   data1=0;
    #(DELY*20)   data1=1;
    #(DELY*20)   data1=0;
    #(DELY*20)   data1=1;
    #(DELY*20)   rd=0;data1=0;
    #(DELY*20)   rd=1;data1=1;
    #(DELY*20)   data1=0;
    #(DELY*20)   data1=1;
    #(DELY*20)   data1=0;
    #(DELY*20)   data1=1;
    #(DELY*20)   data1=0;
    #(DELY*20)   data1=1;
    #(DELY*20)   data1=0;
    #(DELY*20)   data1=1;
    #(DELY*20)   data1=0;rd=0;
    #(DELY*20)   data1=1;rd=1;
    #(DELY*20)   data1=0;
    #(DELY*20)   data1=1;
   
    #(DELY*500)  $finish;
   
  
   end

initial  $monitor($time,,,"%d  %d  %b  %d  %d",reset,clk,rd,data1,dout1);

endmodule

仿真时老出现错误: Error loading design
# Error: Error loading design
#        Pausing macro execution
# MACRO ./datasmp_tb_tff.udo PAUSED at line 4
我是新手,对testbench的规范不熟悉,请各位高手帮我看看,该如何改正,谢谢!

[em13]
 楼主| 发表于 2006-6-5 21:01:00 | 显示全部楼层
<P>这么久了也没人回答我,还是要靠自己</P><P>我的问题已经解决了,modelsim窗口一次只能开一个,仿真时间不能设的太短</P><P>^_^</P>
点评回复

使用道具 举报

发表于 2006-6-7 08:39:00 | 显示全部楼层
<TABLE fixed" cellSpacing=0 cellPadding=0 width="100%"><TR><TD vAlign=top width=32></TD><TD 0px; WIDTH: 100%; WORD-WRAP: break-word; 130: "><TABLE fixed" height=120 cellSpacing=0 cellPadding=0 width="100%"><TR vAlign=top><TD 0px; WIDTH: 100%; WORD-WRAP: break-word; 130: "><FONT color=#000000>testbench的学问可高了去了,比设计本身需要的知识还要多。例如vhdl里面的assert,report语句或者verilog里面的$display等系统函数。
modelsim自带的帮助里面有一个例子,你可以看看。 </FONT></TD></TR></TABLE></TD></TR></TABLE>
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-9-29 12:21 , Processed in 0.045130 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表