测试文件添加激励
时间:10-02
整理:3721RD
点击:
module xx_tb;
// Inputs
reg clk;
reg rst;
reg [17:0] dina;
reg [17:0] dinb;
// Outputs
wire [33:0] dout;
integer
i ,j ;
reg
[647:0]
datathmem[2:0] ;
reg
[17:0]
dataxmem[647:0] ;
// Instantiate the Unit Under Test (UUT)
dxx1 uut (
.clk(clk),
.rst(rst),
.dina(dina),
.dinb(dinb),
.dout(dout)
);
always #10
clk = ~clk ;
initial
begin
$readmemb("realTtH1.txt",datathmem) ;
$readmemb("realx1.txt",dataxmem) ;
end
initial
begin
clk = 0 ;
rst = 0 ;
dina = 0 ;
dinb = 0 ;
#15
rst = 1 ;
// #20
dina = datathmem[0][647:630] ;
// dinb = dataxmem[0] ;
// #20
dina = datathmem[0][629:612] ;
// dinb = dataxmem[18] ;
begin
for (i=35;i>-1;i=i-1)
begin
j = i*18 ;
dina = datathmem[0][j*1+17-:1] ;
dinb = dataxmem[j] ;
#20 ;
end
end
end
endmodule
其中dina想要表示的是datathmem[0]的第j+17到j这18位,但是波形出现问题
// Inputs
reg clk;
reg rst;
reg [17:0] dina;
reg [17:0] dinb;
// Outputs
wire [33:0] dout;
integer
i ,j ;
reg
[647:0]
datathmem[2:0] ;
reg
[17:0]
dataxmem[647:0] ;
// Instantiate the Unit Under Test (UUT)
dxx1 uut (
.clk(clk),
.rst(rst),
.dina(dina),
.dinb(dinb),
.dout(dout)
);
always #10
clk = ~clk ;
initial
begin
$readmemb("realTtH1.txt",datathmem) ;
$readmemb("realx1.txt",dataxmem) ;
end
initial
begin
clk = 0 ;
rst = 0 ;
dina = 0 ;
dinb = 0 ;
#15
rst = 1 ;
// #20
dina = datathmem[0][647:630] ;
// dinb = dataxmem[0] ;
// #20
dina = datathmem[0][629:612] ;
// dinb = dataxmem[18] ;
begin
for (i=35;i>-1;i=i-1)
begin
j = i*18 ;
dina = datathmem[0][j*1+17-:1] ;
dinb = dataxmem[j] ;
#20 ;
end
end
end
endmodule
其中dina想要表示的是datathmem[0]的第j+17到j这18位,但是波形出现问题
波形呢?
dout一直在0和1之间变化,
你是不是应该把dxx1的原码和你的仿真波形都贴出来
dxx1里面dout的定义是34比特的把?
是的
1、不知道你的DUT实现什么功能;2、最好把波形贴出来;
是不是时标没加?
你把你的波形贴出来


dina = datathmem[0][j*1+17-:1] ;
应该是这句话没有实现你要的功能。
我一般是这么写的:
for(i=0;i++;i<16) begin
a = b[16*i+15:16*i];
end
实现每一次给a赋值b的其中16比特。
这不能用于memory,冒号的两端不能出现两个变量
对,我这边是SV的可能可以,我也记得是不行的,不过代码环境受限,暂时找不到用过的,你看一下你这个代码是否可行吧,我觉得就是这一行代码的问题,按理来说也不是像你那么写,你可以把等号左边的打印出来,估计结果不是你要的,你试试看。如果是这里的问题,你再找一下相关资料该怎么写带变量的[:]的方式吧。
应该是dina=datathmem[0][(j+1)*18-:18],冒号后面应该是所取的位宽,冒号前面是初始位,然后依次递减。可能j和i的值也要调整一下。我觉得问题就是出在datathmem[0]后面这个位宽表示上。
多谢,我试试
