Specman - BFM создается, хотя и не должен

У меня есть BFM в моем tx-агенте (без драйвера последовательности).

extend uart_tx_agent_u{
   uart_tx_monitor : TX uart_monitor_u is instance;
   uart_tx_scb: uart_tx_scoreboard_u is instance;
   when ACTIVE uart_tx_agent_u {
      uart_bfm : uart_tx_bfm_u is instance;
   };
};

Когда я запускаю тест (я не меняю поле active_passive), я вижу, что uart_bfm был создан (согласно сообщениям, которые печатаются).


person Sara p    schedule 04.03.2018    source источник


Ответы (3)


Вы уверены, что хотите изменить ограничение с теста на тест? Либо агент активен и отправляет данные на DUT, либо пассивен и собирает только данные, отправленные с DUT.

Обычно люди определяют агент как АКТИВНЫЙ, чтобы у него был драйвер последовательности и BFM.

В тестовых файлах вы определяете сценарии для тестов, определяя последовательности для этого агента.

Поэтому в тестах, в которых вы не хотите отправлять какие-либо данные в DUT от этого агента, установите последовательность ничего не делать -

extend MAIN my_seq {
    body() @drive.clock is only {
        // do nothing, this agent should not send data in this test
    };
};

Если вы действительно хотите изменить топологию среды, и в некоторых тестах агент должен быть ПАССИВНЫМ, а в некоторых — АКТИВНЫМ, вы можете сделать это в тестовом файле, наложив ограничения на агент.

И это ограничение должно быть в предварительном поколении. Через тест - агент либо АКТИВЕН, либо нет. Это не может быть изменено во время выполнения. Вы не можете сказать: «Я начинаю тест с ПАССИВНЫМ агентом, но во время теста я хочу сделать его АКТИВНЫМ».

person user3467290    schedule 14.03.2018

Если создается экземпляр bfm, должно быть так, что uart_tx_agent_u АКТИВЕН.

когда вы говорите, что не меняете его - может быть, он был случайно установлен в АКТИВНЫЙ?

person user3467290    schedule 05.03.2018
comment
если вы не измените это поле, по умолчанию будет ПАССИВНЫЙ - person Sara p; 05.03.2018
comment
Если само поле active_passive является генерируемым, и вы явно не объявляете своего агента как PASSIVE uart_tx_agent_u и явно не ограничиваете его значением PASSIVE, оно будет сгенерировано со случайным значением, которое может быть PASSIVE или ACTIVE. - person Yuri Tsoglin; 05.03.2018
comment
@ Юрий Цоглин - так где я должен это явно заявить? в тесте или в расширении/замедлении агента? - person Sara p; 05.03.2018
comment
@Sara p В зависимости от ваших потребностей. Либо в объявлении — объявите поле экземпляра типа PASSIVE uart_tx_agent_u, а не просто uart_tx_agent_u (если вы считаете, что оно всегда ПАССИВНО во всех тестах), либо добавьте в тест ограничение — keep my_agent.active_passive == PASSIVE (если оно может быть АКТИВНО в некоторых тестах). тесты и ПАССИВ в других). - person Yuri Tsoglin; 05.03.2018
comment
@Yuri Tsoglin - Я сделал следующее: 1. В файле env я объявляю агента: unit uart_rx_agent_u like uvm_agent { keep soft active_passive == PASSIVE; }; в файле uart_rx_agent я сделал следующее: extend uart_rx_agent_u{ uart_rx_monitor : RX uart_monitor_u is instance; when ACTIVE uart_rx_agent_u { uart_bfm : uart_rx_bfm_u is instance; driver: uart_driver_u is instance; }; };' In the test I wrote the following constraint in one of my sequence: сохранить uart_env.uart_rx_agent.active_passive == ACTIVE; ` Тем не менее, BFM не был создан. - person Sara p; 08.03.2018

после запуска теста создается структура последовательности. и последовательность генерируется только при наличии драйвера. и драйвер создается, только если агент АКТИВЕН. топология среды должна быть ограничена сверху вниз, чтобы не ограничивать единицу от содержащейся в ней структуры

если вы знаете, что хотите, чтобы агент был АКТИВНЫМ, то ограничьте его -

extend rx_uart_agent_u {
    keep active_passive == TRUE;
};

или от его родителя

extend env {
    keep me.rx_agent.active_passive == TRUE;
};
person user3467290    schedule 09.03.2018
comment
а если я хочу что бы в одних тестах он был АКТИВНЫМ, а в других ПАССИВНЫМ? - person Sara p; 11.03.2018
comment
вы можете поместить ограничение в тестовый файл, но не в последовательность. - person user3467290; 12.03.2018
comment
Но как я могу изменить ограничение от теста к тесту? - person Sara p; 12.03.2018