Vivado使用技巧(10):实现前的准备工作

时间:2024-03-19 16:21:33

关于vivado的实现过程

vivado的实现可以来自于多种源文件,包括:(1)RTL设计;(2)网表设计;(3)以IP核为核心的设计 ;

下图包括vivado的整个设计流程:

Vivado使用技巧(10):实现前的准备工作

vivado的实现过程包括将网表映射到FPGA资源上的所有步骤,涉及到逻辑、物理、时序等多种约束;支持SDC和XDC约束格式; 


vivado下实现的子步骤

vivado的实现过程将网表和约束转换为布局布线设计以及生成bit流文件,主要包括以下几个子步骤:

  • opt design:优化逻辑设计使之更好的匹配开发板;
  • power opt design(可选):优化设计元素以降低开发板的功耗;
  • place design:在开发板上进行布局;
  • post-place power opt design(可选):在布局后进一步减少功耗;
  • post-place phys opt design(可选):根据布局估计的时序进一步优化逻辑和布局设计,包括复制高扇出的模块;
  • route design:在开发板上布线;
  • post-route phys opt design(可选):根据实际的延时优化逻辑和布局布线;
  • write bitstream:在实现后产生bit流文件;

提示:vivado支持模块实现,即只实现整个设计的某一个模块;在此过程中I/O buffer插入过程会跳过以防止过度使用 I/O ;


使用约束来引导实现

约束包括两大类:物理约束和时序约束;

物理约束

物理约束描述了逻辑块与器件资源之间的关系,例如:

  • 封装引脚的位置摆放;
  •  逻辑单元的绝对或相对位置,包括:BRAM、FF、LUT、DSP等;
  • 器件配置设置;

时序约束 

时序约束描述了设计的频率需求,采用标准的SDC格式;没有时序约束,vivado只能优化导线长度和布线阻塞 ,无法提高设计的性能;

允许在一个设计中存在多个约束集,约束集中可以包含多个约束文件;例如,可以将第一个约束集用于综合,第二个约束集用于实现,使用多个约束集可以让设计测试不同的综合实现策略从而选取最优的结果!

允许在HDL代码中以属性的方式添加约束,这种方式在前面讲综合的时候涉及过,这里不再赘述;

提示:建议将物理约束和时序约束分别存放在不同的约束文件中;为了验证时序约束的有效性,建议在综合后生成时序报告;