报错解决: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.

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

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


你可能感兴趣的:(Verilog/FPGA,笔记,fpga开发)