數據類型
- 按照四值邏輯和二值邏輯類型來劃分
- 四值邏輯類型:integer、logic、reg、net-type(例如wire、tri)
- 二值邏輯類型: byte、shortint、int、longint、bit
- 按照有符號和無符號的類型來劃分
- 有符號類型:byte、shortint、int、longint、integer
- 無符號類型: bit、logic、reg、net-type(例如wire、tri)
注意:四值邏輯在轉換為二值邏輯時,其中x,z值會對應為0
function函數
SV函數定義同C語言類似:
- 可以在參數列表中指定輸入參數(input)、輸出參數(output)、輸入輸出參數(inout)或者引用參數(ref)
- 可以返回數值或者不返回數值
- 默認的數據類型是為logic,例如
input[7:0] addr
- 數組可以作為形式參數傳遞
- function可以返回或者不返回結果,如果返回即需要關鍵詞return,如果不返回則應該在聲明function時采用void function()
- 只有數據變量可以在形式參數列表中被聲明為ref類型,而線網類型則不能聲明為ref類型
- 在使用ref時,有時候為了保護數據對象只被讀取不被寫入,可以通過const的方式來限定ref聲明的參數
- 在聲明參數時,可以給入默認數值,例如input[7:0] addr =0 ,同時在調用時如果缺省,那么默認值會被傳遞給function
task任務
任務相比于函數要更加靈活,且以下不同點:
- task無法通過return返回結果,因此只能通過output、inout或者ref的參數來返回
- task內可以置入耗時語句,而function則不能。常見的耗時語句包括@event、wait event 、 #delay等