2011-07-25 45 views
2

當我實例化一個模塊並且我只關心輸出中的某些位時,是否有一種簡短的語法來丟棄這些位?喜歡的東西模塊輸出中的Verilog級聯

my_module module_instance 
( 
.some_output({garbage1,important1[7:0]}) 
); 

在這種情況下,信號some_outputmy_module是9個位寬,但我只想低8位粘成important1。我可以用所有的9位數來產生一個信號,然後從中選擇8,我知道編譯器會優化它,但是我正在尋找一個成語或縮寫。

+0

你提到的任一選項都很好看。 – 2011-07-25 22:54:05

+4

這種方法的一個缺點(忽略輸出)是你通常會從合成器得到關於它的警告。沒有什麼大不了的,除非你想盡量減少消息,以便更容易地抓住重要的消息。 –

回答

3

如果參數的模塊輸出口的寬度,然後傳遞參數的情況下,就沒有必要創建一個信號扔掉未使用的位:

my_module module_instance #(.WIDTH(8)) 
( 
.some_output(important1[7:0]) 
); 
1

一種選擇是,按照工具建議,參數化模塊。如果你堅持使用寬端口,我不知道有任何無縫的方式來放棄額外的位。使用1'bz未使用的位是誘人的,但是不合法。

如果未使用的位是MSB,則可以將9位端口連接到8位信號,但這是糟糕的編碼風格,並且會導致來自某些工具的警告。

一種可能性是爲未使用的信號定義一個約定,例如,後綴_NC(無連接)。這將有助於記錄意圖。您也可以使用模式匹配過濾關於懸掛信號的任何警告,而不是單獨列出信號。

另一種可能性,特別是如果您採用編碼風格,信號在通過端口時未重新命名,則應通過端口保留信號的全寬並在其他位置修剪額外的位。

+0

使用'nc_'就是我最終做的事情。但它並沒有經常出現。 – Marty