簡體   English   中英

SystemVerilog程序塊與傳統的測試平台

[英]SystemVerilog program block vs. traditional testbench

是否存在程序塊提供的SV的任何功能,這些功能無法與其他方法重復使用?

這個問題不太具體的版本是:我是否應該打擾程序塊進行驗證? 我正在從一個受限於Verilog-95的環境轉移到支持SV的環境中,我想知道我是否通過不使用程序塊為自己創造額外的工作。

查看IEEE Std1800-2012§3.4§24 。有關program塊的完整描述。

在簡短的,不完整的摘要中,一個program塊:

  • 不能always包含過程, primitive實例, module實例, interface實例(允許virtual interface和端口interface )或其他program實例。
  • 指定Reactive區域中的計划。 這可以防止競爭條件。
  • 有一個額外的系統任務$exit ,它終止調用它的program實例。
    • 當所有program實例都退出時,模擬將終止。
  • 除了如上所述之外,它主要類似於module塊。

program塊的想法是在測試和設計之間創建清晰的分離。 在早期版本的SystemVerilog(IEEE 1800之前版本)中, class實例化通常僅限於program塊。 這強調了測試和設計的划分。 它還使得program塊對於希望在其流程中使用面向對象編程的驗證工程師至關重要。 從IEEE 1800開始,幾乎可以在任何地方定義和實例化class 結果, program塊變得不夠充分。

今天,對program塊有用性的看法是分開的。 從我去過的最后幾個約定來看,趨勢似乎是贊成放棄program塊。 這是因為其他方法可以實現這些優點。 可以使用clocking塊來完成反應區域中的調度。 mailbox ,隊列( [$] )或關聯數組( [*] )可用於智能處理運行多個測試的模擬終止。 就個人而言,我仍然喜歡使用program塊,並在需要時initial forever使用initial forever作為always等價的。 如果您打算使用UVM,那么非program塊測試平台可能會更適合您。

最后,它實際上歸結為方法偏好。 最好自己評估和試用。

我不建議使用程序塊 - 而是使用模塊。 幾年前我寫了一篇關於這篇文章詳細文章

暫無
暫無

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

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