FPGA 设计中经常犯的 10 个错误

news2024/11/25 22:54:13

9a78e228d9d086c1d9c486856f1d048c.png

本文列出了FPGA设计中常见的十个错误。我们收集了 FPGA 工程师在其设计中犯的 10 个最常见错误,并提供了解决方案的建议和替代方案。本文假定读者已经具备 RTL 设计和数字电路方面的基础。接下来让我们深入探讨在FPGA 设计中要避免的 10 大错误。

异步逻辑

FPGA 设计适用于同步系统,即使异步逻辑是可综合的,它也会导致设计中的时序违规(亚稳态)。有 FPGA 工程经验的人往往会避免在他们的 FPGA 设计中使用任何异步逻辑。缓解此问题的一种方法是在驱动 LUT 的设计中同步锁存所有异步逻辑。

设计中的异步循环会增加 FPGA 的功耗,从而增加热量并可能导致不必要的“过热”问题。

以下是使用异步逻辑有益的情况:

  • 在 AXI-stream协议中,最好将“tready”表示为异步,这里可以使用reg slice来减轻异步逻辑,这会增加整个设计的利用率。

  • 基于 DSP slice 的计算。使用 DSP slice 的除法、乘法可以异步完成,对时序几乎没有影响。

b9b3ab8adb833935215047c82f5701af.png

不使用厂商提供的原语

这是 FPGA 初学者常犯的错误。以Xilinx器件为例,Xilinx为时钟缓冲器、CDC、DLL、时钟分频器等提供原语。充分利用器件中现有的原语将带来更高效的设计,并大幅缩短开发时间。

例如:

1、 将 xpm-cdc 用于同步器将减少为其编写 RTL 以及为该信号定义约束的麻烦。

2、使用 bufr 进行时钟分频会自动将生成的时钟放置在时钟树上,并推断生成的时钟约束。

dbebe1bc247bcfb852d7b69ee914a068.png 1c394e6e2b8df717ee0280b0f5f97ca4.png

未充分利用 DSP Slice

在 Xilinx FPGA 中,DSP Slice 能够用作累加器、加法器、减法器、除法器和乘法器。当需要这些功能时,最好使用 DSP slice 而不是 LUT/Fabric 来执行此操作。这将减少花在设计优化以及设计结束时的时序收敛上的时间。

有些设计需要非常高的时钟频率才能工作,在这种情况下,DSP Slice可以大大减少时序问题。

检查设计中推断的锁存器

这是一个可以用例子很好解释的案例。编写状态机时,应该有 1 个同步状态和 2 个异步状态。在异步的 NEXT STATE LOGIC 中,如果忘记考虑所有条件,工具将推断一个锁存器,即 next_state 信号将被预期为设计中的生成时钟,因为它将驱动多个 LUT。盲目忽略这种情况会导致状态机停止,并且在出现故障时无法恢复。

不在每个阶段运行 DRC 检查

DRC 检查是必须的,应该在综合和实现之后进行。应正确分析 DRC 中的任何严重警告,并在设计中加以考虑。如果不这样做,可能会导致系统不稳定,并可能在某个时间点发生故障。

不遵循正确的命名和编码约定

所有 RTL 设计工程师都应遵循其设计的标准命名约定,例如。

  • 为所有输入添加 i_

  • 为所有输出添加 o_

  • 为所有信号添加 s_

  • 为所有常量添加 c_

  • 为所有通用信号添加 g_

  • 时钟应命名为 i_clk_m:例如 i_clk_122m88

  • 复位应命名为 i_rst_<polarity_: 例如 i_rst_n_122m88

所有代码都应正确记录、注释和测试(综合前和综合后)

复位信号的不必要使用

在 Xilinx 设备中,使用复位引脚驱动所有信号并不是首选,因为它会大大增加设计中的扇出。相反,最好将 gsr 引脚用于所有中间信号。

即:当声明信号时,将其本身初始化为复位值。

请参阅“ https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_1/ug974-vivado-ultrascale-libraries.pdf ”第 75 页

24fd91937ce0d9ddbe66fa5541108679.png

利用率计算

在 FPGA 中,不建议完全利用所有可用资源。开始设计时,选择一个可以容纳设计并有额外 10% 到 20% 可用空间的FPGA。这样做是为了让路由有余地使用其内置逻辑满足建立和保持时间。

如果不这样做,后续的时序很难收敛,就不得不降低系统时钟。

将block design用于大型设计

block design是轻松互连 RTL 的好方法,但对于大型项目,block design在 Xilinx Vivado 中也有很多固有的错误,这会在设计中引起很多不必要的警告。

不检查仿真设置中的记录所有信号选项

在仿真设计时,最好首先检查 vivado 中的记录所有信号选项。这将避免为了向仿真波形添加附加信号而不得不重新运行整个仿真。这适用于与 vivado 结合使用的所有第三方仿真软件。

55d7cb0a6f9bdbd4c153c743463767e1.png

c38849013de868337d6b60c8015a7047.jpeg

点下【在看】给小编加鸡腿

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/596130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# webAPI 精解

入门 创建一个web项目 先创建一个web项目 基本可以运行的程度 用postman进行接口测试 .NET Framework 和 .NET Core 都可以创建 webAPI 这里用 .NET Framework 比较简单 。 启动 Visual Studio&#xff0c;并从“开始”页中选择“新建项目”。 或者&#xff0c;在 “文件” 菜…

简单介绍Roop(类似SimSwap)单张图视频换脸的项目

文章目录 &#xff08;一&#xff09;关于Roop&#xff08;二&#xff09;安装Roop&#xff08;CPU&#xff09;&#xff08;2.1&#xff09;克隆仓库&#xff08;2.2&#xff09;设置python国内源&#xff08;2.2&#xff09;检查安装virtualenv&#xff08;2.3&#xff09;创…

chatgpt赋能python:Python文本处理——从文本中提取数据

Python文本处理——从文本中提取数据 在数据分析和机器学习中&#xff0c;从文本中提取数据是一个十分重要的步骤。在Python中&#xff0c;我们可以使用各种工具和库来实现这一目标。这篇文章将介绍一些Python中用于从文本中提取数据的常用技术。 正则表达式 正则表达式是一…

大数据管理平台DataSophon-1.1.1安装部署详细流程

1 DataSophon介绍 1.1 DataSophon愿景 DataSophon致力于快速实现部署、管理、监控以及自动化运维大数据云原生平台&#xff0c;帮助您快速构建起稳定、高效、可弹性伸缩的大数据云原生平台。 1.2 DataSophon是什么 《三体》&#xff0c;这部获世界科幻文学最高奖项雨果奖的…

聚观早报 | 英伟达市值破万亿美元;微信问一问搜索功能开始内测

今日要闻&#xff1a;英伟达市值破万亿美元&#xff1b;微信「问一问」搜索功能开始内测&#xff1b;快播宣告破产公司已注销&#xff1b;贤合庄北京门店全部关闭&#xff1b;华为AIGC或在7月发布 英伟达市值破万亿美元 5 月 30 日消息&#xff0c;上周三&#xff0c;英伟达发…

阿里云服务器选购指南(图文教程详解)

目录 一、前言 二、基本概念 1.定义 2.部署形式 3.用处 三、主流平台 1.Google 2.AWS 3.华为云 4.腾讯云 5.阿里云 四、云服务器分类 1.云服务器ECS 2.轻量应用服务器 3.GPU云服务器 4.FPGA云服务器 5.无影云桌面 五、选购指南 1.明确需求 2.明确身份 3.明确时间 4.明确教程 一…

浅谈数字电视大楼电力保护监控系统的设计与应用

摘要&#xff1a;介绍天津电视台数字电视大厦电力监控系统的选择与建立&#xff0c;组网方式&#xff0c;系统的使用与报文的显示等&#xff0c;通过该系统对大厦所有变配电回路、UPS 线路等关键部位进行监控和管理。 关键词&#xff1a;电力监控;数字电视;变配电; 1.总述 天津…

一个通用的自适应prompt方法,突破了零样本学习的瓶颈

深度学习自然语言处理 原创作者&#xff1a;Winni 今天要给大家介绍一篇Google的研究&#xff0c;解决了大语言模型&#xff08;LLMs&#xff09;在零样本学习方面的困境。相比于少样本学习&#xff0c;LLMs在零样本学习上常常表现得比较弱&#xff0c;这主要是因为缺乏指导。而…

MySQL数据库 5.DDl操作数据库

目录 &#x1f914;DDL介绍&#xff1a; &#x1f914;语法详解&#xff1a; 1.查询&#xff1a; 1.查询所有数据库&#xff1a; 示例&#xff1a;查询自带数据库 2.查询当前数据库&#xff1a; 2.创建&#xff1a; 示例&#xff1a;创建一个名字叫做itcast的数据库&…

chatgpt赋能python:Python的交运算:了解、应用和优化

Python的交运算&#xff1a;了解、应用和优化 Python是一种流行的编程语言&#xff0c;它拥有丰富的数据结构和算法库。其中&#xff0c;交运算是一种常用的操作&#xff0c;它能够方便地比较两个集合的相同元素。在这篇SEO文章中&#xff0c;我们将介绍Python中的交运算&…

(原创)Android apk应用加固、字节对齐、二次签名全流程

这篇博客主要是讲如何对apk应用进行加固、对齐和签名的&#xff0c;会有详细的步骤逐一介绍 前言 随着各大加固工具都开始逐一收费后&#xff0c;个人开发中或者中小型企业如何对应用进行加固就成了一个问题。以前我常用的是360加固助手&#xff0c;虽然每天限制一定的免费次数…

玖章算术荣获信通院“生成式人工智能技术和应用优秀案例”奖

5月31日&#xff0c;“杭州通用人工智能论坛”在杭州梦想小镇互联网村成功举办。本次会议由中国信息通信究院&#xff08;以下简称中国信通院&#xff09;、浙江省经济和信息化厅、杭州市人民政府、中国人工智能产业发展联盟等共同主办。 玖章算术获奖 玖章算术的 NineData 智…

git 使用ssh连接Github:017

1. 首先打开Git Bash终端&#xff0c;生成私钥和公钥&#xff1a;ssh-keygen 输入&#xff1a;ssh-keygen 之后&#xff0c; 会有三步提示&#xff0c;全部按回车建。 2. 进入主路径&#xff1a;cd ~/.ssh/ 进入这个路径之后&#xff0c;使用命令&#xff1a;ls 会看到两个文…

基于VMD-SSA-LSTM的多维时序光伏功率预测

目录 1 主要内容 变分模态分解(VMD) 麻雀搜索算法SSA 长短期记忆网络LSTM 2 部分代码 3 程序结果 4 下载链接 1 主要内容 之前分享了预测的程序基于LSTM的负荷和可再生能源出力预测【核心部分复现】&#xff0c;该程序预测效果比较好&#xff0c;并且结构比较清晰&#x…

.net 6.0图片转Base64部署到Linux系统上报The type initializer for ‘Gdip‘ threw an exception

在业务当中需要将图片文件转为Base64&#xff1a;windows上可以运行正常执行&#xff0c;部署到Linux系统上报The type initializer for ‘Gdip‘ threw an exception 图片转Base64代码如下 /// <summary> /// 图片转为base64编码的文本 /// </summary> /// <…

CMake深度解析:掌握add_custom_command,精通Makefile生成规则

CMake深度解析&#xff1a;掌握add_custom_command&#xff0c;精通Makefile生成规则 1. CMake简介与基础知识1.1 CMake的基本概念&#xff08;CMake Basic Concepts&#xff09;1.1.1 项目&#xff08;Project&#xff09;1.1.2 目标&#xff08;Target&#xff09;1.1.3 命令…

terminalworks ASP.NET Core PDF 浏览器-Crack

ASP.NET Core 的 PDF 查看器 terminalworks在 ASP.NET Core 网页或应用程序中添加可靠的 PDF 查看器的简单方法。 我们的 Web PDF 查看器基于经过验证和测试的 Mozilla PdfJS 解决方案&#xff0c;该解决方案在 Firefox 中用作默认 PDF 查看器。我们专门设计了我们的查看器&…

窄带高清技术之百万级并发下的演唱会直播细节修复

史无前例&#xff0c;高清又不卡。 5月&#xff0c;百视TV联合上海人民广播电台、时代峰峻共同出品的《东方风云榜》&#xff0c;绚烂呈现一场三十周年音乐分享会时代少年团《理想之途》。有人说&#xff0c;这是一场似梦非梦的记忆。 演唱会由“乐园”、“少年”、“乌托邦”三…

Pyside6-第四篇-QCheckBox复选框

今天是Pyside6的第四篇内容。一起来看复选框。 QCheckBox。 class QCheckBox(QAbstractButton):"""QCheckBox(self, parent: Optional[PySide6.QtWidgets.QWidget] None) -> NoneQCheckBox(self, text: str, parent: Optional[PySide6.QtWidgets.QWidget] …

爱尔眼科四川省区2023“集善扶困(贫)健康行”公益行动圆满收官

红原县地处青藏高原东部&#xff0c;位于四川省西北部、阿坝藏族羌族自治州中部&#xff0c;这里山原向丘状高原过渡&#xff0c;空气稀薄、气候偏冷、紫外线强&#xff0c;这里生活着大量藏族同胞。 这里地势出行不便医疗资源有限&#xff0c;青少年近视防控问题、中老年人的白…