verilog или systemc для тестового стенда

Мне поручено проверить некоторый RTL-код на основе Verilog. Теперь кодирование тестового стенда RTL с использованием Verilog кажется очень сложным (для меня). Поэтому я хотел бы попробовать один из следующих. - Попробуйте предоставить интерфейс PLI для RTL и, таким образом, вызвать функции C для тестирования. - Использование системного языка C для взаимодействия с функциями языка C.

PS: у меня уже есть обширный код на C, который использовался для тестирования поведенческой модели. Я новичок в мире аппаратного программирования. Любые указатели будут очень признательны.


person Alphaneo    schedule 17.03.2009    source источник


Ответы (4)


Если у вас уже есть обширный код C, который использовался для тестирования поведенческой модели, то нужно просто добавить интерфейс PLI (или DPI), который позволит вам вызывать этот код C из Verilog.

SystemC — это, по сути, C++ с множеством классов, позволяющих моделировать HW. Я не вижу, какую пользу вам принесет изучение SystemC для задачи, которую вы пытаетесь решить, поскольку у вас уже есть доступная модель C, с которой вы можете протестировать HW. Изучение SystemC, вероятно, излишне для того, что вы пытаетесь сделать.

к вашему сведению. Если вы хотите изучить что-то, что сегодня широко используется в отрасли, я бы посоветовал вам изучить SystemVerilog. В наши дни SystemVerilog, в основном, verilog с набором встроенных функций программного языка высокого уровня; наряду с «VMM», «методология проверки» (т. Е. Набор библиотек), кажется, в моде в области проверки оборудования.

person Himadri Choudhury    schedule 17.03.2009
comment
Большое спасибо за ваше хорошее объяснение. Я также обнаружил, что system-c — это излишество, и реализовал уровень DPI для взаимодействия кода Verilog с «C. Самое лучшее, ЭТО РАБОТАЕТ. Еще раз, спасибо. - person Alphaneo; 21.03.2009

На этот вопрос не так просто ответить, не зная вашего DUV (проверяемое устройство) или кода C, который у вас есть. Вам нужны средства для стимуляции и проверки вашего дизайна, здесь вам, вероятно, нужно перевести с/на уровень транзакций (структуры данных C) на/с уровня контактов. Интерфейсы SystemVerilog или SystemC могут быть подходом. Я еще не использовал интерфейсы DPI/PLI.

Чтобы иметь «современный» тестовый стенд, вам следует рассмотреть возможность использования одной из существующих методологий тестового стенда, а именно VMM или OVM. Они также предоставят вам документацию, как начать работу.

person danielpoe    schedule 17.03.2009

Похоже, вы должны получить такой инструмент, как симуляторы Mentor или Cadence, которые объединяют код RTL и SystemC в одной системе. Не бесплатно, конечно, но это решение для того, что существует на практике.

Структурно правильное решение, которое вам нужно, состоит в том, чтобы C или SystemC вызывали RTL, а не наоборот. Это подразумевает интеграцию некоторого симулятора RTL с вашей программой C или программой SystemC. Это, конечно, выполнимо, но довольно большая задача.

Кроме того, я думаю, что использование SystemVerilog имеет большой смысл.

person jakobengblom2    schedule 14.08.2009

Я использовал для проверки как SystemC, так и System Verilog/VMM, и ответ таков: это зависит от обстоятельств. Когда я работал со стартапом с ограниченным бюджетом, пытающимся выпустить свой первый ASIC, SystemC был естественным выбором, потому что он работал на нашем малобюджетном симуляторе, а SystemVerilog — нет. С SystemC вам не нужно использовать PLI или DPI. На самом деле вы создаете модель SystemC как компонент в своем тестовом стенде, что интересно.

Однако SystemC — это библиотека C++, у которой НЕ очень интуитивно понятный синтаксис. Вы должны иметь приличный опыт работы с C++, прежде чем пытаться изучить библиотеку SystemC. Книги для этого, которые доступны, в основном отстой, за исключением «SystemC from the Ground Up» Дэвида Блэка.

Начнем с того, что из того, что я видел, SystemC, естественно, является языком моделирования высокого уровня, а не языком проверки, и никто, у которого нет денег на покупку реальных симуляторов, больше не использует SystemC для проверки. С общей точки зрения развития карьеры я бы использовал System Verilog, если он вам доступен. Кроме того, вы всегда можете использовать DPI для взаимодействия с вашей моделью C для проверки вывода, которая по-прежнему использует генераторы, мониторы и табло, написанные на SV/VMM.

person SDGator    schedule 24.10.2009