modelsim+win环境下systemverilog调用c函数
最近为了验证一个ip,需要将ip的输出数据与c model的数据比对,之前采用的是将仿真结果输出,用perl读取结果,与c的输出结果比对,这样做也可以,但是在做遍历测试时,由于数据量较大,就显得不方便了。因此想要在testbench里调用c函数,直接对结果进行测试,如果两边结果不一致再报错。
操作系统是win10,modelsim是10.4版本,tb用system verilog写,调用c函数用DPI接口,非常方便。
如只需要写 import "DPI-C" function int my_function(input int fp);
my_function是我的c函数名,括号里是参数。这样就可以了,这比verilog的vpi的方便很多。
tb写好之后,将所有设计文档包括C,添加到modelsim工程中,在编译时,遇到了问题。
报错:# couldn't execute "D:\modeltech64_10.4\win64\sccom": no such file or directory
这里就是问题所在,google了大量资料也没有搞通,最后查看modelsim的user manual解决了问题。
首先,如果将c函数的设计文档添加到了工程中,在编译的时候肯定需要一个c编译器,猜想这个sccom应该就是相应的c编译器,可是modelsim安装的时候根本就没有这个东西,google了很多资料也没有说明这个东西怎么弄出来,在modelsim.ini文档里倒是找到了说明,后面也做了更改,还是没有解决问题,放弃。
既然modelsim自带的sccom没有,那我需要自己下一个编译器,就是modelsim-gcc-4.5.0-mingw64.zip,他可以帮忙编译c,在modelsim的用户手册里有提到这个,但是注意软件要相互搭配使用,gcc4.5.0的版本是可以搭配modelsim10.4的,亲测没问题,modelsim6.x的版本应该是搭配gcc4.2.x的,没有测试过。
下好该编译器,解压缩,将解压后的gcc-4.5.0-mingw64,放在modelsim安装目录下,我的是D:\modeltech64_10.4。其实个人感觉放在哪里都可以,只要后面把路径设置对就可以。弄好之后想着是否可以在modelsim.ini里面将相关的c compiler的默认路径改为gcc的bin的路径,但是改完之后仍然不work,放弃。个人感觉应该是哪里没改对,应该work的,希望有兴趣的同学继续试试。
最后,注意要将下好的gcc编译器写入环境变量path里,我的是D:\modeltech64_10.4\gcc-4.5.0-mingw64\bin。
之后不需要将c添加到mdelsim工程目录里,只要在modelsim工程中使用命令行输入vlog E:/xwork/design/test.c ,注意路径写对就可以编译成功,成功后是这样的:
# Model Technology ModelSim SE-64 vlog 10.4 Compiler 2014.12 Dec 3 2014
# Start time: 09:52:28 on Jan 15,2016
# vlog -reportprogress 300 E:/xwork/design/test.c
# -- Compiling DPI/PLI C file E:/xwork/design/test.c
# End time: 09:52:29 on Jan 15,2016, Elapsed time: 0:00:01
# Errors: 0, Warnings: 0
然后,就可以正常的仿真了。
总的来说,过程很简单,自己装一个相关的编译器,设好环境变量,然后用命令vlog编译对应的c,然后就可以仿真了。
ps:需要注意的是:
所调用的C函数文档是不需要添加到工程里面的,猜想import "DPI-C" function int my_function(input int fp)这条语句调用的是c编译成功后的.o,当用vlog命令编译C时,输入的是绝对路径,编译成功后会在work库中产生对应的compiler结果.o文件,这些是放在_dpi文件夹下。因此当仿真的时候,调用的都是work库中的这些东西。
modelsim+win环境下systemverilog调用c函数的更多相关文章
- Win环境下的文件读写
在win环境下,有许多方法可以对文件进行读写操作,如MFC 中的CFile类,及一些开源的项目如QT中的QFile.开源的好得是可以多平台,而MFC只是微软自家的东西,对于想写跨平台的人,最好不用MF ...
- 在Win环境下配置java的环境进行开发步骤
1.下载官方JDK,网址如下 http://www.oracle.com/technetwork/java/javase/downloads/index.html
- windows和linux环境下java调用C++代码-JNI技术
最近部门做安卓移动开发的需要调C++的代码,困难重重,最后任务交给了我,查找相关资料,没有一个教程能把不同环境(windows,linux)下怎么调用说明白的,自己在实现的过程中踩了几个坑,在这里总结 ...
- Win环境下Oracle小数据量数据库的物理备份
Win环境下Oracle小数据量数据库的物理备份 环境:Windows + Oracle 单实例 数据量:小于20G 重点:需要规划好备份的路径,建议备份文件和数据库文件分别存在不同的存储上. 1.开 ...
- win 环境下 node.js环境变量
在win 环境下 node.js环境变量有两种情况: (1)开发环境(development):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告. ...
- win环境下安装配置openCV-4.3.0
win环境下安装openCV-4.3.0 首先下载 推荐国内镜像 官网太太太慢了 附上 下载地址 下载之后打开exe解压到目录都是常规操作 环境变量的配置 依次打开到系统变量的path 新建一个路径为 ...
- win环境下使用sqlmap写shell + MYSQL提权(默认就是system权限)
今天在来一个mysql提权 (也可以说是默认system权限提的) 在被黑站点找到一个站 先教拿shell是有注入漏洞的 有可能是root权限的注入点 可以确定是有注入漏洞的 也得到了 物理路径 ...
- win环境下jdk7与jdk8共存问题
1.jdk安装包 安装步骤略 2.jdk等配置文件修改 在安装JDK1.8时(本机先安装jdk1.7再安装的jdk1.8),会将java.exe.javaw.exe.javaws.exe三个文件cop ...
- 以太坊-Win环境下remix环境搭建
一.node.js环境搭建 有多个安装方法,但是注意npm与node版本相关性较强!以下方案较为简便 1.下载网址 http://nodejs.cn/download/ 2.下载window 64位 ...
随机推荐
- C#开发学习——SqlHelper的应用
使用App.config配置文件封装连接字符串,方便重复使用--->添加App.conifg配置文件--->Add : ConnectionString:--->添加引用 <? ...
- jquery中动态新增的元素节点无法触发事件解决办法
在使用jquery中动态新增的元素节点时会发现添加的事件是无法触发的,我们下面就为各位来详细的介绍此问题的解决办法. 比如做一个ajax读取留言列表的时候,每条留言后面有个回复按钮,class为“re ...
- C基于客户端的通信实例
运行环境liunx 需求:客户端对服务器发送一个TCP连接,连接成功之后发送数据并接收返回数据 代码如下: #include <sys/socket.h> #include <net ...
- input失效后,怎么改变它默认就有的灰色
☆☆☆☆☆ input:disabled { -webkit-text-fill-color: rgba(0, 0, 0, 1); -webkit-opacity: 1; } 去掉button/sel ...
- Ajax beforeSend和complete 方法与防止重复提交
$.ajax({ beforeSend: function(){ // Handle the beforeSend event }, complete: function(){ // Handle t ...
- iOS -不同模拟器字体适配
1.先建立一个UILabel的分类 导入#import <objc/runtime.h>头文件 2.在.m文件中写入如下代码 //不同设备的屏幕比例(当然倍数可以自己控制) #define ...
- 《数学分析Analysis》の 学习笔记
>> 皮亚诺(Peano)公理 定义自然数 公理2.1 0是一个自然数. 公理2.2 若n是自然数, 则n++也是自然数. 公理2.3 0不是任何自然数的后继, 即对于每个自然 ...
- win7、win8.1淡绿色护眼模式设置
Win7设置: 右击桌面 -> 个性化 -> 窗口颜色 -> 高级外观设置 选中 -> 项目:窗口 颜色:其他 修改:色调 饱和度 亮度 红 绿 蓝 添加到自定义 ...
- TCP/IP协议中backlog参数
TCP建立连接是要进行三次握手,但是否完成三次握手后,服务器就处理(accept)呢? backlog其实是一个连接队列,在Linux内核2.2之前,backlog大小包括半连接状态和全连接状态两种队 ...
- [其他]Android SDK离线文件路径以及安装更新方法
一.离线安装Android SDK文件路径 转载自:http://www.oschina.net/code/snippet_1539302_45940 Google TV Addon, Android ...