Verilog 模块内模件内的参数
我已经读过关于参数以及如何在模块实例化时重新定义它们的内容,但是如果我在模块内的模块中有一个参数,比如说我有一个名为gen的小模块,该怎么办Verilog 模块内模件内的参数,verilog,Verilog,我已经读过关于参数以及如何在模块实例化时重新定义它们的内容,但是如果我在模块内的模块中有一个参数,比如说我有一个名为gen的小模块,该怎么办 module gen(input,output); parameter n=2; parameter m=10; //do something endmodule 该模块在另一个名为top的模块中实例化 module top(inputs,output); gen gen1(inputs,output); //do something endmodule
module gen(input,output);
parameter n=2;
parameter m=10;
//do something
endmodule
该模块在另一个名为top的模块中实例化
module top(inputs,output);
gen gen1(inputs,output);
//do something
endmodule;
我正试图在大模块上做一个测试台,我需要重新定义两个参数n和m
module tb;
reg input;
wire output;
top top1(input,output)
endmodule;
我怎样才能在verilog中写出来?一种解决方案是在每个级别重新定义参数:
module gen(input,output);
parameter n=2;
parameter m=10;
//do something
endmodule
module top(inputs,output);
parameter n=2;
parameter m=10;
gen #(.n(n), .m(m)) gen1(inputs,output);
//do something
endmodule;
module tb;
reg input;
wire output;
top #(.n(n), .m(m)) top1(input,output)
endmodule;
另一种解决方案是保留当前模块定义,并在测试台中使用defparam
以分层方式覆盖参数值:
module tb;
reg input;
wire output;
defparam top1.gen1.m = 4;
defparam top1.gen1.n = 5;
top top1(input,output)
endmodule;