Verilog или Systemc для испытательного стенда - PullRequest
1 голос
/ 17 марта 2009

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

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

Ответы [ 4 ]

5 голосов
/ 17 марта 2009

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

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

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

4 голосов
/ 17 марта 2009

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

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

0 голосов
/ 24 октября 2009

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

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

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

0 голосов
/ 14 августа 2009

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

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

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

...