Многопоточность в UVM

Как мы можем включить многопоточность в UVM. Находятся ли потоки в испытательном стенде UVM, расширенные компоненты UVM, последовательности и методы между разветвлением и соединением? Насколько я искал, такой многопоточный тестовый стенд вряд ли повлияет на ускорение времени моделирования или повышение производительности, если только дизайн не разделен на несколько ядер оборудования. Это так?


person Ahlawat Deepika    schedule 07.05.2014    source источник
comment
Тестовый стенд UVM не должен потреблять более 5-10% процессорного времени. Код RTL обычно является узким местом моделирования. Если вам действительно нужна производительность, симуляция — не лучшее решение. Вы, вероятно, захотите рассмотреть возможность использования платформы эмуляции. Оптимизация тестового стенда может дать вам ускорение не более чем в 2 раза, окно эмуляции в режиме ускорения моделирования легко даст вам ускорение в 1000 раз.   -  person hevangel    schedule 07.11.2019


Ответы (2)


Многопоточность в контексте SystemVerilog/UVM не имеет ничего общего с многоядерным оборудованием. Хотя поставщики EDA обеспечивают многоядерную поддержку, это не то, что вы можете контролировать посредством кодирования.

Также взгляните на этот вопрос: запуск фаз UVM на нескольких ядрах.

На заметку:

Моделирование HDL по своей природе является многопоточным, потому что вы должны захватывать обновления сигналов, которые происходят параллельно. SystemVerilog также позволяет пользователю создавать свои собственные параллельные потоки выполнения, используя семейство конструкций fork...join. Сама UVM активно использует эту функцию, например, для параллельного запуска последовательностей и фаз выполнения всех компонентов. Конечно, вы также можете использовать fork...join в своем собственном коде, чтобы запускать свои собственные параллельные потоки, если вам нужно.

Еще одно замечание: я думаю, что терминология для запуска подобных потоков в SV - это "запуск параллельных процессов".

person Tudor Timi    schedule 07.05.2014
comment
Да я это понимаю. Многоядерное моделирование зависит от инструмента. Я хотел бы понять, на что будет похож многопоточный тестовый стенд UVM? Насколько я искал, многопоточный тестовый стенд UVM связан с разными потоками, работающими на разных ядрах оборудования. Означает ли это, что многопоточный тестовый стенд в UVM — это всего лишь многоядерная симуляция? - person Ahlawat Deepika; 07.05.2014
comment
Прочитайте ответ еще раз: многопоточный UVM не имеет ничего общего с потоками на ядрах процессора. - person Tudor Timi; 07.05.2014
comment
Пожалуйста, расскажите о многопоточном испытательном стенде UVM (многоядерность не рассматривается). Означает ли многопоточность в UVM испытательный стенд, включающий расширенные компоненты UVM, последовательности и методы между разветвлением и соединением, как задано в моем 1-м вопросе. Если да, то означает ли это, что испытательный стенд UVM по своей природе является многопоточным? Если нет, то как концепция многопоточности может быть включена в испытательный стенд UVM? - person Ahlawat Deepika; 07.05.2014
comment
Многоядерная поддержка, предоставляемая поставщиками EDA, ограничена только модулями уровня RTL и Gate, которые могут быть структурно разделены на в основном независимые блоки, которые затем моделируются параллельно на нескольких ядрах. Что касается поведенческих конструкций SystemVerilog, из которых состоит тестовый стенд UVM, инструменты не могут выполнять такие задачи в многоядерном параллельном смысле. Обратите внимание, что это ограничение SystemVerilog, поскольку язык не определяет семантику параллелизма. - person Puneet Goel; 24.07.2014

Для меня и вопрос, и ответ показывают замешательство. Ахлават, кажется, задает два вопроса:

(1) разве испытательный стенд UVM не является многопоточным по своей природе? а также

(2) если нет, можно ли ввести многопоточность в испытательный стенд UVM?

Я думаю, что ответ на вопрос № 1 сбивает с толку, потому что я думаю, что утверждение о том, что HDL-моделирование является многопоточным по своей природе, неверно. Моделирование HDL пытается смоделировать параллелизм в конструкции оборудования, где все различные электронные компоненты работают параллельно; но он не использует многопоточность для моделирования этого. Вместо этого симуляторы HDL (которые, конечно же, сами являются программами) являются, по крайней мере, традиционно, однопоточными программами. Вполне возможно смоделировать эффекты параллелизма в однопоточной программе, и именно это и делают симуляторы HDL. Моделирование параллелизма, то есть создание иллюзии того, что вещи происходят одновременно, — это не то же самое, что вещи, происходящие на самом деле в одно и то же время.

Многопоточность означает разбиение данной программы на несколько программ, которые могут выполняться одновременно. Теперь от операционной системы зависит, действительно ли они работают одновременно.

А операционная система, в свою очередь, ограничена архитектурой процессора и памяти машины.

  1. На многоядерном компьютере вполне вероятно, что разные потоки будут выполняться на одном ядре.
  2. На одноядерном компьютере, где ядро ​​старомодного типа без возможности размещать внутри себя несколько потоков, многопоточности фактически не будет, скорее будут переключаться разные потоки как переключение контекста.

Что ж, теперь, когда все сказанное, один аспект данного ответа был точным, а именно то, что конструкции fork-join, которые не являются частью UVM как таковой, а скорее Verilog и System Verilog, позволяют, по сути, , укажите операционной системе, что вы хотите, чтобы определенный код в вашей тестовой среде выполнялся в отдельных потоках. Но это не свойство библиотеки UVM, а конструкция Verilog/System Verilog.

person Richard    schedule 26.01.2015