在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何實現全面的SystemVerilog語法覆蓋

jf_pJlTbmA9 ? 來源:芯華章科技 ? 作者:芯華章科技 ? 2023-07-14 15:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

SystemVeirlog的全面支持是開發商用仿真器的第一道門檻。市面上可以找到不少基于純Verilog仿真器,但是真正能完整支持SystemVerilog 的仍然屈指可數。如何全面地支持SystemVerilog語言,是開發仿真器的一個重要任務。

01. SystemVerilog的發展歷程

數字芯片的驗證技術是隨著Verilog語法的演變而演變的。最早,Verilog是完全用來描述(Model)硬件的,因此又叫HDL(Hardware Description Language硬件描述語言)。隨著驗證技術的進步,需要將很多軟件的思路融進Testbench以豐富測試場景。EDA公司都曾經推出過一些針對Testbench的語言,如OpenVera等。

與Verilog的靜態屬性不同,這些Testbench的驗證語言引入了很多動態的概念,甚至有類(class)、繼承、多態等。然而最終,這些語言又逐步融進了Verilog,最終形成了今天的SystemVerilog。下圖顯示在SystemVerilog剛剛成為標準時,它各個模塊的來源。

1680850266777795.png

圖片來源:SystemVerilog is changing everything - Tech Design Forum Techniques (techdesignforums.com)

基于SystemVerilog,各個EDA廠商推出了各自的仿真器,并在這個基礎上,進一步開發了基于SystemVerilog的methodology library, 最后統一成今天用的通用驗證方法學——UVM (Universal Verification Methodology)。

1680850280486865.png

從上面的歷程可以看出,SystemVerilog的發展和支持不是一步到位的,是在其他語言的基礎上經過多年演變形成的。各個EDA廠商根據他們的自身優勢開發了對SystemVerilog的支持。雖然這些仿真工具都符合LRM(語言參考手冊)的標準,但是由于其發展路徑不同,在性能上及個別語義上,仍然存在一定的差異。

02. SystemVerilog的語法特點

SystemVerilog為了給驗證提供更多的靈活性,從其他編程語言,尤其是面向對象的編程語言(如C++Java)借鑒了很多語法。這使得SystemVerilog語法非常復雜,各種語法耦合性強,環環相扣。

因此,這就要求在設計時,需要一個全局的概念,不能切成一個個孤立的模塊,否則最終很難拼起來;即使勉強拼出來,也不牢固。這點非常像中國古建筑的“榫卯”結構。比如,SystemVerilog引入了class、structure,以及各種動態類型的數組,如 queue。這些都不能是孤立的。它們在實際使用中(比如UVM)都是嵌套使用的。一個類型的數組,很可能其元素是另一個類型。

以下通過一個uvm的例子,來更直觀的了解一下SystemVerilog的語法。

1680850293249364.png

一個支持SystemVerilog的仿真器,要想跑通上述case,至少需要關注以下幾個方面:

1 復合類型成員的初始化

class ’my_sequence’ 中的成員 ’settings’(第12行)是一個queue類型的變量。這種類型的變量需要進行特殊的初始化,給queue分配初始空間。該queue的成員又是一個struct 類型,而struct是個復合類型,因此,這里面是一類比較復雜的嵌套類型。

2 數組的方法調用(array method)

上面例子用到了‘sort’這個方法(第25行)。這里面,又涉及到了嵌套類型,因為queue的成員是struct 類型的。而struct屬于復合類型,是不能直接比較的。IEEE1800標準引入了 with (item.mebmer...),可以針對復合類型的某個成員進行排序操作。

3 垃圾回收

SystemVerilog類似Java,它不需要用戶自己進行類似delete操作。這就要依賴仿真器提供垃圾回收的功能。否則在運行時會出現內存泄漏。

4 進程管理

上述例子中的task ‘main_phase’ 中用到了‘fork join‘,(第33-36行)。仿真器需要有一套進程管理來支持這個用法。進程管理實現的是否高效,將直接影響到仿真器的性能。

除此之外,還有很多技術點需要考慮,這里就不贅述了。總之,一個對SystemVerilog全面覆蓋的頂層設計,對支持UVM非常關鍵。

03. SystemVerilog的scheduling semantics

當人們理解SystemVerilog時,可能會比較專注該語言增加的語法部分,但是這里要注意的是,SystemVerilog的引入仍然是為了驗證硬件,而不是為了開發軟件。它是為了豐富Testbench做驗證的能力。SystemVerilog在豐富了語法的同時,也會帶來其他的問題,這就需要制定更多的規范來定義這些新出現的狀況,IEEE1800 scheduling semantics就是一個。

Phil Moorby 是Verilog的發明者。他寫了Verilog的第一個仿真器——Verilog-XL。Verilog的仿真從誕生起,其實就存在一個問題,那就是如何確保Verilog仿真器軟件的行為和硬件的行為一致,否則仿真就沒有意義。為此,需要制定一些細則,來規范Verilog在scheduling 上的行為。其中,大家比較熟悉的非阻塞賦值(non-blocking assignment), 就是Phil 引入的,其目的就是確保Verilog在仿真時序邏輯時的行為和硬件一致。

2002年,Phil Moorby加入Synopsys, 從事SystemVerilog語言的定義和開發工作。筆者曾有幸和Phil共事,參與了早期SystemVerilog相關feature(如clocking block等)的開發。這些新的SystemVerilog語法的引入會對Simulator的行為帶來一定的不確定性,為此,Phil對原有的Verilog scheduling semantics進行了擴展來消除這些不確定,其中包括Testbench和DUT之間能進行精準的無歧義的數據通信。這些思想,后來都被Accellera國際電子行業標準化組織采納,變成了今天IEEE1800 scheduling semantics 的一部分。

以下是1800 scheduling的semantic,來自 IEEE1800-2017, page 64——

1680850360749255.jpg

04. GalaxSim對SystemVerilog的設計思路

前面提到,SystemVerilog并非誕生起就一成不變的,而是在不斷變化發展。因此,作為后來者,芯華章開發的高性能數字仿真器GalaxSim,在開發SystemVerilog時,不存在EDA巨頭公司的歷史包袱,可以從一開始,就把SystemVerilog當作一個整體來支持,而不是先支持老的Verilog部分,再支持新的SystemVerilog 部分。這里面包括了以下一些設計上的考慮:

1) 更精準的SytemVerilog語義解析

SystemVerilog經過了十幾年的使用和演變,有些早期的語義可能有了新的含義。此外,很多SystemVerilog的語法是在先有了EDA工具支持后再寫入標準的。我們在實現SystemVerilog支持時,會根據其背后所體現的實際驗證應用背景來設計仿真行為,而不是簡單地做一個語言層面的編譯器。這樣,我們確保了GalaxSim在SystemVerilog上的仿真行為上和國際主流仿真工具兼容。

2)更加原生的支持

EDA主流的仿真器在支持SystemVerilog上都走了很長的一段路,這是因為SystemVerilog本身并沒有穩定下來。往往會出現的情況是,既有的仿真器的infrastructure無法滿足新出現的SystemVerilog的語法。

GalaxSim不會面臨這個問題,因為我們在設計其基礎結構的時候,就會把SystemVerilog需要的各種data type一并考慮進去。這樣的設計帶來的優勢就是開發更加流暢,質量更高。

3)更加優異的性能

性能始終是仿真器的靈魂。然而,對于SystemVerilog這種相對較新的語言,其性能往往不如純Verilog。這是因為,它們往往是先開發feature,確保功能的完備性;直到后來在客戶端遇到了性能問題,再進行性能優化甚至重構。

GalaxSim對SystemVerilog的支持,在設計之初,就根據目前的設計規模,將性能問題與功能同步設計,確保4大性能指標(Compile Time、Compile Memory、Run Time、Run Memory)比肩甚至超越國際主流仿真器。

4)更加貼近驗證的scheduling semantics

SystemVerilog的目的是為了驗證。因此,仿真器對scheduling的要求是非常嚴格的。有些甚至并沒有非常明確地寫在標準里,但是已經被業內主流EDA企業在事實上使用了。這些規范都是被數十年客戶檢驗過,也是在實際應用中必須遵守的“戒律”。

05. 總結

SystemVerilog作為最復雜的語言之一,是國產數字仿真器開發的第一道門檻。如果LRM(語言參考手冊)的覆蓋率不夠,就會阻礙仿真器的商用推廣。但從上文的分析中不難發現,實現復雜的SystemVerilog需要巨大的工程量。如何在紛雜的SystemVerilog語法中將主流UVM所需的部分,高質高量地實現出來,是GalaxSim為代表的國產EDA數字仿真器,需要解決的首要問題。

芯華章核心研發團隊曾在跨國公司成功主導過大型仿真器項目研發,對驗證語言、方法學、仿真器核心構架、算法、優化有著豐富的技術儲備,尤其在SystemVerilog 方面有著多年的耕耘,因此能將復雜的SystemVerilog背后的“榫卯”嵌套結構梳理清楚,進而可以在清晰的架構上,一步到位支持幾乎所有SystemVerilog的語法。 實現對SystemVerilog語法的支持,僅僅使得仿真器可以編譯用戶的設計了。要想使仿真器真正發揮驗證作用,還需要在SystemVerilog的基礎上搭建各種應用,如Debug、SVA、Coverage等,才能最終使仿真器成為真正的仿真平臺。此外,性能始終是仿真器的核心。在完成SystemVerilog支持的同時,如何結合調試(Debug),提升性能方面的功能,也是需要面對的重大課題。

責任編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 仿真器
    +關注

    關注

    14

    文章

    1036

    瀏覽量

    85263
  • eda
    eda
    +關注

    關注

    71

    文章

    2917

    瀏覽量

    177568
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    cocotb中的基礎語法SystemVerilog中的常用語法對照總結

    對于信號的讀取,我們在SystemVerilog中,可以直接讀取信號值,而在cocotb中,其為接口變量提供了value方法屬性用于獲取信號值。
    的頭像 發表于 07-21 09:07 ?4298次閱讀
    cocotb中的基礎<b class='flag-5'>語法</b>與<b class='flag-5'>SystemVerilog</b>中的常用<b class='flag-5'>語法</b>對照總結

    systemverilog--語法詳解

    官方的一個systemverilog詳解,很詳細。推薦給打算往IC方面發展的朋友。
    發表于 06-02 09:30

    systemverilog學習教程

    systemverilog的一些基本語法以及和verilog語言之間的區別。
    發表于 04-01 14:24

    使用SystemVerilog來簡化FPGA中接口的連接方式

    開發,但現在Vivado對SystemVerilog的支持已經比較好了,完全可以使用SystemVerilog寫出可綜合的FPGA程序,而且FPGA開發中只會使用的SystemVerilog
    發表于 01-08 17:23

    剛裝IC617建一個systemverilog的cell總是報語法錯誤怎么去解決?

      如下圖,先建一個systemverilog的cell,但是會報錯,求幫解決下。寫個最簡單的也會報語法錯誤。    
    發表于 06-24 06:24

    Systemverilog覆蓋率的合并和計算方式

      在systemverilog中,對于一個covergroup來說,可能會有多個instance,我們可能需要對這些instance覆蓋率進行操作。  只保存covergroup type的覆蓋
    發表于 03-21 14:24

    SystemVerilog的斷言手冊

    SystemVerilog Assertion Handbook1 ROLE OF SYSTEMVERILOG ASSERTIONSIN A VERIFICATION METHODOLOGY
    發表于 07-22 14:12 ?20次下載

    SystemC 和SystemVerilog的比較

    就 SystemC 和 SystemVerilog 這兩種語言而言, SystemC 是C++在硬件支持方面的擴展,而 SystemVerilog 則繼承了 Verilog,并對 Verilog 在面向對象和驗證能力方面進行了擴
    發表于 08-16 10:52 ?5514次閱讀

    cocotb中的基礎語法

    cocotb的出現使得我們能夠在做RTL仿真驗證時依托Python來進行測試用例的構建,當我們習慣了用Verilog、SystemVerilog來構建測試用例時,切換到cocotb后最直觀的方式便是我們能夠建立cocotb中的基礎語法
    的頭像 發表于 07-21 09:18 ?3017次閱讀

    簡述SystemVerilog的隨機約束方法

    上一篇文章介紹了SystemVerilog的各種隨機化方法,本文將在其基礎上引入SystemVerilog的隨機約束方法(constraints)。通過使用隨機約束,我們可以將隨機限制在一定的空間內,有針對性地提高功能覆蓋率。
    的頭像 發表于 01-21 17:03 ?2672次閱讀

    解碼國產EDA數字仿真器系列之二 | 如何實現全面的SystemVerilog語法覆蓋

    SystemVeirlog的全面支持是開發商用仿真器的第一道門檻。市面上可以找到不少基于純Verilog的仿真器,但是真正能完整支持SystemVerilog 的仍然屈指可數。如何全面地支
    發表于 04-07 14:40 ?955次閱讀
    解碼國產EDA數字仿真器系列之二 | 如何<b class='flag-5'>實現</b><b class='flag-5'>全面的</b><b class='flag-5'>SystemVerilog</b><b class='flag-5'>語法</b><b class='flag-5'>覆蓋</b>?

    EDA數字仿真器:SystemVerilog全面覆蓋編程案例

    數字芯片的驗證技術是隨著Verilog語法的演變而演變的。最早,Verilog是完全用來描述(Model)硬件的,因此又叫HDL(Hardware Description Language硬件描述語言)。
    發表于 04-07 16:50 ?1283次閱讀

    SystemVerilog實用知識點:覆蓋率之Function Coverage

    SystemVerilog是一名芯片驗證工程師,必須掌握的一門語言,其中Function Coverage是必須要懂的知識點之一;
    的頭像 發表于 06-04 16:30 ?9519次閱讀
    <b class='flag-5'>SystemVerilog</b>實用知識點:<b class='flag-5'>覆蓋</b>率之Function Coverage

    SystemVerilog覆蓋率建模方式

    為了確保驗證的完備性,我們需要量化驗證目標。SystemVerilog提供了一套豐富的覆蓋率建模方式。
    的頭像 發表于 06-25 10:44 ?1546次閱讀

    SystemVerilog的隨機約束方法

    上一篇文章《暗藏玄機的SV隨機化》介紹了SystemVerilog的各種隨機化方法,本文將在其基礎上引入SystemVerilog的隨機約束方法(constraints)。通過使用隨機約束,我們可以將隨機限制在一定的空間內,有針對性地提高功能
    的頭像 發表于 09-24 12:15 ?2431次閱讀
    主站蜘蛛池模板: 国产亚洲欧美一区二区 | 不卡一区在线观看 | 四虎4hu影库永久地址 | 激情福利网站 | 有没有免费的视频在线观看 | 国产伦精品一区二区三区 | 中国一级特黄真人毛片 | 精品国产柚木在线观看 | 国产小视频在线高清播放 | 久久国产午夜精品理论片34页 | 国产黄mmd在线观看免费 | 天天夜夜狠狠一区二区三区 | 丁香五月欧美成人 | 宅男lu66国产在线播放 | 亚洲一区二区在线播放 | 亚洲第一狼人社区 | 91大神精品在线观看 | 亚洲成人免费看 | 99香蕉精品视频在线观看 | 激情综合五月网 | 色视频网站大全免费 | 色播影院性播免费看 | 伊人亚洲 | 一区二区三区高清在线 | 天天透天天操 | 第九色 | 国产激情久久久久影院小草 | 欧美四色 | 在线播放免费观看 | 亚洲国内精品久久 | 日本一区二区三区在线网 | 四虎最新网站 | 手机看片国产精品 | 色播在线永久免费视频网站 | 亚洲成人网在线观看 | 免费国产黄网站在线观看视频 | 欧美ol丝袜高跟秘书在线播放 | 亚洲另类电击调教在线观看 | 国产在线观看www鲁啊鲁免费 | 国产亚洲高清视频 | 9984四虎永久免费网站 |