2015-02-10 1 views
3

Пусть говорят, у меня есть только один интерфейс и несколько определений элементов последовательности:Driving два различных элемента последовательности в одном интерфейсе

class link_pkt extends uvm_sequence_item; 
class phy_pkt extends uvm_sequence_item; 

Во время испытания, эти элементы динамически могут быть переданы через этот один интерфейс.

Каков правильный способ реализации драйвера/секвенсора? Достаточно ли одного драйвера? или требуется несколько драйверов?

Похоже, что из-за множества определений элементов последовательности мне понадобится более одного драйвера и секвенсора. Но это плохо, потому что я не могу контролировать/разрешать передачу.

Существует аналогичный случай here, который является своего рода статическим - мы не можем переключать драйвер на лету. Мне нужно, чтобы я мог динамически управлять этими разными элементами последовательности в течение одного теста/последовательности.

+0

Вы должны дать нам немного больше фона. Как оба типа данных могут передаваться на одном интерфейсе? Это какой-то последовательный интерфейс, где все биты упакованы в поток и отправляются? –

+0

Да, интерфейс является своего рода последовательным интерфейсом. Эти два элемента обрабатываются разными протоколами и транслируются в биты потока и отправляются. – AldoT

+0

Точнее, с точки зрения протокола, 'link_pkt' находится на более высоком уровне, чем' phys_pkt'. Его можно разбить на несколько 'phys_pkt'. Мне нужно иметь возможность гибко отправлять любые элементы. – AldoT

ответ

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.

 Смежные вопросы

  • Нет связанных вопросов^_^