運行cadence dpi例子出現的問題

來源:互聯網
上載者:User

做ASIC驗證的童鞋們可以學學SystemVerilog DPI,它允許Verilog代碼直接調用C或者C++子程式,且比Verilog PLI簡單。與PLI的比較可參考如下文章:
中文:http://www.moditek.com/expofile/stuart-pli-dpi.pdf
英文:http://www.sutherland-hdl.com/papers/2004-SNUG-paper_Verilog_PLI_versus_SystemVerilog_DPI.pdf

最近使用DPI搭了個基於NIST標準的RM以驗證硬體實現後的加密模組blockcipher,import到testbench中的是Crypto++ Library裡不同模式(ECB、CBC等)的加密函數,這樣便可將DUT輸出和RM輸出進行compare了。

初學者一般可以用cadence內建的例子進行學習,例子在cadence工具的安裝目錄/cadence/INCISIV111/doc/dpiEngrNtbk下,有個dpiEngrNtbkp.pdf簡單介紹了各個例子是如何啟動並執行。

在運行cadence內建的dpi的執行個體時,按照pdf說明,有“一步式”(irun)和“四步式”(ncvlog, ncelab, gcc, ncsim)兩種運行方式。“四步式”的時候,有時會出錯,遇到下面的提示:

Unable to load the default library libdpi../libdpi.so: cannot open shared object file:No such file or directory.

顯然是c語言檔案產生的so檔案沒有被ncsim正確load,那麼問題出在哪兒呢?

問題出現在gcc的編譯選項上!linux伺服器一般是64位的,因此用gcc編譯出來的.so共用庫也是64位的,而dpi這個程式本身是32位的,因此程式運行後找不到.so共用庫。只要在pdf上的gcc編譯選項加上"-m32",應該就可以了,如下:

gcc -m32 -fPIC -shared -o libdpi.so adder.c -I $CDS_INST_DIR/tools/inca/include($CDS_INST_DIR為Cadence INCISIV的安裝目錄)

這裡簡單把相應模擬命令羅列一下。

“一步式”的命令如下:

irun -sv top.v adder.c

“四步式”的命令如下:

1 ncvlog -sv top.v2 ncelab -access+RWC work.topincident3 gcc -m32 -fPIC -shared -o libdpi.so adder.c -I $CDS_INST_DIR/tools/inca/include4 ncsim work.top

更多DPI請參考:http://www.doulos.com/knowhow/sysverilog/tutorial/dpi/ 以及SystemVerilog LRM。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.