在上一篇文章中介绍完了reg2reg的时序分析模型,这一篇文章着重来介绍以下pin2reg的时序分析模型。
pin2reg时序分析
pin2reg时序分析基本模型有两种:源同步的FPGA输入时序分析模型,系统同步的FPGA输入时序分析模型。
上图为源同步的FPGA输入时序分析模型,时钟源为上游器件和下游器件(fpga)同时提供时钟。此模型不利于传送高速数据,基本已被淘汰。
上图为源同步的FPGA输入时序分析模型,数据和器件都是由源端提供的。这种模型也在被高速串行总线淘汰如pcie、sata、usb3.0,只有串行数据,没有同步时钟。但是其现在的应用还是比较广的,如DDR3。
下面就源同步的FPGA输入时序分析模型进行展开介绍,系统同步的FPGA输入时序分析模型这里就不再进行分析。
Input delay时序分析模型
对于pin2reg我们一般采用Input delay时序分析模型进行分析,此模型比较像fpga内部寄存器时序分析模型,下面对上图进行一下分析:
Tco:上游器件到达数据接口的延时,包括时钟到输出寄存器的延时、寄存器本身Tco、q到管脚的延时
Td_bd:数据路径延迟(PCB)
Td_fi:fpga接口到FPGA内部寄存器数据端的延时(综合工具知道)。
Tc_d:上游器件到达时钟接口的延时。
Tc_bd:时钟路径延迟(PCB)
Tc_fi:FPGA接口到FPGA内部寄存器时钟端的延时(综合工具知道)。
数据要求到达时间(data require time):Tc_d+Tc_bd+Tc_fi+Tcycyle-Tsu
数据实际到达时间(data arrival time):Tco+Td_bd+Td_fi
数据要求结束时间(data require time):Tc_d+Tc_bd+Tc_fi+Tcycyle+Th
数据实际结束时间(data arrival time):Tco+Td_bd+Td_fi+Tcycle
建立时间余量:Tc_d+Tc_bd+Tc_fi+Tcycyle-Tsu-(Tco+Td_bd+Td_fi)
保持时间余量:Tco+Td_bd+Td_fi-Tc_d-Tc_bd-Tc_fi-Th
下图为pin2reg时序分析图:
Input delay
对于pin2reg,其与reg2reg不同,因为其路径上的参数有些是综合工具知道的,有些是综合工具不知道的,这时候就要对其进行Input delay约束,用Input delay约束来告诉EDA时序分析工具,外面的延时是怎么样的。
由于Td_fi、Tc_fi是在fpga内部的延时,所以时间都是知道的,在进行时序仿真的时候,要将其他延时(统称到达FPGA端的延时)填写进去,就可以进行时序分析。
所以定义input delay(以fpga为中心)=数据到达时间-时钟到达时间。
=Tco+Td_bd-Tc_d-Tc_bd
这个input delay是真正要给FPGA的。
但是这个input delay也不是说是一个定值,Tc_bd的时间是取了一个范围的,这是因为数据线可能有很多,他们在PCB板子上的走线延迟可能不同,因此在提到Tc_bd事件的时候我们给出一个范围,具体取什么值呢,考虑到数据的准确性,**在计算建立时间余量的时候,我们使用最大值,在计算保持时间的时候取最小值。**为什么Td_bd不是一个范围呢,这是因为时钟线一般就一条,并且不再考虑温度等因素,将其设定为一个常量。Tco也一样。,如下图(上图中截取的一部分)中的Tc_bd就是一个范围:
因此就有:
input delay MAX=Tco_MAX+Td_bd_MAX-T_bdc_d-Tc
input delay MIN=Tco_MIN+Td_bd_MIN-Tc_d-Tc_bd
MAX用来计算建立时间裕量
MIN用来计算保持时间裕量
TIPS:如果只有一根数据线,就没有MAX、MIN的说法了,也是常量。
以上所述内容参考了b站尤老师的时序分析课程,如有不足之处,望不吝赐教!