verilog или systemc для тестового стенда
-
19-08-2019 - |
Вопрос
Мне поручено проверить некоторый код RTL на основе Verilog.Теперь кодирование тестового стенда RTL с использованием verilog кажется очень сложным (для меня).Поэтому я хотел бы попробовать одно из следующих действий.- Попробуйте предоставить интерфейс PLI для RTL и тем самым вызовать функции C для тестирования - Использование System 'C для взаимодействия функций «C»
ПС:У меня уже есть обширный код на языке C, который использовался для тестирования поведенческой модели.Я новичок в мире аппаратного программирования.Любые указатели будут с благодарностью оценены.
Решение
Если у вас уже есть обширный код C, который использовался для тестирования поведенческой модели, тогда вам нужно просто добавить интерфейс PLI (или DPI), который позволит вам вызывать этот код C из verilog.
SystemC — это, по сути, C++ с множеством классов, позволяющих моделировать аппаратное обеспечение.Я не понимаю, какую пользу вам принесет изучение SystemC для решения задачи, которую вы пытаетесь решить, поскольку у вас уже есть доступная модель C, на которой вы можете протестировать аппаратное обеспечение.Изучение SystemC, вероятно, является излишним для того, что вы пытаетесь сделать.
К вашему сведению.Если вы хотите изучить что-то, что сегодня широко используется в отрасли, я бы посоветовал вам изучить SystemVerilog.В наши дни SystemVerilog, по сути, verilog со множеством встроенных функций языка программного обеспечения высокого уровня;наряду с «VMM», «методологией проверки» (т.е.куча библиотек), похоже, сейчас в моде в сфере проверки оборудования.
Другие советы
На вопрос не так просто ответить, не зная вашего DUV (проверяемого устройства) или имеющегося у вас кода C. Вам нужны средства для стимулирования и проверки вашего дизайна, здесь вам, вероятно, нужно перевести с / на уровень транзакции (структуры данных C) на / с уровня вывода. Интерфейсы SystemVerilog или SystemC могут быть подходом. Я еще не использовал интерфейсы DPI / PLI.
Чтобы иметь " современное состояние " testbench, вы должны рассмотреть возможность использования одной из методологий testbench, а именно: VMM или OVM . Они также предоставят вам документацию по началу работы.
Похоже, вы должны приобрести такой инструмент, как симуляторы Mentor или Cadence, которые объединяют код RTL и SystemC в одной системе. Не бесплатно, конечно, но это решение для того, что существует на практике. Р>
Структурно правильное решение, которое вам нужно, - это чтобы C или SystemC вызывали RTL, а не наоборот. Это подразумевает интеграцию некоторых RTL-симуляторов с вашей C-программой или SystemC-программой. Это, конечно, выполнимо, но довольно большое дело.
Кроме того, я думаю, что использование SystemVerilog имеет большой смысл.
Я использовал как для SystemC, так и для System Verilog / VMM для проверки, и ответ таков, это зависит. Когда я работал с стартапом с ограниченным бюджетом, пытаясь выпустить свой первый ASIC, SystemC был естественным выбором, потому что он работал на нашем малобюджетном симуляторе, а SystemVerilog - нет. С SystemC вам не нужно использовать PLI или DPI. Вы фактически создаете свою модель SystemC как компонент в своем стенде, что интересно. Р>
Однако SystemC - это библиотека C ++, которая НЕ имеет очень интуитивного синтаксиса. Вы должны иметь приличный фон C ++, прежде чем пытаться изучать библиотеку SystemC. Книги для этого, которые доступны в основном, отстой, за исключением & Quot; SystemC с нуля & Quot; Дэвид Блэк.
Начнем с того, что из того, что я видел, SystemC, естественно, является языком моделирования высокого уровня, а не языком верификации, и никто с каким-либо бюджетом, чтобы купить реальные симуляторы, больше не использует SystemC для верификации. С точки зрения общего развития карьеры, я бы использовал System Verilog, если она вам доступна. Кроме того, вы всегда можете использовать DPI для взаимодействия с вашей моделью C для проверки выходных данных, в которой все еще используются генераторы, мониторы и табло, написанные на SV / VMM.