0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

硬件开源编程利器MyHDL简介

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2022-03-14 10:30 次阅读

硬件开源编程利器MyHDL简介

Verilog缺点

自从1995年Verilog HDL 1364-1995标准发布至今已经20多年了,说他经久不衰并不恰当,主要是没有新的语言可以替代,现今数字电路高速发展,Verilog的一些缺点暴露的越来越多,下面总结一下:

借用知乎上“马車”的观点:

例化不方便:有人会说,有辅助插件帮你完成 (确实有很多好的插件,emacs verilog-mode , vim 的autoinst) 即便这样,但是对带参数的模块例化, 一对多例化同样需要手动处理,非常不方便

大量的重复声明:无休止的变量声明,无休止的位宽声明,容易出错, 作为一门上古时期的语言,对编译器不能要求太高

函数不能带参数:verilog中函数的使用只能是零零星星,哪怕是一个位宽的变化都要重写函数, 作为一门语言函数不能广泛使用,实为鸡肋

参数化实在是笨:虽然支持参数化,parameter 也只能做一些简单的加减左移操作, 没有基本math包。利用宏做参数化,对于变量比较多的设计,非常复杂,并且也不好维护

错误检测很弱:编译工具对错误的处理比较保守, 这种保守可能也源于语言本身,以及编译器的能力不及。

以下问题需要工程师自己处理

位宽不匹配

input/output端口写反

饱和截位弄错

时钟域问题锁存器检查组合逻辑环自己查....

基于前仿的编译,会遗漏大量的错误,必须要Lint, 综合检查, 费时费力又费钱。

重构、增减信号,Bist/DFT逻辑插入麻烦

需要手动处理, 编写脚本, 即便是脚本也不通用

(内容来源:https://www.zhihu.com/question/440688150 作者:温戈 公众号:OpenIC

基于以上各种各样的缺点,一些基于Verilog语言的第三方语言(本质仍然是HDL)陆续出现,像SpinalHDL,Chisel和本文的主角MyHDL都是这类语言,关于SpinalHDL,Chisel请查看(https://www.zhihu.com/question/440688150)

MyHDL介绍

你能想象有一天能用Python编写“硬件”吗?

(本系列基于MyHDL 0.10.0 版 on Python3

译自 http://docs.myhdl.org/en/stable/manual/intro.html

MyHDL项目的目标是通过python语言的优雅和简洁性来增强硬件设计者的能力。

MyHDL是一种免费、开源的软件包,用于使用python作为硬件描述和验证语言。python是一种非常高级的语言,硬件设计者可以利用它的全部力量来建模和仿真他们的设计。此外,可以将设计转换为verilog或vhdl语言。这提供了一个融入传统设计流程的切入口。

建模

python的强大和清晰性使MyHDL成为高层次建模的理想解决方案。python以为复杂建模问题提供优雅解决方案而闻名。此外,python对于快速应用程序开发和试验是非常优秀的。

MyHDL背后的关键思想是使用python生成器来建模硬件并发性。生成器最好被描述为可(从暂停状态中)恢复函数。MyHDL生成器类似于verilog的always块和vhdl中的过程。

一个硬件模块(MyHDL术语中的块)建模为返回生成器的函数。这种方法使支持诸如任意层次结构、命名端口关联、实例数组和条件实例化等特性变得简单明了。此外,MyHDL提供了实现传统硬件描述概念的类。它提供了一个信号类来支持生成器之间的通信、支持面向位操作的类以及枚举类型类。

仿真与验证

内置仿真器运行在python解释器的顶部。它支持通过观看波形来跟踪vcd文件中的信号变化。

使用MyHDL,python单元测试框架可以用于硬件设计。虽然单元测试是一种流行的现代软件验证技术,但在硬件设计领域还是比较少见的。

MyHDL还可以作为verilog设计的硬件验证语言,通过与传统的hdl模拟器进行仿真。

转换为Verilog语言与VHDL语言

遵从一定的限制后,可将MyHDL设计转换为verilog语言或vhdl语言,这是切入传统设计流程的一条路径,包括综合和实现。可转换子集受到限制,但比标准可综合子集要宽得多。它包括可用于高层次建模和test benches的功能。

转换器处理一个已完全解析的设计实例。因此,原有的设计结构可以任意复杂。此外,转换限制仅适用于生成器内部的代码。除了外部生成器,python的能力可以充分释放,而不影响可转换性。

最后,转换器自动地实现了许多用verilog或vhdl编写困难的任务。一个显著点是自动处理有符号算术问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1351

    浏览量

    110244
  • HDL
    HDL
    +关注

    关注

    8

    文章

    328

    浏览量

    47432
  • 编译
    +关注

    关注

    0

    文章

    661

    浏览量

    32967

原文标题:硬件开源编程利器MyHDL简介

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RT-Thread睿赛德出席中国工博会科技论坛,共话开源硬件与新工业革命

    2025年1月22日,由上海市经济和信息化委员会、临港新片区管委会、上海市科学技术协会指导的中国工博会科技论坛——开源硬件与新工业革命论坛在临港举办。本次论坛由上海开源信息技术协会主办,汇聚了众多
    的头像 发表于 01-22 18:53 99次阅读
    RT-Thread睿赛德出席中国工博会科技论坛,共话<b class='flag-5'>开源硬件</b>与新工业革命

    Triton编译器与GPU编程的结合应用

    Triton编译器简介 Triton编译器是一种针对并行计算优化的编译器,它能够自动将高级语言代码转换为针对特定硬件优化的低级代码。Triton编译器的核心优势在于其能够识别并行模式,自动进行代码
    的头像 发表于 12-25 09:13 291次阅读

    开源能带我们走向何方

    开源大模型、开源数据库、开源框架、开源硬件......近些年,这些词汇不绝于耳。雷军说,好的代码像诗一样优美,自己大二时写的代码就已经开源
    的头像 发表于 12-06 17:09 503次阅读

    百问FB网络编程 - 网络编程简介

    6.1 网络编程简介 ​要编写通过计算机网络通信的程序,首先要确定这些程序同通信的协议(protocol),在设计一个协议的细节之前,首先要分清程序是由哪个程序发起以及响应何时产生。 ​举例来说
    发表于 12-04 09:46

    面对AI时代快车,你没必要跟车赛跑,而是应该先去考个驾照!

    ​在当今人工智能领域,代码生成和编辑工具成为了开发者们手中的利器。昨天,零一万物公司再次展示了他们在开源社区中的领导地位,开源了Yi-Coder系列编程助手模型,这一举措不仅标志着该公
    的头像 发表于 09-06 13:37 640次阅读
    面对AI时代快车,你没必要跟车赛跑,而是应该先去考个驾照!

    如何帮助孩子高效学习Python:开源硬件实践是最优选择

    显著提升孩子的学习兴趣和对Python原理的理解。本文将探讨为何使用Raspberry Pi(树莓派)或Unihiker(行空板)等开源硬件是孩子们掌握Python的最佳途径。 让孩子们在Python学习中更加互动 当孩子们通过硬件学习
    的头像 发表于 09-06 09:49 353次阅读

    Banana Pi BPI-M4 Berry 开源硬件开发板以太网口和WiFi测试

    Banana Pi BPI-M4 Berry 开源硬件开发板以太网口和WiFi测试
    的头像 发表于 07-02 16:16 951次阅读
    Banana Pi BPI-M4 Berry <b class='flag-5'>开源硬件</b>开发板以太网口和WiFi测试

    编程电源的作用是什么

    简介编程电源是一种高度灵活的电源设备,它允许用户通过软件或硬件接口设置输出电压和电流。这种电源设备在电子行业中具有广泛的应用,包括研发、测试、生产和维护等各个环节。 #### 2. 可
    的头像 发表于 06-10 15:33 719次阅读

    开源芯片系列讲座第20期:基于RISC-V向量扩展的开源GPGPU软硬件设计

    在当前国际科技竞争日益激烈的情势下,我国急需要建立一个采用开源指令集GPGPU架构,构建起统一的软硬件生态。相关参与方共同努力,共同建设起我国自主可控的GPGPU产业,服务于我国电子信息核心关键产业。
    的头像 发表于 05-20 16:27 373次阅读
    <b class='flag-5'>开源</b>芯片系列讲座第20期:基于RISC-V向量扩展的<b class='flag-5'>开源</b>GPGPU软<b class='flag-5'>硬件</b>设计

    如何组装ArmSoM-Sige7产品外壳?#树莓派 #rockchip #开源硬件

    开源硬件树莓派
    ARMSOM
    发布于 :2024年04月17日 18:44:52

    手机信号放大器:优化通信质量的利器

    深圳特信屏蔽器|手机信号放大器:优化通信质量的利器
    的头像 发表于 04-02 09:05 778次阅读

    现场可编程门阵列简介

    现场可编程门阵列(FPGA)是一种由半导体材料制成的集成电路,用户购买后可以重新编程或配置,以满足特定功能或应用需求。其控制程序存储在内存中,加电后,程序自动装载到芯片执行。FPGA的基本结构包括
    的头像 发表于 03-27 14:48 607次阅读

    fpga用什么语言编程

    FPGA(现场可编程门阵列)的编程主要使用硬件描述语言(HDL),其中最常用的是Verilog HDL和VHDL。
    的头像 发表于 03-14 18:17 2907次阅读

    fpga是硬件还是软件

    FPGA(现场可编程门阵列)属于硬件设备,而不是软件。它是一种可编程硬件设备,由大量的逻辑单元、存储单元和互连资源组成,能够实现复杂的数字电路和系统设计。
    的头像 发表于 03-14 17:08 1974次阅读

    Meta发布CodeLlama70B开源大模型

    Meta发布CodeLlama70B开源大模型 Meta发布了开源大模型CodeLlama70B,号称是CodeLlama系列体量最大、性能最强的大模型。 Code Llama 70B 有一个很出色
    的头像 发表于 01-31 10:30 1452次阅读