Task And Function

Task

在SystemVerilog中,Task(任務(wù))常被認(rèn)為是程序塊或過(guò)程塊,其具有以下特點(diǎn):

  • Task在被使用的模塊中被調(diào)用。可以在單獨(dú)的文件中定義task塊,使用`include語(yǔ)句包含定義task塊的文件來(lái)調(diào)用task塊。
  • Task塊中可以使用 timing delay。例如:posedge,negedge,# delay and wait。
  • Task塊可以有多個(gè)inputs and outputs。
  • Task塊中定義的變量只存在于Task塊中。
  • 當(dāng)Task塊內(nèi)部沒(méi)有本地變量時(shí),Task塊可以使用,驅(qū)動(dòng),回溯全局變量 。當(dāng)Task塊內(nèi)部有本地變量時(shí),輸出賦值基本在Task塊執(zhí)行完畢后完成。
  • Task塊可以調(diào)用其他Task塊或者Function
  • Task塊可以用于組合邏輯建模以及時(shí)序邏輯建模。
  • Task塊必須使用專(zhuān)門(mén)的語(yǔ)句來(lái)調(diào)用,它不能像函數(shù)一樣用于表達(dá)式。

Function

Function在很多地方上與Task類(lèi)似,但它們之間有一些區(qū)別,比如Function不能驅(qū)動(dòng)多個(gè)output并且不能包含 timing delay等。

  • Function在被使用的模塊中被調(diào)用??梢栽趩为?dú)的文件中定義Function,使用`include語(yǔ)句包含定義Function的文件來(lái)調(diào)用Function。
  • Function中不允許包含timing delays。 例如:posedge, negedge, # delay, 這意味著Function的執(zhí)行是"zero" time delay的。
  • Function可以有多個(gè)inputs但只能有 一個(gè)output。
  • Function中定義的變量只存在于Function中。
  • 當(dāng)Function內(nèi)部沒(méi)有本地變量時(shí),F(xiàn)unction可以使用,驅(qū)動(dòng),回溯全局變量 。當(dāng)Function內(nèi)部有本地變量時(shí),輸出賦值基本在Function執(zhí)行完畢后完成。
  • Function只可用于組合邏輯建模。
  • Function可以調(diào)用其他Function,但不能調(diào)用Task塊。

參考資料:http://www.asic-world.com/verilog/task_func1.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容