EXTRACT_ENABLE可控制寄存器是否使用使能信号,当其为”yes”时,使能端口被使用;否则,当其为”no”时,使能端口将恒高。
通常情况下,连接到触发器数据路径端口(D端口)的延迟小于CE/R/S端口的延迟,这是因为从同一个SLICE内紧邻触发器的LUT到该触发器的D端口可直接连接。从时序收敛角度而言,这是有好处的,因为可以把关键路径放在数据路径端口,前提是如果没有额外的损失例如逻辑级数增加。这可通过EXTRACT_ENABLE实现。
上述代码当没有使用EXTRACT_ENABLE时,综合后的关键路径如下图所示。可以看到从寄存器en_r_reg[0]到dout_reg[0]使能端口的逻辑级数为2,而dout_reg[0]的数据端口对应路径的逻辑级数为0。
使用EXTRACT_ENABLE并将其设置为”no”(对应VHDL代码第11、12行,Verilog代码第10行),可将这部分逻辑搬移到数据路径端口,最终的电路图如下所示。此时,dout_reg的使能端口恒高,而数据端口相应时序路径对应逻辑级数为2,这在一定程度上会改善时序。
对比没有使用EXTRACT_ENABLE和EXTRACT_ENABLE为”no”时的时序结果(时钟约束在500 MHz),如下图所示,可以看到对时序改善的效果。
需要注意的是,EXTRACT_ENABLE作用的对象是目标寄存器,而不是连接到寄存器使能端口的网线。类似地,EXTRACT_RESET则是控制寄存器是否使用复位信号,需要明确的是这里的复位信号必须是同步复位。
结论
-EXTRACT_ENABLE可控制寄存器是否使用使能信号,据此当使能端口对应路径为关键路径时可尝试将相应逻辑搬移至数据路径端口
上期内容:
下期内容:
本周回顾 -- 2018/03/23