⚡️"Клондайк" знаний по верификации или статьи Clifford Cummings (часть 2)⚡️
UPD 19.12.25: Для доступа к статьям требуется регистрация на сайте Paradigm Works. Оригинальные pdf-файлы прикреплены в комментарии.
2 часть списка:OVM/UVM Scoreboards - Fundamental Architectures. Прекрасная статья об архитектуре чекера/scoreboard. Одним словом об архитектуре класса проверки в UVM. Разбираются основные подходы к проектированию. Обозначаются преимущества и недостатки. Приводится краткий разбор и пример макроса
uvm_analysis_imp_decl, позволяющего проводить параллельную обработку потоков транзакций одного типа. Отличная публикация для структурирования знаний о UVM.
Applying Stimulus & Sampling Outputs ‐UVM Verification Testing Techniques. Must have статья для тех, кто хочет в полной мере освоить методы взаимодействия с портами дизайна. В том числе при верификации с учетом физических задержек распространения сигнала. Тут тебе и про нулевые задержки, и про минимально-возможный шаг симуляции (
#1step), и про гонки в нулевой момент времени симуляции, и про отслеживание асинхронных событий между фронтами тактового сигнала. Множество советов и хороших практик. К минусам можно отнести, что примеры с использованием UVM, так что хотя бы минимальное понимание этой библиотеки все таки нужно.
OVM & UVM Techniques for Terminating Tests. Всеобъемлющая статья про фазы UVM-симуляции, способы выбора тестового сценария, его завершения и не только. Частично разбирается иерархия классов UVM, класс
uvm_root и случаи обращения к нему. Статья освещает UVM Objections и задачу запуска теста (
run_test). Публикация интересна прежде всего тем, что объясняет, почему лучше всего использовать UVM Objections для контроля выполнения тестового сценария. Объем большой, у меня вопросы вызывает 6 раздел, он перегружен по моему мнению. Тем не менее статья будет полезна для инженеров, уже имеющих базовый опыт написания UVM-окружений.
Using UVM Virtual Sequencers & Virtual Sequences. Абсолютно базовая публикация про виртуальные последовательности в UVM и хорошие практики для их запуска. Объясняются причины, по которым использование виртуальных последовательностей порой сильно упрощает жизнь инженеру. Разбирается виртуальный секвенсер (virtual sequencer). Очень нравится рассказ про
m_sequencer и
p_sequencer, а также разницу между ними. От себя замечу, что для запуска последовательностей в примерах используется два подхода: через макрос
uvm_do_on и через встроенный в последовательность метод
start(). Я советую всегда использовать
start(). Статью рекомендую инженерам с опытом в UVM.
UVM Reactive Stimulus Techniques. Публикация, раскрывающая основные концепции взаимодействия
uvm_driver и
uvm_sequencer, в особенности так называемый Reactive Stimulus, то есть подачу входных значений на дизайн, в зависимости от того, какие значения на выходах. Приведен отличный пример верификации FIFO различными тестовыми сценариями, поведение которых зависит от статусных сигналов дизайна. Советую всем, кто планирует осваивать UVM на хорошем уровне.
The Untapped Power of UVM Resources and Why Engineers Should Use the uvm_resource_db API. Статья 2023 года, которая досконально разбирает базу данных UVM, ее внутреннее устройство и методы для взаимодействия с ней. Сравниваются API для доступа к базе данных:
uvm_config_db и
uvm_resource_db. Рассматриваются преимущества и недостатки. Делается вывод в пользу
uvm_resource_db. Статья уникальна в том, насколько глубоко разбирается работа базы конфигурации. Ничего подобного не встречал больше нигде. Рекомендую инженерам с опытом в UVM.
Yikes! Why is My SystemVerilog Still So Slooooow?Завершающая список публикация. Очень полезна для общего кругозора в нашей с вами области. Содержит огромное количество советов по ускорению симуляции кода при помощи "хороших практик". Разбираются примеры "плохих" и "хороших" реализаций по итерированию, созданию и рандомизации классов, выводу отладочной информации в UVM и т.п. Аналогов данной статьи не находил, очень полезно. Единственный минус - часть примеров используют UVM. Тем не менее, советую абсолютно всем.