在調用DesignWare時候,通常會有dw01_add #(a_width,bwidth)這一類語法出現,當時很疑惑這是為什么,現在才查到它的出處。懷疑是不是自己基本功不夠扎實。查到的用法如下
1、module_name #( parameter1, parameter2) inst_name( port_map);
2、module_name #( .parameter_name(para_value), .parameter_name(para_value)) inst_name (port map);
用#方法和port map的寫法差不多
module multiplier (a, b, product);
parameter a_width = 8, b_width = 8;
localparam product_width = a_width+b_width;
input [a_width-1:0] a;
input [b_width-1:0] b;
output[product_width-1:0]product;
generate
if((a_width < 8) || (b_width < 8))
CLA_multiplier #(a_width, b_width) u1 (a, b, product);
else
WALLACE_multiplier #(a_width, b_width) u1 (a, b, product);
endgenerate
endmodule
這個用法着實實用。如果有一個模塊經常被調用,那么這種方法能讓verilog的層次精簡很多。