FPGA中如何固定模块布局

在ucf文件中可以对模块的布局位置进行约束。

FPGA中如何固定模块布局

以下为母本电路s1423做成硬核的结果。
FPGA中如何固定模块布局

将模块做成硬核之后,需要选择一个Marco Reference Comp,这里选择左下角的SLICE为参考部分,如下图。
FPGA中如何固定模块布局

之后在ucf文件中进行约束时,只需要对参考部分进行约束即可完成整个模块的固定。
FPGA中如何固定模块布局
以下为ro做成硬核的结果。
FPGA中如何固定模块布局
在ucf文件中对调用RO硬核时的位置进行约束,可以看到,对于调用的不同RO,只需要约束参考部分的位置即可。也就是说,硬核是固定了模块内各部分的相对位置,待确定参考部分的位置之后,整个模块的位置也就固定了。
FPGA中如何固定模块布局
FPGA中如何固定模块布局
需要注意的是,在布局过程中,由于是对参考部分进行约束,选择的位置必须是与参考部分同一类型的Slice。例如,需要将Marco Reference Comp固定在a点和b点,那么a点和b点的slice类型就需要和参考部分的Slice类型一致。
FPGA中如何固定模块布局
木马电路s27的约束如下:
FPGA中如何固定模块布局
将电路模块约束到设计者划定的pblock内,在区域内由工具自动布局布线,但保证电路模块所有的部分都是在这一区域内的。
手动约束之后会自动生成对应的ucf文件。

在PlanAhead中查看如下图。
FPGA中如何固定模块布局
FPGA中如何固定模块布局
FPGA中如何固定模块布局
在电路中的实际布局位置如下图。
FPGA中如何固定模块布局
Pblock是设计者自己划定的区域,可以看到,上面的s27电路只利用到了pblock的一小部分,因此可以手动将pblock的区域缩小,如下图。
主要关注资源利用率,最好不要超过70%。
FPGA中如何固定模块布局