2015-02-25 18 views
5

czytałem o parametrach i jak przedefiniować je w module instancji ale co jeśli mam parametr wewnątrz modułu wewnątrz modułu powiedzieć, że mam mały moduł zwany genparametr wewnątrz moulde wewnątrz modułu

module gen(input,output); 
parameter n=2; 
parameter m=10; 
//do something 
endmodule 

że moduł jest tworzony w innym module o nazwie top

module top(inputs,output); 
gen gen1(inputs,output); 
//do something 
endmodule; 

i próbuję zrobić testbench na dużym module, gdy trzeba na nowo zdefiniować dwoma parametr n i m

module tb; 
reg input; 
wire output; 
top top1(input,output) 
endmodule; 

Jak mogę to napisać w verilog?

Odpowiedz

3

Jednym z rozwiązań jest nowo zdefiniować parametry na każdym poziomie:

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; 

Innym rozwiązaniem jest, aby utrzymać obecną definicję modułu i używać defparam w testbench'a do hierarchicznie przesłonić wartości parametrów:

module tb; 
reg input; 
wire output; 
defparam top1.gen1.m = 4; 
defparam top1.gen1.n = 5; 
top top1(input,output) 
endmodule; 
+0

Użyłem drugiego rozwiązania i zadziałało to dla mnie bardzo dobrze –

Powiązane problemy