在同一verilog文件中声明任务
我试图在测试台中声明一个简单的时钟摆动任务,但ModelSim声称不存在我的任务类型的设计元素。此代码有什么问题:在同一verilog文件中声明任务,verilog,modelsim,Verilog,Modelsim,我试图在测试台中声明一个简单的时钟摆动任务,但ModelSim声称不存在我的任务类型的设计元素。此代码有什么问题: `timescale 1 ns/1 ns module at25320a_tester(); reg clk, s_in, s_out, chip_select, write_protect, hold; // Instantiate at25320a module at25320a EEPROM (.SCK(clk), .SI(s_in), .CSNe
`timescale 1 ns/1 ns
module at25320a_tester();
reg clk, s_in, s_out, chip_select, write_protect, hold;
// Instantiate at25320a module
at25320a EEPROM (.SCK(clk), .SI(s_in), .CSNeg(chip_select), .HOLDNeg(hold), .WPNeg(write_protect), .SO(s_out));
run_clk(15);
task run_clk;
input [3:0] cycles;
output reg clk;
integer i;
for (i=0;i<cycles;i=i+1) begin
#100 clk = 1;
#100 clk = 0;
end
endtask
endmodule
`时标1纳秒/1纳秒
模块at25320a_测试仪();
注册时钟、输入、输出、芯片选择、写入保护、保持;
//实例化at25320a模块
at25320a EEPROM(.SCK(clk),.SI(s_-in),.CSNeg(chip_-select),.HOLDNeg(hold),.WPNeg(write_-protect),.SO(s_-out));
行车钟(15);
任务运行时钟;
输入[3:0]个周期;
输出寄存器时钟;
整数i;
对于(i=0;i任务必须从过程块调用,例如始终
或初始
。在您的情况下,您需要在初始
块中运行任务,并进行一些修改:
`timescale 1 ns/1 ns
module at25320a_tester();
reg clk, s_in, s_out, chip_select, write_protect, hold;
// Instantiate at25320a module
at25320a EEPROM (.SCK(clk), .SI(s_in), .CSNeg(chip_select), .HOLDNeg(hold), .WPNeg(write_protect), .SO(s_out));
initial begin
run_clk(15);
end
task run_clk;
input integer cycles; // Might as well not have this be bigger
// No clock, you want to use the clock from the module
integer i;
for (i=0;i<cycles;i=i+1) begin
#100 clk = 1;
#100 clk = 0;
end
endtask
endmodule
`时标1纳秒/1纳秒
模块at25320a_测试仪();
注册时钟、输入、输出、芯片选择、写入保护、保持;
//实例化at25320a模块
at25320a EEPROM(.SCK(clk),.SI(s_-in),.CSNeg(chip_-select),.HOLDNeg(hold),.WPNeg(write_-protect),.SO(s_-out));
初始开始
行车钟(15);
结束
任务运行时钟;
输入整数周期;//最好不要让它变大
//没有时钟,您要使用模块中的时钟
整数i;
对于(i=0;i任务必须从过程块调用,例如始终
或初始
。在您的情况下,您需要在初始
块中运行任务,并进行一些修改:
`timescale 1 ns/1 ns
module at25320a_tester();
reg clk, s_in, s_out, chip_select, write_protect, hold;
// Instantiate at25320a module
at25320a EEPROM (.SCK(clk), .SI(s_in), .CSNeg(chip_select), .HOLDNeg(hold), .WPNeg(write_protect), .SO(s_out));
initial begin
run_clk(15);
end
task run_clk;
input integer cycles; // Might as well not have this be bigger
// No clock, you want to use the clock from the module
integer i;
for (i=0;i<cycles;i=i+1) begin
#100 clk = 1;
#100 clk = 0;
end
endtask
endmodule
`时标1纳秒/1纳秒
模块at25320a_测试仪();
注册时钟、输入、输出、芯片选择、写入保护、保持;
//实例化at25320a模块
at25320a EEPROM(.SCK(clk),.SI(s_-in),.CSNeg(chip_-select),.HOLDNeg(hold),.WPNeg(write_-protect),.SO(s_-out));
初始开始
行车钟(15);
结束
任务运行时钟;
输入整数周期;//最好不要让它变大
//没有时钟,您要使用模块中的时钟
整数i;
对于(i=0;i任务中的reg clk行是我在单独的文件中保存时留下的,但过程块和整数更改是正确的。谢谢!任务中的reg clk行是我在单独的文件中保存时留下的,但过程块和整数更改是正确的。谢谢!