参数 inside a moulde inside a module
parameter inside a moulde inside a module
我已经阅读了有关参数以及如何在模块实例化时重新定义它们的信息,但是如果我在模块内的模块中有一个参数怎么办,说我有一个名为 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;
我正在尝试在需要重新定义两个参数 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;
我已经阅读了有关参数以及如何在模块实例化时重新定义它们的信息,但是如果我在模块内的模块中有一个参数怎么办,说我有一个名为 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;
我正在尝试在需要重新定义两个参数 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;