第四章 FIFO时序模型
本章描述FIFO时序模型。它包含以下部分:
- 4-36页的时序模型。
- 4-37页生成器规范。
- 4-41页的FIFO时序点 。
- 4-43页的检查器行为。
- 4-44页生成器特性。
- 4-45页链接生成器通道。
4.1时序模型
流量通道的关键部分是事物之间的时序。在生成事务时需要这些信息,也可以在监视和检查事务是否满足某些标准时使用这些信息。
时序模型应该是:
- 易于使用和理解
- 快速方便的适应不同部件的特点。
- 性能分析结果是有用的。
- 能够再现行为的。
所指定的模型基于一个简单的FIFO模型。
4.2 生成器规范
对生成器的描述请参见生成器描述。描述使用普通语言,在正式生成器描述中有更正式的定义。
4.2.1生成器描述
生成器的行为是:
- 通道对事务生成特征进行建模,这些特征可以从包含FIFO的组件中看到。
- 当通道第一次被触发时,FIFO被设置为完全满或完全空。
- 在每个周期中,FIFO的水平变化取决于恒定的填充或排出速率:
Read profile:FIFO以这个速率清空。
Write profile: FIFO以这个速率填充。 - 根据FIFO填充级别,只要有可能,事务就会发出:
当发生以下情况时,生成器将发出一个新事务:
Read profile:
每当FIFO中有空间用于事务返回的数据时,就会发出一个新的事务。在计算有多少FIFO空间可用时,必须考虑未完成读事务所需的空间。
Write profile:
每当FIFO中有足够的数据来完成事务时,就会发出一个新的事务。在计算有多少数据可用时,必须考虑已经提交未完成写操作的数据。 - 每当事务数据被发送或接收时,FIFO级别就会改变:
Read profile:
每当接收到读数据时,FIFO的当前级别就会增加。
Write profile:
每当发送写数据时,FIFO的当前级别就会降低。 - 如果FIFO溢出或下溢,可以发出警告。
4.2.2 正式生成器描述
表4-1正式指定了控制生成器行为的参数:
表4-2显示了生成器维护的内部变量。
表4-3描述了FIFO的行为,包括:
- 先进先出水平应该如何改变的细节。
- 何时发出事务。
- 当发出溢出或下溢流警告时。
在4-40页图4-1和图4-2给出参数的图解表示:
4.3 FIFO时序点
这部分介绍了用于FIFO计算的精确时序点。
4.3.1 正常操作
对于一个时钟上升沿的读FIFO,会发生以下情况:
- 如果RVALID和RREADY有效,则FIFO根据数据节拍大小填充。
- FIFO清空的数量由Rate决定,被影响:
— 如果在前一个时钟期间计算的FIFO值表明有足够的数据让FIFO排出由Rate决定的量,那么这个排出就会发生。
— 如果由Rate决定的全部量没有足够的数据,则FIFO只根据可用的数据量清空。
FIFO的填充和清空是独立的。
FIFO清空的数量不考虑当前周期结束时返回的任何数据。
由RVALID和RREADY生效引起的填充将始终发生,因为只有在有足够的空间接收数据时才会发出事务。FIFO的额外排出没有区别。
如果FIFO在RVALID和RREADY生效的同一周期下溢,则产生的FIFO级别将是一个数据拍。然而,应提示有底流情况。然而,下溢的情况应该有信号发出。
时钟上升沿后,计算出新的FIFO值。这用于确定在同一周期内是否有足够的空间来发出一个新的读事务,ARVALID生效。
对写FIFO,在时钟上升沿: - 如果WVALID 和 WREADY生效,则FIFO被数据拍大小清空。
- FIFO由Rate决定的数量填充,因素为:
— 如果前一个时钟周期计算的FIFO值显示有空间,则FIFO被数量Rate填充。
— 如果由Rate决定的全部数量没有足够的空间,那么FIFO只填充可用的空间量。
FIFO的填充和清空是独立的。
FIFO填充的数量不考虑当前周期中发送的任何数据。
由WVALID和WREADY生效引起的输出将始终发生,因为只有在有足够的数据要发送时才会发出事务。FIFO的附加填充没有什么区别。
如果FIFO 在WVALID和WREADY生效的相同周期中过量填充,则产生的FIFO级别将比Full低一个数据拍。然而,溢出状况应该被信号指示。
时钟上升沿后,计算出新的FIFO值。这用于确定在同一周期内是否有足够的数据来发出一个新的写事务,AWVALID生效。
4.3.2 复位行为
复位行为如下:
对于读FIFO,在时钟沿2:
- 一个满的读FIFO将排出一个由Rate决定的量。
- 一个空的读FIFO将试图排出,但会下溢。在启动持续期间之后才发出下溢警告。
- 第一个事务可以在时钟周期2到3中发出。
对于写FIFO,在时钟沿2: - 一个空的写FIFO将一个由Rate决定的数量填充。
- 一个满的写FIFO会试图填充,但会溢出。在启动持续时间后才会发出溢出警告。
- 第一个事务可以在时钟周期2到3中发出。
4.4 检查器行为
检查器的行为几乎与生成器相同。但是,检查器不生成事务。
可选地,一个检查器可以报告以下参数:
MaxLvl — 在分析过程中达到的最大填充级别。这只对初始值为空的通道有意义。
MinLvl — 在分析过程中达到的最小填充级别。这只对初始值为Full的配置通道有意义。
4.5 生成器特征
这部分提供生成器行为的概述。它不提供任何额外的流量通道规范。
在生成器上可以观察到三个典型的操作阶段:
- 初始峰值速率
- 受限峰值速率
- 平均速率
4.5.1初始峰值速率
当生成器第一次被触发时,初始峰值速率发生。该速率不受FIFO中的数据量或未完成事务的最大数量限制。生成器期望每个周期发出一个事务,每个周期使用TxnSize字节。
此阶段的最小持续时间为:
- TxnLimit周期,如果未完成事务的数量限制成为约束:
— 如果事务在此阶段结束之前完成,则该阶段的持续时间将延长。
— 然后是受限峰值速率。 - 大约(Full / TxnSize)周期,如果FIFO中的数据量成为约束:
— 该阶段的持续时间随着自然填充/排空的继续而延长,可以计算出该阶段更精确的持续时间。
— 然后是平均速率阶段。
初始峰值速率阶段通常会比最低速率稍长。
4.5.2 受限的峰值速率
在受限峰值速率阶段,事务的发出受到未完成事务的最大数量的限制。峰值速率由已发出的事务的延迟决定。当较早的事务完全完成时,将发出一个新的事务。在此阶段,带宽速率由系统延迟控制,而不是由生成器的特性控制。
峰值速率受限阶段持续直到:
- 对于读通道,FIFO接近满。
- 对于写通道,FIFO接近空。
当指定的速率大于在系统中实现的带宽时,一些组件将在大多数时间内运行在受限峰值速率阶段。
4.5.3 平均速率
在平均速率阶段,事物的发出是由填充或清空FIFO的平均速率决定的。事务发出速率是恒定的,由生成器参数控制。然而,数据返回速率是由运行中组件所在的系统控制的。
4.6 链接流量通道
该规范包括一种将流量通道链接在一起的机制,以便一个流量配置文件的进展可以影响另一个流量通道的进展。通常,这用于链接读流量通道和写流量配置通道。链接可以用来表示一个组件的行为,该组件需要读写事务才能取得进展,从而使整个组件取得进展。
当两个流量通道连接时,行为为:
- 对于链接到写通道的读通道:
— 当读FIFO完全为空时,则写FIFO的填充不会发生。
— 当写FIFO完全满时,则不会发生读FIFO的排出。 - 对于链接的两个读通道:
— 当其中一个读FIFO完全为空时,不会发生另一个读FIFO的排出。 - 对于链接的两个写通道:
— 当其中一个写FIFO完全满时,另一个写FIFO的填充不会发生。