Passando parâmetro para incluir o arquivo `

E

ericew

Guest
Oi, eu gostaria de passar um parâmetro para o arquivo `incluir. O seguinte é os meus códigos `definir HIER testbench.module_1.shift_register.register_bank parâmetro TOTAL_ADDR_WIDTH = 43;` incluir `undef HIER` definir HIER testbench.module_2.shift_register.register_bank parâmetro TOTAL_ADDR_WIDTH = 59 "/ tb / self_check.v.."; `incluir` undef HIER `definir HIER testbench.module_3.shift_register.register_bank parâmetro TOTAL_ADDR_WIDTH = 67" / tb / self_check.v.. ";` incluir `undef HIER Isso parece ok, mas definitivamente" / tb / self_check.v. ". só quando eu faço isso uma vez. Mas se eu fizer isso mais de uma vez, como faço para passar o parâmetro para o arquivo `incluir? Definição de parâmetro mesmo por várias vezes vai dar erro de compilação. Btw, eu preciso ficar com o nome do parâmetro como TOTAL_ADDR_WIDTH como eu gostaria de reutilizar o self_check.v. Pergunta: 1. É esta a maneira correta de fazê-lo? (Reutilizando o self_check.v de tal forma) 2. Qual é a maneira correta de passar o parâmetro para o arquivo `incluem, no caso mostrando acima? O que exatamente a sintaxe que eu deveria usar? Obrigado!
 
você pode passar o parâmetro u quando instanciar o 'self_check.v' um exemplo: 1, module_name # (parameter1, parameter2) inst_name (port_map); 2, module_name # (parameter_name (para_value), parameter_name (para_value)..) inst_name ( porto mapa);
 
yadog, obrigado pela resposta. Eu tentei isso. Se eu fazer isso, o `HIER definem não será capaz de passar para o self_check.v. Do meu código de exemplo que você vai ver que o `HIER definir e o TOTAL_ADDR_WIDTH é diferente a cada momento em que ele está sendo incluído`.
 
se donot trabalho como eu sugiro, colocar o código ur aqui?
 
Oi yadog, consulte o código abaixo testbench módulo; ...... ..... `Definir HIER testbench.module_1.shift_register.register_bank self_check # (TOTAL_ADDR_WIDTH (43).) Self_check_1 ();` undef HIER `definir HIER testbench.module_2.shift_register.register_bank self_check # (TOTAL_ADDR_WIDTH (59).) Self_check_2 ();` undef endmodule HIER módulo self_check # (parâmetro TOTAL_ADDR_WIDTH = 43) (); reg [TOTAL_ADDR_WIDTH -1:0] addr; ....... ...... if (`HIER.addr! = {{TOTAL_ADDR_WIDTH 1'b0}}) ...... .... endmodule Por favor, informe! Obrigado!
 
o probelem pode ser o "` definir ", eu acho pls consulte o código a seguir, talvez você possa revisar código ur se referem a ele, para ser simples, u pode simplesmente instanciar 'self_check" apenas uma vez para ver se ele pode trabalhar? COMO REFERÊNCIA UR! módulo TM1 # (parâmetro N = 4) (clk, rst_n, faneca); entrada clk; entrada rst_n; saída [M: 0] faneca; localparam M = N-1; reg [M: 0] cnt; always @ (posedge clk ou negedge rst_n) if (! rst_n) cnt
 
yadog, obrigado pelo exemplo. Na verdade, o único problema é o definir `que precisa para passar para o self_check.v. Se eu usar `include" self_check.v ", então não vai ter o problema com o passar` definir HIER no self_check.v, mas não terá problema com o passar parâmetro de TOTAL_ADDR_WIDTH no self_check.v. Se eu instanciar o "self_check.v", então ele não terá o problema de passar TOTAL_ADDR_WIDTH parâmetro para o módulo, mas não terá problema com o passar do `HIER definiu no self_check.v. Para responder à sua pergunta, eu preciso instanciar / `incluem o self_check.v por muitas vezes, é por isso que eu preciso mudar o` definir HIER e TOTAL_ADDR_WIDTH cada vez que eu usar o self_check.v. Qualquer pessoa pode ajudar com isso? Eu estou realmente ficando sem ideia :-(
 
Sua confusão confuso me confunde! (Mas tudo bem) Eu realmente não entendo por que as coisas não funcionam para você, mas esquecem que .... Você consegue obter o `definir através de seu" self_check.v ", certo? E você não consegue obter o parâmetro por meio de? Não vamos focar o parâmetro então nesse nível. Use as coisas que funcionam para você neste momento. `Definir obras? usar isso! Portanto, algo como:
Code:
 `define HIER testbench.module_2.shift_register.register_bank` definir TOTAL_ADDR_WIDTH_HELPER_BECAUSE_AT_LEAST_THIS_WORKS_FOR_ME 42 `include" / tb / self_check.v. ".` Undef TOTAL_ADDR_WIDTH_HELPER_BECAUSE_AT_LEAST_THIS_WORKS_FOR_ME `undef HIER
E então, em seu self_check.v você colocar algo como:
Code:
 # self_check módulo (parâmetro TOTAL_ADDR_WIDTH = TOTAL_ADDR_WIDTH_HELPER_BECAUSE_AT_LEAST_THIS_WORKS_FOR_ME) ();
Não é perfeito, mas deve funcionar.
 
Graças mrflibble para a resposta. Estou tomando como referência a sua sugestão, mas depois não se pode aplicar diretamente. Isto é devido ao tenho conjunto múltiplo de `incluem e` definir. Todos os incluem `irá executar no momento e no` nome definem não pode ser o mesmo, todos os definir `deve ter um nome único para isso. Mas pelo menos ele funciona para mim agora. Obrigado a todos pela ajuda :)
 
Você também pode usar defparam. Ver, por exemplo: [url = http://www.asic-world.com/verilog/para_modules1.html] parametrizada Módulos [/url]
 

Welcome to EDABoard.com

Sponsor

Back
Top