DC综合约束012_异步FIFO中的格雷码设置max_delay

DC综合约束012_异步FIFO中的格雷码设置max_delay

1、异步fifo中格雷码约束

为了保证异步fifo的功能和性能保证,需要在综合约束文件sdc中,约束异步FIFO格雷码的最大延时。约束如图所示:从格雷码寄存器的时钟端口---->到3级同步器的输入端口的最大延时。写地址waddr和读地址raddr格雷码同步都需要设置set_max_delay,延时可设置为读写时钟中最快时钟周期的一半。

DC综合约束012_异步FIFO中的格雷码设置max_delay_第1张图片

set_max_delay [expr 0.5*$period_fast_clk] -from [get_pins “详细路径1/waddr_gray_reg_*_/clocked_on”]  -to [get_pins “详细路径1”/synchronizer_3x_u0/同步器件名称/d”]

set_max_delay [expr 0.5*$period_fast_clk] -from [get_pins “详细路径2/raddr_gray_reg_*_/clocked_on”]  -to [get_pins “详细路径2”/synchronizer_3x_u1/同步器件名称/d”]

NOTE:路径填写的是模块例化名称,同步器_u*不能丢。

2、为什么要设置读写地址格雷码的max_delay?

如果不设置读写地址格雷码约束:会出现以下两种情况

  1. 格雷码各bit位延时不一致---导致同步器采样的地址不符合gray规律,afifo功能异常
  2. 格雷码到同步器的延时有好多个周期----异步afifo性能下降

情况1:格雷码各bit位延时不一致

格雷码各bit位延时不一致,导致afifo功能异常

DC综合约束012_异步FIFO中的格雷码设置max_delay_第2张图片

假设3bit的gray码各比特位延时不一致,比如gray[1]延时比gray[0]多一个采样周期,比如gray[2]延时比gray[1]多一个采样周期,如图所示同步器syn_3x采样端的数据入口处的波形。

虽然源端格雷码是符合要求的,但是由于格雷码延时不一致,导致采样端采样的格雷码不符合要求,如图所示:采样后的格雷码由001(1)跳转到了010(3),又由011(2)跳转到了111(5),这会造成溢出和读空信号有效,afifo功能异常。

情况2:格雷码到同步器的延时有好多个周期

格雷码到同步器的延时越长,流水间隔越大,afifo性能越差。

假如afifo深度为16,写地址waddr_gray码到同步器的延时为8个周期,加上同步器3个周期,写数据侧写入数据后,至少需要11个read_clk后读数据侧empty信号无效,也就是说至少11个read_clk后读侧才能读数据。而如果写地址waddr_gray码到同步器的延时为1个周期,则写数据侧写入数据后,只需要4个周期,读侧就能读数据了。

 

你可能感兴趣的:(DC综合,IC设计)