基于VCS使用VPI+PLI/DPI在verilog中调用C程序进行cover property驱动的仿真控制
生活随笔
收集整理的這篇文章主要介紹了
基于VCS使用VPI+PLI/DPI在verilog中调用C程序进行cover property驱动的仿真控制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文介紹一種在verilog中,運用PLI+VPI機制調用C程序獲得cover property的覆蓋情況從而控制仿真的方法,其中的C程序,可以接受傳參,且可以有返回值,仿真器選擇的VCS。
?
?
在平臺中調用即可獲得所傳property的覆蓋情況:
var=$hello("top.xxx.assert_module.property_inst_name");?
大功告成!
參考資料:
hello world
Verilog PLI Tutorial
上面的方法不好用,現在都是用DPI機制了,可以參考SV綠皮書C語言部分,只需兩步:
1.C程序部分修改:
int get_cover_cnt_calltf(char *cp_name) {vpiHandle hd;hd=vpi_handle_by_name(cp_name,Null);//根據string獲取句柄//從第一個形參獲取傳入的property層級路徑名,//注意使用bind時,property的層級路徑是在被bind的instance下面,如:top.xxx.assert_module.cover_namereturn vpi_get(vpiAssertSuccessCovered,hd);//獲取此property的success次數 }2.SV部分修改:
import "DPI-C" function int get_cover_cnt_call_tf(input string cp_name);//使用sv語法... get_cover_cnt_call_tf("top.xxx.cp_name");//注意沒有$符號?
總結
以上是生活随笔為你收集整理的基于VCS使用VPI+PLI/DPI在verilog中调用C程序进行cover property驱动的仿真控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【word 2019 for Mac实用
- 下一篇: [MySQL] 零基础学MySQL 08