我写了一个简单的测试台和门。我的代码和测试平台工作正常。现在我想做的是“我正在尝试为我的案例实现一个while循环”。我没有得到语法错误但没有看到任何输出。任何人都可以告诉我的错误吗?。
timescale 1ns / 100ps
int count=0;
module and_gate_test;
// Inputs
reg in1_t;
reg in2_t;
// Outputs
wire out_t;
// Instantiate the Unit Under Test (UUT)
and_gate and_gate_1 (in1_t,in2_t,out_t);
initial
begin
// Initialize Inputs
//case 0
while(count==100){
in1_t <= 0;
in2_t <= 0;
#1 $display ("out_t=%b",out_t);
//case 1
in1_t <= 1;
in2_t <= 1;
#1 $display ("out_t=%b",out_t);
//case2
in1_t <= 0;
in2_t <= 1;
#1 $display ("out_t=%b",out_t);
//case3
in1_t <= 1;
in2_t <= 0;
#1 $display ("out_t=%b",out_t);
count++; }
// Add stimulus here
end
endmodule
答案 0 :(得分:2)
while( count <= 100)
你从未进入过循环,因为你从零开始,所以
while(count==100)
永远不会评估为真
答案 1 :(得分:1)
你使用的while循环将永远不会执行,因为计数永远不会等于100,正如Alex Rellim所说。它应该像
while(count<=100)
并且count ++将无法在verilog中运行。使用
count = count + 1
而不是计数++。
而且while循环应该有开始和结束而不是花括号。
答案 2 :(得分:1)
一些问题:
{
和}
)需要分别由begin
和end
替换
int count=0;
需要在模块内部
int
是SystemVerilog。如果您想严格遵循IEEE Std 1364,请使用integer
。如果您想使用IEEE Std 1800,则可以使用int
。int
默认为32'd0
integer
默认为32'dX
。while(count==100)
应为while(count<=100)
或while(count<100)
==
,则会跳过整个循环,因为count
初始化为零。for(integer count=0; count<100; count++)
而不是while(count<100)
答案 3 :(得分:-1)
while(count == 100)
?!
[........另外8个字符]。