zoukankan      html  css  js  c++  java
  • 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.4win64sccom": 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.4gcc-4.5.0-mingw64in。

    之后不需要将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库中的这些东西。

  • 相关阅读:
    业务逻辑层封装
    了解ASP.NET MVC几种ActionResult的本质:EmptyResult & ContentResult
    Facade外观模式
    了解ASP.NET MVC几种ActionResult的本质:FileResult
    示例代码浏览器5.4功能更新
    面试体验:Microsoft 篇
    Mono 2.11.3 发布包含微软的 Entity Framework
    系统架构设计师
    对数据访问层的抽象中
    说说项目中的插件思想
  • 原文地址:https://www.cnblogs.com/studyforever/p/5132452.html
Copyright © 2011-2022 走看看