0

我目前正在实现一个 MUX,为了测试它,我创建了一个生成器和一个监视器,以很好地生成数据作为输入并监视其输出。

MUX 采用 Avalon Streaming 接口作为输入和输出,因此也支持背压。

我的问题是。我的测试台在下降沿运行,而我的 DUT 和输入数据在上升沿生成。我的输入时钟和我的输入数据都是在 Delta 周期 0 生成的。但是,我从 DUT 返回并控制发生器的背压就绪信号设置为 Delta 3。现在这会产生一些采样问题,因为 DUT 只能在每个周期加载数据来自发生器的时间数据(在 delta 0 处)有效且 DUT 就绪有效(在 Delta 3 处的背压信号)。

现在,如果我将 DUT 输入时钟倾斜 1 ps,它可以解决问题。但感觉这是错误的方法。这里正确的设计原则是什么。?

将时钟倾斜 1 ps 或至少将其移动 4 个增量,以便我确保我的所有信号都已在上升沿之前设置?

或者

移动我生成的数据,使其与 DUT 输出就绪信号对齐?

或者

这只是从测试台到测试台做出的决定吗?

我还认为测试台中的时钟应该在 delta 0 处生成,其他一切都必须在之后。

我正在模拟 Riviera-pro

4

1 回答 1

0

您有多种选择:

i) 使一切同步。换句话说,在与 DUT 使用的时钟相同的边沿上驱动输入并对输出进行采样。毕竟,DUT 不会遇到任何竞争问题,所以如果您只是将时钟策略扩展到测试平台,一切都会正常工作。在 RTL,但不是在门级。因此,如果您正在进行门级模拟(您应该这样做),那么这种策略对此没有好处。

ii) 将测试台中的所有内容从时钟的相对边沿与 DUT 使用的边沿同步。同样,对于 RTL 来说很好,但是否适合门级取决于您设计的延迟。

iii) 在时钟沿之后将输入驱动到 DUT,并在其之前对 DUT 输出进行采样。时钟边沿是 DUT 使用的边沿。同样,这对于 RTL 来说很好,对于门级来说也是最强大的。

iv) 为每个 DUT 接口实现真实的时序。这应该适用于 RTL 和门级,如果它不适用于门级,则故障在于 DUT 而不是测试台。

于 2016-12-21T09:06:05.030 回答