2015-02-10 36 views
3

让说我只有一个接口和序列项的多个定义:驱动两个不同序列的项目在一个界面

class link_pkt extends uvm_sequence_item; 
class phy_pkt extends uvm_sequence_item; 

在测试过程中,这些项目可以动态地通过一个接口发送出去。

实现驱动程序/音序器的正确方法是什么?一个司机是否足够?或需要多个司机?

看来,由于序列项目的多重定义,我将需要多个驱动程序和音序器。但这并不好,因为我无法控制/仲裁传输。

有类似的情况here这是一种静态 - 我们不能动态地切换驱动程序。我需要的是我可以在一个测试/序列中动态地驱动这些不同的序列项目。

+0

你必须给我们更多的背景。这两种物品类型如何在同一界面上传输?它是一种什么样的串行接口,所有的位都被打包到一个流中并发送出去? – 2015-02-10 09:56:09

+0

是的,接口是一种串行接口。这两个项目由不同的协议处理并转换成流比特并发送出去。 – AldoT 2015-02-10 10:04:28

+0

准确地说,就协议而言,'link_pkt'高于'phys_pkt'。它可以分成几个'phys_pkt'。我需要能够灵活地发送任何项目。 – AldoT 2015-02-10 10:12:34

回答

3

你想要看的是协议分层。您需要为每个协议都有一个序列发送器,将项目向下发送到每个较低层。在底部,您可以让您的驱动程序实际驱动DUT信号。

每个序运行所需要的,从高层项目转换到自己的项目翻译序列:

+-----------+ 
| link SEQR | <---- can start items here 
+-----------+ 
     | 
     | link 2 phys 
     v 
+-----------+ 
| phys SEQR | <---- can also start items here 
+-----------+ 
     | 
     | 
     v 
+-----------+ 
| phys DRV | 
+-----------+ 

,您可以开始在两个序项目,使您能够在您选择的抽象级别上工作。定序器本身将负责确定优先级,并确保在物理界面上只驱动一个项目。

以下是你可以看看,以了解更多有关如何实现分层几个环节:

http://verificationhorizons.verificationacademy.com/volume-7_issue-3/articles/stream/layering-in-uvm_vh-v7-i3.pdf

http://www.doulos.com/knowhow/sysverilog/uvm/easier_uvm_guidelines/layering/

我已经对话题here交谈。

相关问题