FPGA设计的用户约束


文章目录

  • FPGA设计的用户约束
    • FPGA设计的用户约束
    • 综合约束
    • 管脚约束
    • 位置约束
    • 时序约束
    • 小总结

FPGA设计的用户约束

至此,HDL到门级网表的转化已经完成,对于编译器来说,下一步的任务就是要将门级网表转换并映射到具体的FPGA硬件资源中去。不过在编译器开始这一项任务之前,我们必须得提出一些我们对FPGA设计的要求,因为毕竟编译器跟我们是没有什么心灵感应的,所以有些事你不说编译器怎么知道呢?

简单地说,我们将我们的想法写入到一个文件当中,然后把这个文件交给编译器,这样编译器就可以参考我们的需求来实现最终的FPGA设计了,而这个文件就叫用户约束文件。注意,编译器仅仅是参考我们的需求,并不会保证最终的结果一定达到我们的预期,这主要有两方面原因:

  • 编译器向来是量力而行的;
  • 我们的需求有些时候可能不太现实。

因此,如果最终的结果并不能让人满意,通常的做法是返回到FPGA设计方案的制定或FPGA功能代码的编写环节进行修改,而不是去加大编译器在布局布线时的努力程度。


综合约束

其实这一工作应该是在FPGA功能代码编写与FPGA顶层模块的门级仿真环节之间完成的,放在这里讲是为了避免章节过于分散。综合约束的作用顾名思义是用来指导编译器如何将HDL代码转换为门级网表的,它有三种主要表现形式:

  • 编译器的综合工具配置选项;
  • 嵌入代码中的约束语句;
  • 专门的综合约束文件。

通常来说,编译器已经预先设置好了一套默认的综合工具配置选项,几乎能够应对绝大多数综合任务。当然了,如果有特殊需要,可以进行一些调整。而嵌入代码中的约束语句使用起来更加灵活、方便,对于综合的约束性更加得细节和具体,例如可以针对代码中某一个变量进行约束,不像综合选项的作用域是整个FPGA设计。如果觉得嵌入代码中的约束语句过于凌乱,不好管理和维护,那么也可以将这些语句集中写在一个约束文件中,只不过此时需要指明被约束对象的层次化绝对路径。


管脚约束

不和外界交互的FPGA设计是没有任何存在意义的,因此,我们必须要为FPGA设计指定好具体的管脚约束信息。管脚约束主要完成两件事情:

  1. 将FPGA设计中的输入、输出以及双向端口和FPGA芯片的物理I/O管脚之间建立好一一对应的连接关系。通常情况下,FPGA设计中的端口数不能大于FPGA芯片所提供的物理I/O管脚数,否则无法分配成功。
  2. 为每一个已分配的物理I/O管脚指定特定的接口电平,从而使得设计能够正确地跟外围电路进行电信号交互通信,例如LVTTL、LVCMOS、LVDS等接口电平形式。

位置约束

位置约束主要影响的是编译器如何将转换后的资源网表布局到实际的FPGA芯片中。由于FPGA中有非常多的逻辑资源块、BLOCK RAM、DSP核等等,并且这些资源是均匀分布在整个FPGA芯片当中的,如果我们对这些资源的使用有特殊的要求,例如某个逻辑必须使用FPGA芯片中最左上角的逻辑资源块来实现,那么就需要编写相应的位置约束。当然,位置约束的功能并不仅限于此。


时序约束

时序约束是我们对FPGA设计在时间性能指标上的期望,例如时钟频率要求、时间差要求以及各类时间参数指标要求等。当编译器将资源网表布局到FPGA芯片当中并完成连线操作的时候,如果我们为其制定了时序约束,那么编译器就会考虑到我们的需求来进行布局布线,这是因为布局布线会影响到线延迟的时间参数。因此,时序约束虽然不直接指明对布局布线的要求,但是它却间接地对布局布线产生重大的影响。

以上四类约束中,除了综合约束外,其余三个统称为布局布线约束,因为它们都直接或间接地影响到同一个FPGA设计在FPGA芯片中的布局布线形式。也正是因为如此,布局布线约束方面的工作都是在门级网表生成后且后续转换尚未开始前完成的。


小总结

  • 用户约束文件是将设计要求传达给编译器的重要工具,但编译器仅会参考这些要求,最终结果可能因编译器能力和需求合理性而有所不同。
  • 综合约束管脚约束位置约束时序约束是FPGA设计中常见的约束类型,其中综合约束主要影响HDL代码到门级网表的转换,而其他三种约束则属于布局布线约束,直接影响FPGA芯片的布局布线。
  • 布局布线约束的工作通常在门级网表生成后进行,以确保设计能够在FPGA硬件上正确实现。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 生态创新应用:微服务架构设计与前沿技术融合实践

在数字化转型的深水区,企业级应用正面临从 “单体架构” 向 “分布式智能架构” 的根本性跃迁。Spring 生态以其二十年技术沉淀形成的生态壁垒,已成为支撑这场变革的核心基础设施。从 2002 年 Rod Johnson 发布《Expert One-on-One J2EE Design and Deve…

车牌识别与标注:基于百度OCR与OpenCV的实现(一)

车牌识别与标注:基于百度OCR与OpenCV的实现 在计算机视觉领域,车牌识别是一项极具实用价值的技术,广泛应用于交通监控、智能停车场管理等领域。本文将介绍如何在macOS系统下,利用百度OCR API进行车牌识别,并结合OpenC…

【系统分析师】2021年真题:论文及解题思路

文章目录 试题一:论面向对象的信息系统分析方法试题二:论静态测试方法及其应用试题三:论富互联网应用的客户端开发技术试题四:论DevSecOps技术及其应用 试题一:论面向对象的信息系统分析方法 信息系统分析是信息系统生…

OFA-PT:统一多模态预训练模型的Prompt微调

摘要 Prompt微调已成为模型微调的新范式,并在自然语言预训练甚至视觉预训练中取得了成功。参数高效的Prompt微调方法通过优化soft embedding并保持预训练模型冻结,在计算成本低和几乎无性能损失方面展现出优势。在本研究中,我们探索了Prompt…

【硬核数学】2.5 “价值标尺”-损失函数:信息论如何设计深度学习的损失函数《从零构建机器学习、深度学习到LLM的数学认知》

欢迎来到本系列硬核数学之旅的第十篇,也是我们对经典数学领域进行深度学习“升级”的最后一站。我们已经拥有了强大的模型架构(基于张量)、高效的学习引擎(反向传播)和智能的优化策略(Adam等)。…

雷卯针对灵眸科技EASY EAI nano RV1126 开发板防雷防静电方案

一、应用场景 1. 人脸检测 2. 人脸识别 3. 安全帽检测 4. 人员检测 5. OCR文字识别 6. 人头检测 7. 表情神态识别 8. 人体骨骼点识别 9. 火焰检测 10. 人脸姿态估计 11. 人手检测 12. 车辆检测 13. 二维码识别 二、 功能概述 1 CPU 四核ARM Cortex-A71.5GHz 2 …

【记录】Ubuntu|Ubuntu服务器挂载新的硬盘的流程(开机自动挂载)

简而言之,看这张图片就好(可以存一下,注意挂载点/data可以自定义,挂载硬盘的位置/dev/sdb要改成步骤1中检查的时候查到的那个位置,不过这个图的自动挂载漏了UUID,可以通过blkid指令查找)&#x…

六、软件操作手册

建议在飞书平台阅读此文。 我将沿着初来乍到的用户的浏览路径介绍“诤略参谋”应用。 目录 一、用户信息1.1 注册、登录、自动登录、忘记密码、修改用户名、修改密码、退出登录与个性化设置1.2 认识主界面与任务系统1.3 语义审查、Knowledge Cutoff 审查1.4 重要内容未保存提醒…

电脑键盘不能打字了怎么解决 查看恢复方法

电脑键盘打不了字,这是我们电脑使用过程中,偶尔会遇到的电脑故障问题。一般来说,电脑键盘打不出字,可能是硬件故障、驱动问题或系统设置错误等多种原因引起。本文将详细介绍一些常见的原因和解决方法,帮助用户恢复正常…

基于STM32的土豆种植自动化灌溉系统设计与实现

📌 项目简介 随着农业现代化发展及水资源短缺问题日益突出,传统土豆种植方式在浇灌效率与用水科学性方面暴露出诸多问题。本文基于STM32F103C8T6微控制器,设计并实现了一种智能化的土豆种植自动灌溉系统,集成多种环境传感器(温湿度、土壤湿度、光照)、控制设备(水泵、…

第8篇:Gin错误处理——让你的应用更健壮

作者:GO兔 博客:https://luckxgo.cn 分享大家都看得懂的博客 引言 在Web应用开发中,错误处理是保证系统稳定性和用户体验的关键环节。Gin作为高性能的Go Web框架,提供了灵活的错误处理机制,但许多开发者在实际项目中仍会遇到错误处理混乱、异…

【PyCharm】Python安装路径查找

PyCharm应用笔记 第一章 Python安装路径查找 文章目录 PyCharm应用笔记前言一、电脑设置查找二、资源管理器查找 前言 本文主要介绍几种Python安装路径查找的方法。 一、电脑设置查找 简述过程:设置》应用》安装的应用》搜索框输入Python。 注:电脑使用…

数据结构:递归:汉诺塔问题(Tower of Hanoi)

目录 问题描述 第一性原理分析 代码实现 第一步:明确函数要干什么 第二步:写好递归的“结束条件” 第三步:写递归步骤 🌳 递归调用树 🔍复杂度分析 时间复杂度:T(n) 2^n - 1 空间复杂度分析 问题描…

synetworkflowopenrestydpdk

一.skynet 1. Skynet 的核心架构是什么?简述其进程与服务模型。 Skynet 采用多进程多服务架构。主进程负责管理和监控,多个工作进程(worker)负责实际服务运行。每个服务(service)是一个独立的 Lua 虚拟机&…

【甲方安全视角】安全防御体系建设

文章目录 前言一、云安全防护能力第一阶段:搭建安全防护设施第二阶段:安全防护设施的精细化运营第三阶段:安全运营周报输出二、IT安全防护能力(一)办公网安全设施建设(二)办公网安全运营三、基础安全防护能力(一)物理安全(二)运维安全(三)安全应急响应四、总结前言…

计算机组成原理与体系结构-实验一 进位加法器(Proteus 8.15)

目录 一、实验目的 二、实验内容 三、实验器件 四、实验原理 4.1 行波进位加法器 4.2 先行进位加法器 4.3 选择进位加法器(尝试猜测原理) 五、实验步骤与思考题 一、实验目的 1、了解半加器和全加器的电路结构。 2、掌握串行进位加法器和并行进…

react+antd Table实现列拖拽,列拉宽,自定义拉宽列

主要插件Resizable,dnd-kit/core,dnd-kit/sortable,dnd-kit/modifiers 其中官网有列拖拽,主要结合Resizable 实现列拉宽,isResizingRef 很重要防止拖拽相互影响 1.修改TableHeaderCell const isResizingRef useRef(…

光照解耦和重照明

项目地址: GitHub - NJU-3DV/Relightable3DGaussian: [ECCV2024] 可重新照明的 3D 高斯:使用 BRDF 分解和光线追踪的实时点云重新照明 可优化参数 gaussians.training_setup(opt) if is_pbr:: direct_env_light.training_setup…

Kafka 运维与调优篇:构建高可用生产环境的实战指南

🛠️ Kafka 运维与调优篇:构建高可用生产环境的实战指南 导语:在生产环境中,Kafka集群的稳定运行和高性能表现是业务成功的关键。本篇将深入探讨Kafka运维与调优的核心技术,从监控管理到性能优化,再到故障排…

AR 地产互动沙盘:为地产沙盘带来变革​

在科技飞速发展的今天,AR(增强现实)技术应运而生,为解决传统地产沙盘的困境提供了全新的思路和方法。AR 技术,简单来说,是一种将计算机生成的虚拟信息与真实环境相融合的技术。它通过摄像头、传感器等设备获…