2015-02-25 2 views
5

Я прочитал о параметрах и как переопределить их в модуле конкретизации, но что, если у меня есть параметр внутри модуля внутри модуля сказать, что у меня есть небольшой модуль, называемый генпараметр внутри moulde внутри модуля

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

, что модуль конкретизируется в другом модуле, называемом верхней

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

и я пытаюсь сделать испытательный стенд на большом модуле, где мне нужно переопределить с двумя параметрами п и м

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

Как я могу написать это в verilog?

ответ

3

Одним из решений является пересмотреть параметры на каждом уровне:

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; 
+0

Я использовал второе решение, и он отлично поработал для меня спасибо –

Смежные вопросы