模拟从Quartus启动的Modelsim无法正常工作

时间:2016-02-08 12:07:47

标签: verilog modelsim quartus test-bench

这是测试台

`timescale 1 ps/ 1 ps

module sum_fix_vlg_tst();

reg select;
reg [7:-8] valor_a;
reg [7:-8] valor_b;


// wires                                               
wire [8:-8]  result_fx;

sum_fix i1 (

.result_fx(result_fx),
.select(select),
.valor_a(valor_a),
.valor_b(valor_b)
 );

initial                                                
$monitor ("valor_a = %b, valor_b = %b, result_fx = %b", valor_a, 
valor_b,result_fx);

initial
begin                                                  
#10
select = 1;
valor_a = 32'b0000000011111111;
valor_b = 32'b0000000011111111;

#20

valor_a = 32'b1111111111111111;
valor_b = 32'b1111111111111111;

#30

valor_a = 32'b1001100111001000;
valor_b = 32'b0001111000111101;

end                                                    

endmodule

这就是uut

`timescale 1 ps/ 1 ps
module sum_fix (valor_a,valor_b,result_fx,select);

input [7:-8] valor_a,valor_b;
output reg [8:-8] result_fx;
input select;


always@ (valor_a or valor_b)
begin 
if (select==1)
result_fx = valor_a + valor_b;
else    
result_fx = valor_a - valor_b;
end

endmodule

在Quartus中编译好。然后我像这样推出Modelsim:工具> RTL模拟。它推出了Modelsim,但它只在输入中提供了很多 zzzzzzzzzzzzz ,在输出中只有 xxxxxxxxxxxxxx 而没有任何内容。

我想说我不确定我是否正确地将此测试平台添加到项目中。我是个乞丐。我做的是:作业>设置>编译测试:单击测试长凳>新的,查找文件并添加,确定。我不确定这是正确的方法,因为它看起来太复杂了。请帮忙。

另外,我评论说我在quartus中启动了测试台写作模板,但是我结束了从文件中更改所有内容,最终结果是上面的代码。

1 个答案:

答案 0 :(得分:1)

所以,我在EDAPlayrgound(http://www.edaplayground.com/x/Cyc)上尝试了你的代码,它看起来很好。 (如果你愿意的话,你可以为自己试一试)。

你看到X了,因为在时间0,你没有为任何输入指定值(因为你在分配任何东西之前延迟了10个步骤)。请考虑删除第一个#10,或在其之前添加一些作业。

X =未知值; Z =高阻抗,这意味着既不是1也不是0)。

至于在Quartus中进行设置,你的方式是正确的。