- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内容 PLI介绍 简单举例(hello程序) 编写用户应用程序 注册用户程序 生成共享链接库 调用用户任务 PLI介绍 PLI为用户提供一些访问仿真环境的接口; PLI接口函数库:access routine,利用这些接口函数可以在你的C函数里接收verilog里传递的信号及属性,还提供了一些接口函数修改verilog的属性值。 用户可以利用PLI的接口函数库创建自己的系统任务,实现功耗分析,代码覆盖率分析等等,类似于一些常见任务:$fsdbDupmfile ,$fsdbDumpvars,$display,$monitor等等。 简单举例 1)hello.c : #include stdio.h void hello_pli() { io_printf(“hello , welcome to PLI world”); } 2)在veriuser.c文件里注册你的hello程序,以便于verilog仿真和编译工具识别: p_tfcell helloboot () = { static s_tfcell veriusertfs[ ] = { { usertask, 0, 0, hello_pli, 0, “$hello”, 1}, {0} /*** final entry must be 0 ***/ }; } 4) 编译hello.c和veriuser.c文件生成共享库 3) Verilog 调用刚注册的用户任务: Module test; initial begin $hello; end endmodule 编写用户程序 利用C/C++编程语言编写PLI程序,可以调用PLI提供的接口函数库; 接口函数库包括三大类:acc,tf,vcl acc:获取仿真系统传递的参数及其属性; tf:获取仿真平台的参数,如仿真时间等等; vcl:监控仿真系统信号 关于这部分前面已经列举了hello_pli程序; 注册用户程序 这时需要用到veriuser.c文件,具体仿照pli下的模板,类似于: p_tfcell helloboot () = { static s_tfcell veriusertfs[ ] = { { usertask, 0, 0, hello_pli, 0, “$hello”, 1}, {0} /*** final entry must be 0 ***/ }; } 其中红色字体部分用户可以自己定义 生成共享链接库 静态链接和动态链接 静态链接:用户程序,veriuser.c和用户仿真用verilog文件一起编译,生成可执行文件,实现静态链接;这种方式有个明显缺点,当任何一个文件改变时,都需要重新编译,实际中用的比较少。 动态链接:把用户程序和veriuser.c编译成共享链接库(.so文件),一般情况下,用户程序和veriuser.c 文件很少会改变,这个时候用户只需要修改仿真用的verilog文件即可,需要在用户仿真文件中调用用户编写的任务时,只需通过loadpli命令链接共享库即可,这种方式叫做动态链接。 生成动态链接库可以通过命令行的方式。 命令行方式:通过vconfig配置命令,会有一些选项,和输入需要编译的文件,只需按照提示输入即可。 调用用户任务 推荐使用loadpli命令,+loadpli=youplilib.so:bootname 在verilog仿真文件里加进自己的任务名和参数即可 * *
文档评论(0)