我正在尝试实现一个测试平台并编写所有内容 我的DUT可能的输入组合到文件:
module CONTROL_LOGIC_tb();
// Inputs
reg [3:0] select_i;
reg [15:0] addr_i;
// Output
wire [7:0] ctrl_o;
// Instantiate the UUT
CONTROL_LOGIC UUT(
.select_i(select_i),
.ctrl_i(addr_i),
.ctrl_o(ctrl_o) );
// Do test
integer outFile;
integer idx;
initial begin
select_i = 0;
outFile = $fopen(".\\CTRL.bin", "wb");
for (idx = 0; idx < 65536; idx = idx +1)
begin
addr_i = idx;
$fwrite(outFile, "%c", ctrl_o);
end
$fclose(outFile);
$finish;
end
endmodule
不幸的是,文件'CTRL.bin'没有填充任何有用的数据。 然而它的大小是64kB ......至少这是有效的!
使用变量'idx'作为DUT的输入我做错了什么?
ps:我在ispLever中使用Aldec功能模拟(如果重要的话?)。
答案 0 :(得分:1)
for
循环没有延迟:
for (idx = 0; idx < 65536; idx = idx +1)
输入之间必定会有一些延迟,否则生成它们的代码只会在零时间运行,每个新输入只会覆盖前一个输入并且没有输入应用于被测设计,例如:
for (idx = 0; idx < 65536; idx = idx +1)
begin
addr_i = idx;
#10;
$fwrite(outFile, "%c", ctrl_o);
end