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

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

3天内不再提示

关于为FPGA和ASIC生成Verilog和VHDL代码分析和应用介绍

MATLAB 来源:djl 2019-09-18 14:51 次阅读

HDL Coder 利用 MATLAB 函数、Simulink 模型和 Stateflow 图生成可移植、可综合的 Verilog 和 VHDL 代码。生成的 HDL 代码可用于 FPGA 编程ASIC 原型开发和设计。

HDL Coder 提供了一个 Workflow Advisor,可以自动执行 Xilinx 和 Altera FPGA 编程。您可以控制 HDL 架构和实施、突出显示关键路径,并估算硬件资源利用率。HDL Coder 在 Simulink 模型与生成的 Verilog 和 VHDL 代码之间提供了可追溯性,使高完整性应用程序的代码验证遵守 DO-254 和其他标准。

主要特性

独立于目标的、可综合的 VHDL 和 Verilog 代码

代码生成支持MATLAB 函数、系统对象以及 Simulink 模块

使用 Stateflow 实施 Mealy 和 Moore 有限状态机以及控制逻辑

用于 Xilinx 和 Altera 应用程序面板编程的 Workflow Advisor

资源共享和重定时,用以平衡面积速度

符合 DO-254 的代码到模型和模型到代码可追溯性

旧有代码集成

关于为FPGA和ASIC生成Verilog和VHDL代码分析和应用介绍

使用 HDL Coder 从 MATLAB 或 Simulink 生成 HDL 代码。您可以使用 MATLAB 函数、Simulink 模型或将两者结合使用来生成可综合的 VHDL 和 Verilog 代码。

主要功能

1.生成HDL代码

使用 HDL Coder,只需几个步骤便可为 FPGA 和 ASIC 实施生成可综合的 HDL 代码:

将 MATLAB 代码、Simulink 模块和 Stateflow 图组合使用,进行设计建模。

优化模型以满足面积速度设计目标。

使用为 MATLAB 和 Simulink 集成的 HDL Workflow Advisor 生成 HDL 代码。

使用 HDL Verifier 验证生成的代码。

2.优化 HDL 代码

在 MATLAB 或 Simulink 中,通过采用分布式流水线、流式处理和资源共享,可以优化 HDL 代码以实现速度面积目标。在 MATLAB 中,您可以使用高级循环优化,如循环流和循环展开,用于包含 for 循环或矩阵运算的 MATLAB 设计。您可以将 MATLAB 代码中的持续阵列或矩阵变量映射到 Block RAM。在 Simulink 中,您可以实施信号处理和多媒体应用中常用的多声道设计和序列化技术。

关于为FPGA和ASIC生成Verilog和VHDL代码分析和应用介绍

适用于 MATLAB 的 HDL Workflow Advisor 提供了多个优化选项,如 RAM 映射、流水线、资源共享和循环展开

关于为FPGA和ASIC生成Verilog和VHDL代码分析和应用介绍

面积速度优化。用一个乘法器取代四个乘法器,降低了设计面积成本,数据率提升4倍。

3. FPGA 设计自动化

HDL 中的 HDL Workflow Advisor 可以自动执行将 MATLAB 算法和 Simulink 模型实施到 Xilinx 和 Altera FPGA 的工作流程。HDL Workflow Advisor 集成了 FPGA 设计流程的所有步骤,包括:

检查 Simulink 模型的 HDL 代码生成兼容性

生成 HDL 代码、HDL 测试工作台和协同仿真模型

通过与 Xilinx ISE 和 Altera Quartus II 集成,执行合成和时序分析

估算设计中的资源使用

使用关键路径时序回注 Simulink 模型

关于为FPGA和ASIC生成Verilog和VHDL代码分析和应用介绍

使用关键路径时序回注 Simulink 模型。HDL Workflow Advisor 会在 Simulink 中突出显示关键路径时序,以帮助识别速度瓶颈并提高设计性能。

您可以查看合成后时序报告并回注 Simulink 模型,以识别时序约束瓶颈。与合成工具的这一集成实现了快速设计迭代,并显著缩短了 FPGA 设计周期时间。

4.验证 HDL 代码

HDL Coder 可以生成 VHDL 和 Verilog 测试工作台以快速验证生成的 HDL 代码。您可以使用各种选项自定义 HDL 测试工作台,测试HDL 代码。您还可以生成脚本文件,在 HDL 仿真器中自动处理代码编译和仿真。

HDL Coder 与 HDL Verifier 配套使用,可以自动生成两类协同仿真模型:

HDL 协同仿真模型,用于使用 Simulink 和 HDL 仿真器(如 Cadence Incisive 或 Mentor Graphics ModelSim 和 Questa)执行 HDL 协同仿真

FPGA 在环 (FIL) 协同仿真模型,用于使用 Simulink 和 FPGA 板验证设计

关于为FPGA和ASIC生成Verilog和VHDL代码分析和应用介绍

自动生成 FPGA 在环 (FIL) 模型,用于视频锐化。FIL 仿真可以在硬件上高效地执行设计空间探查。

5. 记录和追踪HDL 代码

HDL Coder 会将生成的代码记录在 HTML 报告中,该报告包括带超链接 的HDL 代码和生成的 HDL 文件表。通过 HDL 代码中的超链接,可以导航到与代码对应的 MATLAB 算法或 Simulink 模块。

为满足 DO-254 等标准对高完整性应用程序的代码可追溯性要求,HDL Coder 让您能够执行以下操作:

从生成的 HDL 代码导航到 MATLAB 代码

在 Simulink 模块与生成的 HDL 代码之间导航,实现双向追踪

插入用户注释和描述,增加代码可读性

关于为FPGA和ASIC生成Verilog和VHDL代码分析和应用介绍

MATLAB 中的代码生成报告,使您可以从生成的 VHDL 和 Verilog 代码导航到 MATLAB 代码。

将 Simulink Verification and Validation 与 HDL Coder 搭配使用,可以将系统需求作为注释嵌入到从 Simulink 或 Stateflow 生成的 HDL 代码中。这样,您便可以使整个工作流程完全透明,包括从系统需求到生成的 HDL 代码。

关于为FPGA和ASIC生成Verilog和VHDL代码分析和应用介绍

Simulink 中的 HDL 代码生成报告,使您可以在模型与生成的 HDL 代码之间导航。

6.HDL 编码标准

用于工业 FPGA 和 ASIC 应用(如航空航天工业中的 DO-254)的开发过程可能建议使用特定的 RTL 编码指南。HDL Coder 旨在生成满足通用行业编码指南(如 RMM 和 STARC)的 VHDL 和 Verilog 代码。HDL Coder 还可生成报告,帮助您确定 Simulink 模型和 MATLAB 代码中不合适的结构,这样您可以调整您的模型,使生成的 RTL 符合这些编码指南。

HDL Coder 还可以生成第三方 lint 工具脚本,用于检查您生成的 HDL 代码。HDL Coder 自动生成的代码可通过多种行业标准的 lint 工具的检查,例如Atrenta SpyGlass, Real Intent Ascent Lint, Synopsys Leda, 和 Mentor Graphics HDL Designer。HDL Coder 可生成允许与任何 lint 工具集成的自定义脚本。

使用 HDL Coder 生成的代码遵循 RTL 编码原则,通过:

避免 FSM 状态可访问性和编码问题

避免仿真和综合语义之间的差异

避免在实现代价高昂的操作

避免下游工具流问题

遵循命名规则和RTL编码习惯

强 RTL 建模的清晰度并降低复杂性

增强对时钟资源(时钟、启用、复位)和控制信号的检查

支持代码的可测性和可追溯性

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

    关注

    6

    文章

    835

    浏览量

    54457
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66748
  • 脚本
    +关注

    关注

    1

    文章

    372

    浏览量

    14632
收藏 人收藏

    评论

    相关推荐

    基于FPGA设计频率计方案介绍分享

    内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。 主要特点: •
    发表于 03-31 16:22

    # FPGA 编程如何工作?

    运行 FPGA 的设计主要使用硬件描述语言 (HDL) 进行编码,例如 SystemVerilog、VerilogVHDL。 =#1.= Verilog 如果您想用几行
    发表于 03-30 11:50

    到底什么是ASICFPGA

    的,可以考虑FPGAASIC,能省则省。 最后的话 关于CPU、GPU、FPGAASIC的知识,就
    发表于 01-23 19:08

    值得多看的FPGA 学习路线

    的文章[《高层次综合:解锁FPGA广泛应用的最后一块拼图》但是至少从目前各个公司的FPGA岗位的需求来看,RTL的代码能力还是必须的。 主流的硬件描述语言有VHDL
    发表于 01-02 23:03

    例说Verilog HDL和VHDL区别

    VerilogVHDL之间的区别将在本文中通过示例进行详细说明。对优点和缺点的VerilogVHDL进行了讨论。
    的头像 发表于 12-20 09:03 649次阅读
    例说<b class='flag-5'>Verilog</b> HDL和<b class='flag-5'>VHDL</b>区别

    FPGAVerilog代码编写规范

      注:以R起头的是对编写Verilog代码的IP设计者所做的强制性规定,以G起头的条款是建议采用的规范。每个设计者遵守本规范可锻炼命名规范性。
    的头像 发表于 08-15 16:23 1218次阅读

    FPGAASIC的优劣势 FPGAASIC的应用场景及前景

      FPGAASIC是数字电路中常见的实现方式,因此人们经常会想要了解哪种芯片在未来的发展中更具有前途。然而,这取决于具体的应用场景和需求。在本文中,我们将探讨FPGAASIC的优
    发表于 08-14 16:40 1195次阅读

    关于FPGA的学习和发展问题

    AI方面不如GPU,专用领域又不如ASIC,边缘计算甚至都可以被ASIC替代,只有在一些特定的场景(验证)才能发挥作用。 我不希望我在FPGA上付出的努力成为流水,所以想问问大家,FPGA
    发表于 07-26 11:04

    什么是ASIC设计?使用HDL和SystemC代码生成进行ASIC设计

    ASIC 设计是开发复杂电子系统的过程。该系统可制造成特殊用途的半导体设备,通常用于大批量应用或具有严格的功耗、性能和尺寸限制的应用。ASIC 系统设计人员使用高级语言并通过仿真和可视化来开发和评估算法。
    的头像 发表于 07-20 10:29 573次阅读
    什么是<b class='flag-5'>ASIC</b>设计?使用HDL和SystemC<b class='flag-5'>代码</b><b class='flag-5'>生成</b>进行<b class='flag-5'>ASIC</b>设计

    Verilog代码封装后门访问

    关于仿真里的后门访问,之前的文章《三分钟教会你SpinalHDL仿真中的后门读写》中有做过介绍,其针对的都是针对以SpinalHDL中的代码进行的后门访问。今天来看看当封装了Verilog
    的头像 发表于 07-15 10:22 509次阅读
    <b class='flag-5'>Verilog</b><b class='flag-5'>代码</b>封装后门访问

    FPGA开发环境的搭建和verilog代码的实现

    FPGA需要良好的数电模电基础,verilog需要良好C语言基础。
    发表于 05-22 15:04 508次阅读
    <b class='flag-5'>FPGA</b>开发环境的搭建和<b class='flag-5'>verilog</b><b class='flag-5'>代码</b>的实现

    Vivado:ROM和RAM的verilog代码实现

    本文主要介绍ROM和RAM实现的verilog代码版本,可以借鉴参考下。
    的头像 发表于 05-16 16:57 925次阅读

    Verilog边沿检测的基本原理和代码实现

    本文将从Verilog和边沿检测的基本概念入手,介绍Verilog边沿检测的原理和应用代码示例。
    的头像 发表于 05-12 17:05 2333次阅读
    <b class='flag-5'>Verilog</b>边沿检测的基本原理和<b class='flag-5'>代码</b>实现

    FPGA开发环境的搭建和verilog代码的实现

    FPGA需要良好的数电模电基础,verilog需要良好C语言基础。
    的头像 发表于 05-11 17:30 1430次阅读
    <b class='flag-5'>FPGA</b>开发环境的搭建和<b class='flag-5'>verilog</b><b class='flag-5'>代码</b>的实现

    如何使用参数化编写可重用的verilog代码

    我们将介绍如何使用verilog参数和generate语句来编写可重用的verilog 代码。 与大多数编程语言一样,我们应该尝试使尽可能多的
    的头像 发表于 05-11 15:59 705次阅读