报错解决:Unable to find a `./myhdl.vpi‘ module on the search path.以及 %1 is not a valid Win32 application

问题产生

在学习Verilog进行FFT的时候,从GitHub上找到了一个相关代码fft-dit-fpga。代码中不仅给出了Verilog代码,还附加了一个仿真测试的python程序,就想着运行运行,没想到在

self.dut = Cosimulation("vvp -m ./myhdl.vpi fftexec",
                        clk=self.clk, rst_n=self.rst_n,
                        din=self.in_data, din_nd=self.in_nd,
                        dout=self.out_data, dout_nd=self.out_nd,
                        overflow=self.overflow,
                        )

这里报错了,上网上找了一大圈子也没有直接解决问题。因此记录一下解决过程(在最后)。


相关介绍

MyHDL

  MyHDL是使用python语言进行HDL仿真验证的一个工具包,而且是开源的(GitHub: MyHDL)。真的对我这种Verilog白纸很友善,起码python语法是知道的。 当然,也可以使用Verilog语言写一个test bench。

  想要安装也很简单,有两种方式:

  1. pip install myhdl
  2. 点击上方的GitHub链接,pull到本地,然后进入文件夹python setup.py install

第二种方式也可以进行验证安装是否成功,在{repo_dir}/myhdl/test/core目录下执行python -m pytest

iverilog

  iverilog的全称是Icarus Verilog,是一个轻量的Verilog编译器(感觉和mingw作用挺像的),常常和gtkwave一起使用。安装参考这个。当然,作为乐色的我肯定不会使用Vim等文本编辑器写代码,于是找了在VSC上配置Verilog开发环境的,参考这个

问题解决

./myhdl: Unable to find a `./myhdl.vpi’ module on the search path.

这个从网上找了半天,说是“myhdl.vpi要copy到iverilog能找到的地方”(甜蜜的我怎么知道是哪里?),然后在这里看到说要copy到/usr/lib/x86_64-linux-gnu/ivl/system.vpi一个路径下,于是将这个东西移动到和system.vpi同一级目录下。这样就不报这个错了
(有可能还会说什么“myhdl.vpi.vpi not found”之类的错,把vvp -m ./myhdl.vpi ...改成vvp -m ./myhdl就行了)

%1 is not a valid Win32 application.

完整的是

./myhdl:`E:\iverilog\lib\ivl./myhdl.vpi’ failed to open using dlopen() because:
%1 is not a valid Win32 application.

一看这个感觉就不对,竟然是操作系统不一致。感觉真不会搞了。。不过我在MyHDL官网文档上看到了这样一句话:

In Icarus Verilog, the tasks are defined in a myhdl.vpi module that is compiled from C source code.

在这里插入图片描述

myhdl.vpi可以编译得到,所以我在网上搜myhdl的C语言源代码。结果在GitHub: MyHDL里的cosimulation/modelsim-win目录下找到了myhdl_vpi.c的源文件,觉得大概率就是它了。问题是怎么编译?
看见同级目录下有个Makefile,先用make试了试,可惜不成功。然后在GitHub: MyHDLissue上看到了使用iverilog-vpi进行编译,于是输入命令:iverilog-vpi myhdl_vpi.c,果然得到了想要的myhdl_vpi.vpi文件,重命名为myhdl.vpi之后,移动到了和system.vpi同级目录下,再进行测试,结果成功。
在这里插入图片描述


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A91A981E

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值