编译流程详解
编译流程详解
文章目录
- 编译流程详解
- 一、编译流程之综合
- (一)综合输入
- (二)综合设置
- (三)综合输出
- 二、编译流程之翻译融合
- (一)翻译融合输入
- (二)翻译融合输出
- 三、编译流程之映射
- (一)映射输入
- (二)映射输出
- 四、编译流程之布局布线
- 小总结
一、编译流程之综合
(一)综合输入
综合的输入主要包括 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开发至关重要。