我是verilog hdl的新手。
为了测试单个循环mips cpu,我试图使用以下表示法来初始化来自testbench的寄存器。
CPU.IM.memory[i] = 32'b0
这里,CPU是一个模块,它具有IM(另一个模块)的声明,并且内存被声明为其中的reg。
然而,Quartus verilog编译器抱怨它无法找到对象引用。以上是否支持?我在内存中加载指令时遇到类似的问题,我不希望能够从测试平台上执行此操作,而不是在IM中进行硬编码或更改。
TestBench.v
for(i = 0; i < 32; i = i + 1) begin
CPU.IM.IMReg[i] = 32'b0;
end
CPU.v
IM IM(
//inputs
.address (pc),
.clk (clk),
.out (Instruction)
);
IM.v
module IM ( address, clk, out);
input [31:0] address;
input clk;
output reg[31:0] out;
reg[31:0] IMReg[31:0];
抛出错误 错误(10207):TestBench.v(31)中的Verilog HDL错误:无法解析对象的引用&#34; IMReg&#34;
答案 0 :(得分:0)
如果没有看到更多代码,很难说出你要做什么,但我猜测的是你正在尝试分配一个内部信号(即输入或输出端口上没有的信号) list)模块中来自不同模块的值。除非该值是常量parameter
,否则您无法执行此操作。只有parameters
,localparams
和端口列表中的信号(inputs
,outputs
和inouts
)在外部可见。
通常,内存是从.hex或.mif文件初始化的,可以将其更改为代表所需的初始状态。