当前位置: 首页 > news >正文

编译流程详解

编译流程详解

文章目录

  • 编译流程详解
    • 一、编译流程之综合
      • (一)综合输入
      • (二)综合设置
      • (三)综合输出
    • 二、编译流程之翻译融合
      • (一)翻译融合输入
      • (二)翻译融合输出
    • 三、编译流程之映射
      • (一)映射输入
      • (二)映射输出
    • 四、编译流程之布局布线
      • 小总结

一、编译流程之综合

(一)综合输入

综合的输入主要包括 HDL代码、综合设置、器件型号等。

  • HDL代码:是FPGA设计的主要载体,包含待转化的全部设计内容。对于使用了IP核的设计,硬核或固核本身是门级网表,不需要综合;软核则以HDL代码形式存在,是综合输入的一部分。
  • 综合设置:是编译器综合FPGA设计时的指导信息,对综合过程至关重要。编译器通常采用默认设置,但有时需要人工修改以适应设计特点。
  • 器件型号:虽然综合阶段与实现无关,但在资源评估时需要根据器件型号初步估计资源占用率。

(二)综合设置

综合设置分为编译策略和具体选项,以下是详细介绍:

  • 可选编译策略
    • speed(速度优先策略):优先考虑速度性能,适用于时序分析中最大时钟频率不满足需求时。
    • area(面积优先策略):优先考虑资源占用,适用于设计占用资源超出器件限制时。
    • power optimization(功耗最优策略):优先减少功耗,适用于芯片温度过高时。
    • minimum runtime(最短时间策略):编译器综合时间最短,但不推荐使用。
    • balance(折中综合策略):兼顾速度、面积、功耗等因素,是默认策略。
  • 修改一般综合选项
    • keep hierarchy(保留层级选项):可选择是否保留HDL代码中的层级结构。
    • read core(读核选项):决定是否在综合时提取IP核信息。
    • synthesis constraints file(综合约束文件选项):通过文件或HDL代码嵌入约束信息。
  • 修改HDL综合选项
    • 状态机相关选项:包括状态编码方式、安全状态机实现等。
    • 存储器相关选项:涉及RAM或ROM的推断与实现方式。
    • 复用器相关选项:包括MUX的推断与实现。
    • 解码器相关选项:涉及解码器的推断与优先级设置。
    • 寄存器相关选项:包括移位寄存器的推断等。
    • 其他选项:如异或门合并、资源共享、DSP单元使用等。
  • 修改特殊综合选项
    • I/O Buffer添加:默认允许,但可选择关闭。
    • 信号最大扇出控制:限制输出信号驱动能力,通过内插缓冲器优化。
    • 寄存器复制与合并:默认打开,用于优化速度或资源占用。
    • 寄存器平衡选项(re timing):默认关闭,开启后可提高时钟速度,但增加综合时间。

(三)综合输出

  • RTL门级网表:是FPGA设计对应的门电路单元表达,是顶层模块门级仿真环节的基础。
  • 综合报告:包含错误信息、警告信息和资源占用量信息。
    • 错误信息:表明综合失败,需清除HDL代码中的语法错误。
    • 警告信息:需逐条确认,可能反映设计隐患。
    • 资源占用量信息:用于评估设计质量,建议资源占用率小于70%。

二、编译流程之翻译融合

(一)翻译融合输入

翻译融合的输入主要包括 RTL门级网表、翻译融合设置、器件型号等。

(二)翻译融合输出

  • 顶层可识别门级网表:覆盖整个FPGA设计功能,融合综合后网表与IP核网表,适配FPGA厂商格式。
  • 翻译融合报告:包含翻译融合过程中的详细信息,需处理错误和警告信息。

三、编译流程之映射

(一)映射输入

映射的输入主要包括 顶层可识别门级网表、映射设置、器件型号、位置约束、时序约束、管脚约束等。

(二)映射输出

映射的输出主要包括 顶层资源位置门级网表、门延时文件和映射报告。

四、编译流程之布局布线

(此处未提供详细内容,后续可补充)


小总结

本文详细介绍了FPGA编译流程中的综合、翻译融合和映射环节。综合阶段将HDL代码转化为门级网表,并通过多种设置优化设计;翻译融合阶段将门级网表适配为FPGA厂商可识别的格式;映射阶段将设计映射到具体FPGA芯片资源。每个阶段都有明确的输入输出,且通过报告提供优化方向。理解这些环节对FPGA开发至关重要。


文章转载自:
http://amphiphilic.apjjykv.cn
http://arrears.apjjykv.cn
http://bradycardia.apjjykv.cn
http://antiproton.apjjykv.cn
http://agaricaceous.apjjykv.cn
http://brimfull.apjjykv.cn
http://bandanna.apjjykv.cn
http://automatism.apjjykv.cn
http://cancerroot.apjjykv.cn
http://adn.apjjykv.cn
http://aquatic.apjjykv.cn
http://banka.apjjykv.cn
http://asepticism.apjjykv.cn
http://araway.apjjykv.cn
http://abacterial.apjjykv.cn
http://archaeoastronomy.apjjykv.cn
http://archduchy.apjjykv.cn
http://antecedence.apjjykv.cn
http://airdate.apjjykv.cn
http://amnioscopy.apjjykv.cn
http://boxlike.apjjykv.cn
http://blueness.apjjykv.cn
http://carissima.apjjykv.cn
http://captan.apjjykv.cn
http://acapulco.apjjykv.cn
http://ceq.apjjykv.cn
http://achondrite.apjjykv.cn
http://cbu.apjjykv.cn
http://cabriolet.apjjykv.cn
http://ammonotelic.apjjykv.cn
http://www.dtcms.com/a/261714.html

相关文章:

  • 利用ROS打印novatel_msgs/INSPVAX
  • 滑坡监测接收机市场分析
  • libxlsxwriter: 一个轻量级的跨平台的C++操作Excel的开源库
  • 个人日记本小程序开发方案(使用IntelliJ IDEA)
  • python解释器 与 pip脚本常遇到的问题汇总
  • 【stm32】HAL库开发——CubeMX配置ADC
  • Minio入门+适配器模式(实战教程)
  • ZooKeeper深度面试指南三
  • uni-app subPackages 分包加载:优化应用性能的利器
  • uniapp上拉加载和下拉刷新组件mescroll-uni
  • 如何利用好doctor
  • JavaScript---字符串篇
  • 我的世界模组开发进阶教程——机械动力的数据生成(2)
  • ZooKeeper深度面试指南二
  • 【数据标注师】3D标注
  • WordPress最新版6.8.1安装教程
  • 解决cursor无法下载插件等网络问题
  • ReactNative【实战系列教程】我的小红书 2 -- 快捷登录、手机号密码登录
  • 前端react面试题之实现网页多选搜索框
  • 数据结构之——顺序栈与链式栈
  • 理解图像的随机噪声
  • 【unity游戏开发——网络】网络协议、TCP vs UDP 本质区别
  • 安慰剂与安慰剂效应:临床试验中的核心概念
  • 东南亚 TikTok 直播网络专线,专线助力告别直播画面卡顿时代
  • 鸿蒙开发:资讯项目实战之底部导航封装
  • pandas 优雅处理值类型为list的列的csv读写问题
  • 1 Studying《Is Parallel Programming Hard》14-18
  • 【AI智能体】图像处理-人生四宫格
  • Python Wget详解:从入门到实战的网络文件下载指南
  • 零基础langchain实战二:大模型输出格式化成json