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

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

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

3天內不再提示

淺談System Verilog的DPI機制

冬至子 ? 來源:IC驗證者之家 ? 作者:一只特立獨行的豬 ? 2023-05-23 15:39 ? 次閱讀

在上一篇《淺談建模的意義和驗證的危機》中,曾大肆鼓吹“對于認知DUT,行為建模既是方法,也是目的”,“心中沒有她,又怎能待好她”,呼吁IC驗證者要通過手寫DUT的reference model來實現對DUT的規格特性的充分理解。然而,此篇內容卻涉及調用第三方的代碼作為reference model。此刻耳畔仿佛想起了啪啪的打臉之聲。

System Verilog(SV)把其他編程語言統一成為外語,Foreign Programming Language(FPL)。Direct Programming Interface(DPI)是SV定義的一種專門集成外語代碼和處理SV之外的業務功能的機制,主要負責和廣大的外部語言代碼進行溝通和交涉。如果用西安的各所大學來比喻SV的各個機制功能,那么DPI對應的大致就是西安外事學院了。

海納百川,有容乃大是川大的校訓。SV的制定者希望Test Bench能兼濟包容,也不希望所有組件和代碼都只能是由SV語言開發。并且不得不承認,通過集成C/C++/Matlab的代碼,會縮短搭建驗證平臺的時間,減少IC驗證者的工作量。

在DPI機制中,仿真系統的資源被分成獨立的兩部分:SV-domain(SV語言區域)和FPL-domain(其他語言區域)。這些資源包括緩存數據和變量的存儲資源,也包括程序編譯鏈接和執行的運行資源。在驗證平臺中調用FPL程序代碼時要遵循黑盒原則,即FPL代碼涉及的業務功能是獨立的,與SV部分要充分解耦。在SV和FPL中無法直接訪問對方代碼中的變量。

他們就像白天和黑夜。雖然黑夜給了我們黑色眼睛,我們也曾用它去尋找光明,但是黑夜永遠不懂光明,正如白天不懂夜色的黑。

image.png

System Verilog 3.1版本支持的FPL只有C。其他語言可以通過C寫的wrapper包裝一下實現跟SV的通信。

DPI專門定義了一些數據類型,這些數據類型與SV的多種數據有對應關系。在C程序的接口處,使用這些專門定義的參數,利用數據類型的對應關系,實現SV-domain和C-domain的通信。為了便于使用,SV還為某些重要的數據類型,量身定制了一系列的操作和處理函數。如何使用這些數據類型和相應的操作函數實現兩個domain的數據傳遞和轉換,是DPI關鍵技術點,也是本文的干貨所在。

通常情況,C的函數都是不消耗仿真時間,即延時是0,瞬間完成,就像在SV中調用function一樣。只不過這個function的端口類型只有input,output和inout,不支持ref。

為了把C語言的數據類型能映射到SV語言,SV定義了一個文件svdpi.h。在該文件中定義了許多的數據類型,這些類型基本可以和C語言的數據類型一一對應。

image.png

上面表格是我挑出的比較重要的幾種數據類型,而其中比較重要的是open array[]。

綠皮書有一章節(12.5)專門介紹它,在svdpi.h中也專門為它定義了很多的微操函數。

在C語言里面,函數接口的參數會劃分方向,對于輸入的變量,加上const,一旦在C程序中,對輸入變量進行賦值操作,編譯器會報錯。我覺得犯這種錯誤的概率太低,沒必要加。問道于何同學,覺得這種錯誤還是比較常見的,建議加上。

image.png

在SV角度看,open array[ ]就是動態數組(dynamic array)。SV之所以選擇動態數組來進行SV和C之間的數據內容傳遞,是因為動態數組的深度可以靈活改變。只要在定義dpi接口的時候,把動態數組的名稱和C的對應的數組關聯上,那么只需要在不同的場景中,通過動態的改變動態數組的深度,就可實現SV和C的數據傳遞。

隊列(queue)表示有意見,嘟嘟囔囔的撅著小嘴問,為啥不選我?

先坐下吧,閔老師扶了扶眼鏡說,SV和C的數據存儲雖然都放在內存中,但是系統需要把它們倆的存儲空間分開,最忌諱內存越界。動態數組在每次使用之前,需要先通過new[N]來分配空間,之后動態數組的內存空間就確定了。然而隊列的存儲空間是一直可變的,SV雖然會初始時刻給你分配一定空間,但是當元素把空間裝滿后,SV會自動分配更多的空間。這樣就容易造成內存越界。

關聯數組(associative array)也想發言,把肥嘟嘟的小手舉得高高的。

先把手放下來,閔老師笑著輕輕擺了擺手,你太離散了,存儲的都是稀疏和分散的數據,SV仿真器要采用tree或hash table的方式來存放,會帶來額外的存儲開銷。

以上就是DPI的相關背景介紹。干說不練假把式,我們舉個例子吧。

如下圖所示,peak_find是一個matlab函數,輸入變量signal包含多個無符號數據,經過一系列運算和處理,輸出4個無符號數據到變量peak_two之中。

image.png

將該函數集成到SV的Test Bench中,使用matlab engine的方式需要定義一個c程序將其包起來,名稱如下所示。

void peak_find_dpi(const svOpenArrayHandle signal_i, svOpenArrayHandle peak_two_o);

其接口參數就用到了開放數組。

該C函數可分為如下幾步:

image.png

圖4 dpi.c的流程圖

站在SV角度看,C程序是外來的,是舶來品,需要“進口”,即import。代碼只需一行: import “DPI-C” function void name_of_your_c_function();

假如我們國家只能進口美國的商品,其他國家的貨物就得都先到美國,再來中國。同樣的道理,用matlab engine的方式,調用matlab程序,得用C程序先包裝一下。

matlab程序如此,C++程序亦是如此。

對于C程序,仿真時通常是用GCC編譯,而matlab程序是用到了mathWorks公司的MATLAB工具,SV仿真需要用到Synopsys公司的VCS工具。夜路走的多了難免遇到鬼,工具用的多了也難免有版本問題。

so文件報錯是一個典型的工具版本不一致引入的問題。如下圖所示。這個問題其實是IT問題,不是IC驗證技術問題,但是它跟IC驗證息息相關。

image.png

就像神農嘗百草,梅同學通過嘗試多個版本的MATLAB,GCC和VCS,最終發現GCC4.8.5+MATLAB2015B+2017以上VCS的組合可以比較穩妥。同時把/usr/lib64/libstdc++.so也要更新到6.0.21。遂搞定這個問題。

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

    關注

    29

    文章

    1366

    瀏覽量

    111957
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140660
  • VCS
    VCS
    +關注

    關注

    0

    文章

    80

    瀏覽量

    9862
  • DPI
    DPI
    +關注

    關注

    0

    文章

    39

    瀏覽量

    11682
  • DUT
    DUT
    +關注

    關注

    0

    文章

    190

    瀏覽量

    12873
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    淺談公共機房樣機制作及日常維護

    淺談公共機房樣機制作及日常維護隨著電腦和網絡的應用日益普及, 電腦在日常生活中扮演著越來越重要的角色,而學校的教育,無論是高校還是中小學,公共機房都是一個不可缺少的教學實踐基礎硬件設備。而如何高效
    發表于 10-10 15:04

    調整屏幕DPI和旋轉方向

    =noro.sf.lcd_density=200保存更改再重啟開發板即可。要恢復為開機模屏顯示,使用光盤中的原始版本,或反向操作即可。更改屏幕DPI打開文件系統下的 /system/build.prop,將如
    發表于 07-15 10:11

    調整屏幕DPI和旋轉方向

    =noro.sf.lcd_density=200保存更改再重啟開發板即可。要恢復為開機模屏顯示,使用光盤中的原始版本,或反向操作即可。更改屏幕DPI打開文件系統下的/system/build.prop,將如下行:setprop
    發表于 10-10 16:13

    Modelsim XE是否支持System Verilog

    information:-1.Does itsupport System verilog forverification?2. Code coverage support.3.Assertion support.Whichversionof Modelsim XE su
    發表于 11-27 14:20

    System Verilog常見問題及語言參考手冊規范

    本文討論了一些System Verilog問題以及相關的SystemVerilog 語言參考手冊規范。正確理解這些規格將有助于System Verilog用戶避免意外的模擬結果。
    發表于 12-11 07:19

    System Verilog問題和語言參考手冊規范

    本文討論了一些System Verilog問題以及相關的SystemVerilog 語言參考手冊規范。正確理解這些規格將有助于System Verilog用戶避免意外的模擬結果。
    發表于 12-24 07:07

    求大佬分享一些System Verilog的學習經驗

    求大佬分享一些System Verilog的學習經驗
    發表于 06-21 06:29

    Verilog Digital System Design

    This book is on the IEEE Standard Hardware Description Languagebased on the Verilog® Hardware
    發表于 07-23 08:59 ?0次下載
    <b class='flag-5'>Verilog</b> Digital <b class='flag-5'>System</b> Design

    VHDL,Verilog,System verilog比較

    本文簡單討論并總結了VHDL、Verilog,System verilog 這三中語言的各自特點和區別 As the number of enhancements
    發表于 01-17 11:32 ?0次下載

    基于System Verilog中的隨機化激勵

    基于System Verilog中的隨機化激勵
    發表于 10-31 09:25 ?9次下載
    基于<b class='flag-5'>System</b> <b class='flag-5'>Verilog</b>中的隨機化激勵

    淺談Verilog-95、Verilog-2001與System Verilog之間的區別

    發展歷史 1984年,Verilog開始作為一種專用的硬件建模語言使用,取得了相當大的成功。1990年,Cadence Design Systems公司將該語言面向公眾開放,作為試圖與VHDL相抗衡
    的頭像 發表于 06-21 14:46 ?1.1w次閱讀

    學會這些System Verilog方法,芯片驗證入門沒問題

    一個掌握Verilog語言的工程師初次看SystemVerilog都會有這樣的感受,這就是Verilog啊,很容易啊,So easy啊。沒錯,確實是這樣,System Verilog
    的頭像 發表于 12-09 15:08 ?4760次閱讀

    System Verilog的概念以及與Verilog的對比

    Verilog模塊之間的連接是通過模塊端口進行的。 為了給組成設計的各個模塊定義端口,我們必須對期望的硬件設計有一個詳細的認識。 不幸的是,在設計的早期,我們很難把握設計的細節。 而且,一旦模塊
    的頭像 發表于 06-12 10:05 ?1870次閱讀

    verilog與其他編程語言的接口機制

    Verilog是一種硬件描述語言,用于描述數字電路的行為和結構。與其他編程語言相比,Verilog具有與硬件緊密結合的特點,因此其接口機制也有一些與眾不同之處。本文將詳細介紹Verilog
    的頭像 發表于 02-23 10:22 ?1057次閱讀

    system verilog語言簡介

    ICer需要System Verilog語言得加成,這是ICer深度的表現。
    發表于 11-01 10:44 ?0次下載
    主站蜘蛛池模板: 亚洲欧美啪啪 | 夜夜澡人人爽人人喊_欧美 夜夜综合网 | 久久久久免费精品国产小说 | 大香伊在人线免费 | 亚洲码欧美码一区二区三区 | 亚洲成a人片在线观看导航 亚洲成a人片在线观看尤物 | 日韩三级毛片 | 大尺度视频在线 | 九九热精品在线观看 | 亚洲国产情侣偷自在线二页 | 天天槽天天槽天天槽 | 免费免费啪视频视频观看 | 大色综合 | 国模精品视频一区二区三区 | 老湿成人影院 | 狠狠色丁香婷婷综合视频 | 久久精品国产99国产精品澳门 | 国产九色在线 | 国产三级久久久精品三级 | 男人午夜视频在线观看 | 哪个网站可以看av | 伊人伊成久久人综合网777 | 伊人网站在线 | 李老汉的性生生活2 | 岛国片欧美一级毛片 | 插插操操| 色老二精品视频在线观看 | 亚洲另类激情综合偷自拍 | 一级视频在线播放 | 男女性gif抽搐出入 男女性高爱潮免费的国产 男女性高爱麻豆 | 天天看黄色 | 二级特黄绝大片免费视频大片 | 三级理论在线播放大全 | 五月天婷婷网亚洲综合在线 | 久久精品夜夜夜夜夜久久 | 精品久久久久久久久久 | 亚洲免费在线观看 | 国产色视频在线 | 成人性欧美丨区二区三区 | 欧美综合色 | 欧美午夜剧场 |