Допустим, у меня есть DUT (например, кэш l2) с шиной AXI в главном порту, и я создал класс AXI_transfer, расширенный от sequence_item, 100 последовательностей интересных тестовых сценариев и драйвер uvm.Теперь протокол шины DUT изменился с AXI на AHB.Компоненты Testbench, которые необходимо изменить, это sequence_item и драйвер (потому что они зависят от протокола).Теперь я не люблю перестраивать последовательности для AHB, потому что они являются сценариями уровня транзакций.Вместо этого я хотел бы повторно использовать все свои последовательности, связанные с элементами AXI_transfer.Какова будет лучшая методология?
Моя идея состоит в том, что я определяю base_transfer, расширенный из sequence_item, и расширяю AXI_transfer и AHB_transfer из этого base_transfer.Кроме того, я изменяю все мои последовательности для параметризации с этим типом base_transfer.Теперь в моем тесте uvm я могу выполнить base_transfer :: type_id :: set_type_override (AXI_transfer :: get_type ());если мне нужно использовать AXI_transfer или base_transfer :: type_id :: set_type_override (AHB_transfer :: get_type ());если мне нужно использовать AHB_transfer.Для водителя мне нужно разработать два драйвера - один для AXI, а другой для AHB. * 1003 *
Как вы думаете, это будет работать?Если нет, какие другие методы рекомендуются?