Вопрос

Мне поручено проверить некоторый код 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top