以下是我编写的代码是模拟解码器(Verilog HDL)的测试平台。它会将[15:0]IR
转换为[25:0]ControlWord
。 Literal也是一种受到关注的副产品。
需要针对16位IR
变量测试0-65535的所有值。在循环开始时,我明确地将IR
指定为0,但Quartus告诉我:
警告(10855):controluni_tb.v上的Verilog HDL警告(20):变量IR的初始值应该是常数
因此我得到以下内容:
错误(10119):controluni_tb.v上的Verilog HDL循环语句错误(23):具有非常量循环条件的循环必须在250次迭代内终止
我的测试台模块的代码如下:
module controluni_tb;
reg [15:0]IR;
reg clock;
wire [25:0]ControlWord;
wire [15:0] literal;
Total_Control_Unit_2 dut (IR,ControlWord,literal);
initial
begin
clock <= 1'b0;
end
initial
begin
IR <= 16'b0;
end
initial
begin
forever
begin
#1 IR <= IR + 16'b1;
end
end
initial
#65535 $finish;
endmodule
答案 0 :(得分:0)
您的代码没有错误。 initial
块和系统函数($finish
)用于模拟(非合成)。该错误与综合有关。我编辑了你的代码以提高可读性(你的时钟总是为零!):
module controluni_tb;
reg [15:0]IR;
reg clock;
wire [25:0]ControlWord;
wire [15:0] literal;
Total_Control_Unit_2 dut (IR,ControlWord,literal);
initial begin
clock = 1'b0;
end
initial begin
IR = 16'b0;
forever #1 IR = IR + 16'b1;
end
initial begin
#65535 $finish;
end
endmodule
答案 1 :(得分:0)
为什么不使用for循环进行IR,而不是使用永久循环?然后问题完全受限。
INSERT INTO [dbo].[Transaction] (Type, OwnerType)
VALUES (
<cfqueryparam value='NonLeased' cfsqltype='cf_sql_varchar' />
, <cfqueryparam value='Owner' cfsqltype='cf_sql_varchar' />
)