关于等价单元无法推开的问题,在前五次迭代中,每次迭代找出坐标重叠最多的单元,对这些单元的坐标加上一个随机的扰动,公式如下:
x += 0.02 * (rand() % 100)
即会出现[0,2)之间的坐标变化,加上随机扰动后,大部分case能把最大密度降低到2以下,仍然有case的最大密度保持在2以上,还需要继续debug,和似飞讨论一下这个问题。
在LUT层的global placement中,IOB的坐标都固定在(0,0),对此做出如下修改:
如果是IBUF,坐标设为(0,31),OBUF设为(31,31),IOBUF设为(15,23)。
这样设置的原因是,信号是从IBUF传递到OBUF,把IBUF和OBUF固定在芯片的两端,借此把之间的单元拉伸开,而不会出现电路绕一圈回去的情况。这样设置仍然比较粗糙,没有把IOB完全放在不同的位置上,之后可以尝试通过读取ucf中的IOB的位置进行设置,对比两种方法的布局结果。