[英]defparam inside generate block in veilog
在設計中,頂層模塊A具有另一個模塊B的兩個實例化
module A (....);
B (.C(C1)...) inst1;
B (.C(C2)...) inst2;
模塊B有一些參數,我想使用generate塊從測試台中分配。
//Testbench
module test_top ();
A (....) A1;
generate
for (genvar k = 0; k<2; k++) begin
defparam A1.instk.C = 0;
end
endgenerate
NCSIM上的編譯導致defparam語句出錯。 通過它無法獲取實例的路徑。 可能是因為generate語句。 在生成塊內使用defparam是否合法?
首先,不要使用defparam
已棄用。 而是使用#( ... )
語法設置參數。
其次,如果您希望使用genvar
引用它們,則模塊B
的實例需要處於generate循環中。
最后,如果您確實想將分層命名與generate
一起使用,則必須在generate
語句中命名該塊。 initial
塊中的$display
提供了一個示例-模塊實例A1
中I
的層次結構名稱。
例如:
module A #(integer WIDTH) (input [WIDTH-1:0] I, output [WIDTH-1:0] O);
generate
for (genvar k = 0; k<WIDTH; k++) begin : BLOCK_NAME
B #(.WIDTH(WIDTH),.BIT(k)) Binst (.I(I), .O(O[k]));
end
endgenerate
endmodule
module B #(integer WIDTH, BIT) (input [WIDTH-1:0] I, output O);
assign O = I[BIT];
endmodule
module test_top;
reg [1:0] I;
wire [1:0] O;
A #(.WIDTH(2)) A1 (.I(I), .O(O));
initial
$display("I[1]= %b", test_top.A1.BLOCK_NAME[1].Binst.I);
endmodule
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.