2016-02-03 2 views
0

У меня есть компонент, который содержит двух подписчиков. Я хотел бы иметь возможность создать экземпляр этого компонента и подключить его подписчиков, не используя иерархическую ссылку.Прикрепление портов анализа UVM иерархически

Учитывая, что у меня есть

my_comp.sub1.analysis_export 
my_comp.sub2.analysis_export 

Как я могу сделать соединение с абонентами внутри компонента, не достигая в компонент?

Я хотел бы быть в состоянии сделать

function void connect_phase(uvm_phase phase); 
    monitor.ap1.connect(my_comp.sub_1_analysis_export); 
    monitor.ap2.connect(my_comp.sub_2_analysis_export); 
endfunction 

ответ

2

Вы можете создать порт экспорта анализа в иерархии более высокого уровня (класс my_comp) и подключить его к портам экспорта sub_1.analysis в фазе подключения.

Теперь в фазе подключения агента вы можете напрямую подключить порт анализа монитора к этому новому экспортному порту анализа. (Я считаю, вы написали подключить фазу класса агента, в вашем коде, который, как правило, нормальное расположение монитора)

Ваш модифицированный код может выглядеть следующим образом:

// In my_comp Class 
uvm_analysis_export #([Your Port Transaction Data Type]) new_export_1; 
uvm_analysis_export #([Your Port Transaction Data Type]) new_export_2; 

function void connect_phase(); 
    new_export_1.connect(sub1.analysis_export); 
    new_export_2.connect(sub2.analysis_export); 
endfunction 

// In agent Class 
function void connect_phase(); 
    monitor.ap1.connect(my_comp.new_export_1); 
    monitor.ap2.connect(my_comp.new_export_2); 
endfunction 
0

Вы всегда можете создать порты или экспорт на более высоком уровне иерархии компонентов и подключить их к портам и экспорта на более низком уровне. Затем вы подключаете компоненты более высокого уровня. Как правило, монитор является частью агента, и вы делаете analysys_port монитора портом агента. Затем вы подключаете абонента к агенту.

+0

так я называю 'sub1 .analysis_export.connect (sub_1_analysis_export) 'на верхнем уровне? –

+0

есть. Как ответил Шах –

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