问题产生

在学习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: MyHDL的issue上看到了使用iverilog-vpi进行编译,于是输入命令:iverilog-vpi myhdl_vpi.c,果然得到了想要的myhdl_vpi.vpi文件,重命名为myhdl.vpi之后,移动到了和system.vpi同级目录下,再进行测试,结果成功。


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

  1. 安装llvmlite报错解决:RuntimeError: llvm-config failed executing, please point LLVM_CONFIG to the path for

    晚上在安装llvmlite时报错: zhang@debian:~$ pip3 install llvmlite==0.16.0 Collecting llvmlite==0.16.0Using cac ...

  2. Android 工程报错解决 Unable to resolve target 'android-17'

    转自:http://www.cnblogs.com/csulennon/p/3705177.html 换了系统后,重新安装了Android SDK和ADT插件,导入之前的工作空间.居然发现所有的And ...

  3. selenium+python,解决selenium弹出新页面,无法定位元素的问题(报错:Unable to locate element:元素)

    selenium+python,解决selenium弹出新页面,无法定位元素的问题(报错:Unable to locate element:元素) 参考文章: (1)selenium+python,解 ...

  4. 解决移动端报错:Unable to preventDefault inside passive event listener due to target being treated as……

    解决移动端报错:Unable to preventDefault inside passive event listener due to target being treated as-- 报错如下 ...

  5. Git报错解决:fatal: unable to access ‘https://github.com/...‘: OpenSSL SSL_read:..., errno 10054

    Git报错解决:fatal: unable to access 'https://github.com/-': OpenSSL SSL_read: Connection was reset, errn ...

  6. pip安装报错: unable to creat process using ‘“‘的解决方法

    pip 安装库的时候报错:unable to creat process using '"' 相应地,不管是 pip -V 还是 pip list 都报同样的错误,但是  where pip ...

  7. 导入keras训练好的模型报错解决OSError: Unable to open file (unable to open file: name = ‘model_3.h5’)

    导入keras训练好的模型报错解决) 开心撒花 切入正题 开心撒花 第一次写博客,想分享记录一下自己写程序.跑程序过程中的问题和收获.哈哈哈哈 开心. Markdown编辑器 第一次用感觉很友好啊.喜 ...

  8. 【报错fatal: unable to access ‘https://github解决办法】

    报错fatal: unable to access 'https://github解决办法 方法一:修改host文件 方法二:把命令行里的http改为git重新执行 方法一:修改host文件 把140 ...

  9. 解决Ubuntu报错 E: Unable to locate package yum

    ​ 开门见山,Ubuntu的包管理工具是apt-get,所以不必再安装yum.如果要安装其他包需要使用apt-get命令. # 这里以locate命令为例 sudo apt-get install m ...

最新文章

  1. gin使用 GET, POST, PUT, PATCH, DELETE, OPTIONS
  2. 在已安装win10环境中利用EasyBCD引导安装Ubuntu18.04(亲自测试,都是血和泪)
  3. Android深入浅出系列之实例应用—弹出消息Toast对象的使用自定义方式(二)
  4. 关联数组(associative array)
  5. Javascript面向对象二
  6. sps的process插件安装包_SPSS的Process插件下载和安装
  7. 4k hidpi 黑苹果_不折腾不舒服 篇一:2K显示器不得不说的尴尬及解决方案,聊聊MacOS开启HiDPI...
  8. 当代考研人的发疯行为!笑到打鸣哈哈嗝哈哈嗝!
  9. 如何构建OctoberCMS Widget插件
  10. 打开计算机文件反应慢怎么解决方法,word文档打开速度慢的几个原因和有效解决方法...
  11. 调用微信支付api实现用户扫描二维码支付订单
  12. cocos2d-x lua 框架中 self.super.ctor(self, app) 和 self.super:ctor(app) 的区别
  13. 数据结构与算法之美笔记——基础篇(下):图、字符串匹配算法(BF 算法和 RK 算法、BM 算法和 KMP 算法 、Trie 树和 AC 自动机)
  14. Android Calander Event
  15. 【IPv6】IPv6有无状态地址分配及IPv6路由
  16. java 限制输入两位数_Java 控制数字输入、控制输入长度的方法 | 学步园
  17. php 合成微信头像,PHP 图片合成、仿微信群头像的方法示例
  18. 网络最大流和最小费用最大流
  19. 【沧海拾昧】微机原理:可编程计数器/定时器8253芯片
  20. 拿板砖的老股民说股市

热门文章

  1. 华为无线AC6005+(4个)AP配置双WiFi模板案例
  2. c语言编辑问道注册登录程序,C语言实现简单的注册登陆功能
  3. 虚拟局域网VLAN的简介
  4. 资本正在转向,独角兽们怎么办?
  5. Android设置透明状态栏以及隐藏状态栏
  6. 使用Django1.7开发熙鱿记官网
  7. cadence 旋转快捷键_cadence快捷键总结(转)
  8. Flexsim常见问题处理
  9. 怎么选择好用的亚马逊ERP系统有什么功能
  10. 考拉海购技术支持的前世今生