动态链接PLI库和动态加载PLI库的区别

 我来答
就烦条0o
2017-11-29 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46499
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
动态链接库,生成的库文件名必须是libpli.so。在函数编写时不需要boot strap函数,只需要用标准的veriuser表即可,例子如下:
s_tfcell veriusertfs[] =
{
{usertask, 0, tg_check, 0, tg_call, 0, "$my_task1", 1},
{usertask, 0, 0, 0, tg_summary_call, 0, "$my_task2", 0},
0 /*** final entry must be 0 ***/
};
在用命令行调用时一定要先将生成的库的路径定义在LD_LIBRARY_PATH。如
setenv LD_LIBRARY_PATH my_lib_path:$LD_LIBRARY_PATH
然后verilog或ncverilog会自动到my_lib_path下找到libpli.so.
动态加载库。它没有veriuser表,而是有一个boot strap函数。在boot strap函数中定义新系统调用的指针入口。函数如下:
p_tfcell my_bootstrap () {
static s_tfcell my_tfs[] =
{
{usertask, 0, tg_check, 0, tg_call, 0, "$my_task1", 1},
{usertask, 0, 0, 0, tg_summary_call, 0, "$my_task2", 0},
{ 0 } /*** final entry must be 0 ***/
};
return (my_tfs);
}
编译时可以指定库文件名,如 my_lib.so
在命令行调用时可以先定义LD_LIBRARY_PATH,也可以不定义。
运行时要在命令行上要加入选项:
+loadpli1=my_lib_path/my_lib:my_bootstrap
如:
ncverilog +loadpli1=my_lib_path/my_lib:my_bootstrap test.v
网易云信
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同... 点击进入详情页
本回答由网易云信提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式