寄存器复制 • 过高的扇出(fan-out)既存在布线的困难,又因为需要保持相同的时序约束而使得最大运行频率减小 • 复制寄存器可减少高扇出的问题: ••••••减少的扇出数量缩短了时钟延时 ••••••复制的寄存器可以扇出到片上不同的区域,从而减小布线的复杂度(减小拥塞congestion) • 另一方面,复制寄存器使得资源占有率增大 • 取舍:因素布线难易程度、系统性能、资源占用率、是否会造成其它节点的扇出增加(因为在平面上布线,无法交叉) 寄存器复制的提示 • 命名复制后的寄存器原则为_a, _b,而不是NOT _1, _2(这条资料上很少提到) –_1, _2这种方式命名的寄存器会被默认映射到同一个slice里面 – 复制的寄存器应当分开,才有减小扇出和方便布线的可能 – 特别是在负载分散于芯片多个位置的时候更需注意 • 在HDL编程时,显式地复制寄存器,原因是 – 大多数综合工具都有自动控制扇出的功能(一般在属性里面可以设置最大扇出数目) • 但是它们并不总是选择最合适的负载分配(综合算法的问题;造成的扇出不是最优) • 其次,综合工具复制的寄存器一般按照_1, _2的原则命名 – 许多综合工具会将重复的寄存器自动优化掉 • 设置综合工具的属性,以保留冗余逻辑(redundant logic) • 不要复制异步信号驱动的寄存器:复制之后难以控制同步性 – 优先使用同步逻辑Synchronize the signal first – 将同步信号供给所复制的多重寄存器 |