微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > FPGA布局布线问题求教

FPGA布局布线问题求教

时间:10-02 整理:3721RD 点击:
FPGA设计的代码或约束条件发生少许变化后,布局布线重新加载FPGA后往往可能导致结果发生大幅变化。我想请教各位的是,当我获得一个比较满意的中间状态后,能否将此状态的布局布线状态固化,在此基础上再添加新的模块,从而不影响之前的布局布线结果?

以下以Quartus为例;
1. 【不推荐使用】在综合前作好分区(Partition),布局布线结果满意后将该分区版图导出为QXP文件(选择保留布局布线信息),下次重新综合时不导入此部分模块RTL文件而直接导入该QXP分区版图文件,即可完整重现该分区的布局布线信息。
2. 【推荐使用】不完全依赖工具APR,对关键寄存器位置、时钟树作手动干预。对关键寄存器,如希望尽量贴近外部PAD的寄存器,或希望相互间尽量靠近的几个寄存器,可以在Assignment Editor中用Location手工锁定它们的位置。对时钟树,可以在RTL级手动添加时钟路径buffer并加“/*synthesis keep*/”注释防止工具优化,然后在SDC文件中通过set_net_delay -min/max命令手动调整它们的Skew(在外部接口中常用,如SDRAM控制器等);经常也需要对特定时钟点禁用全局时钟,以使得Skew最小化(寄存器分频电路常用);有时也需要手工创建共同时钟路径(Common Clock Path),以获取最佳时序。
APR工具的布线算法是:以最短路径连接Clock,然后对有hold time违规的路径插Buffer(FPGA中的做法是绕线,因为线延时更大)。这种算法完全不考虑调整时钟间的Skew,经常不能得到最佳结果。(Quartus虽然也有类似clock topology analysis之类的选项,但开了基本和没开一样)

增量编译

Altera 的Quartus II 叫LogicLock。就是把已经编译好的模块固定下来。

学习中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top