簡體   English   中英

veilog中的defparam內部生成塊

[英]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提供了一個示例-模塊實例A1I的層次結構名稱。

例如:

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

http://www.edaplayground.com/x/4PyL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM