簡體   English   中英

(系統)Verilog參數何時計算?

[英]When are (System)Verilog parameters calculated?

假設我定義了module Foo #(parameter a = 8, parameter b= $clog2(a)) ...

然后實例化

Foo #(.a(16)) bar (...)

何時計算默認參數b? 基於a的實際值還是a的默認值? 實例欄看到b = 3還是b = 4?

它始終是最終值。

1800-2012 LRM中的第23.10節“ 覆蓋模塊參數 ”描述了編譯器設置參數值所經過的詳細過程。 基本上,由於編譯器會對您可以對參數值進行的限制,因此可以確定參數值之間的依賴關系。

23.10.3參數依賴性

可以使用包含另一個參數(例如word_size)的表達式來定義參數(例如memory_size)。 但是,無論是通過defparam語句還是在模塊實例化語句中覆蓋參數,都可以用新表達式有效替換參數定義。 由於memory_size取決於word_size的值,因此對word_size的修改會更改memory_size的值。 例如,在以下參數聲明中,通過defparam語句或定義這些參數的模塊的實例化語句中的word_size更新將自動更新memory_size。 如果memory_size由於defparam或實例化語句而更新,則它將采用該值,而不管word_size的值如何。 parameter word_size = 32, memory_size = word_size * 4096;

暫無
暫無

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

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