|
|
  |
SystemVerilog и средства создания верификационных сред (VERA-HVL), перенесено |
|
|
|
Sep 14 2004, 06:09
|

к.т.н.
  
Группа: Модераторы
Сообщений: 242
Регистрация: 21-06-04
Из: Санкт–Петербург, Россия
Пользователь №: 75

|
Стаднарт – это здорово!  ) У меня он уже пол года наверно валяется  Впрочем все равно спасибо. Меня интересует методика его применения, а не соббсно стандарт. Вот на амазоне например есть книженция, вот такую бы найти... http://www.amazon.com/exec/obidos/ASIN/140...6950536-1986240А System Verilog процентов на 70 поддержан в MODELSIM 6
|
|
|
|
|
Sep 15 2004, 05:50
|
Частый гость
 
Группа: Свой
Сообщений: 136
Регистрация: 26-07-04
Из: Europe
Пользователь №: 387

|
Разработка верификационных сред на базе "чистых" языков HDL (VHDL/Verilog) эффективно поддерживает концепцию Assertion-based Verification, то есть когда при подаче на вход верифицируемого модуля (DUV) известной последовательности тестовых сигналов на выходе ожидается опять-таки заведомо известная последовательность выходных. Предположение о состоянии выхода схемы (assertion) позволяет сравнить ожидаемое и фактическое значения.
Теперь представьте себе ситуацию, когда верификации подлежит устройство, обрабатывающее потоки данных (роутеры, память, и т.д.). Другими словами, устройства, работа которых основана на транзакциях. Во что превратится написание testbench для самого простого устройства, если желательно проверять не только один и тот же набор данных, но и динамически рандомизируемый в достаточно широких пределах. Assertion-based verification здесь не подходит. Нужна Transaction-based Verification.
Вот для этого и был разработан язык верификации аппаратуры VERA. По сути и по синтаксису - это сплав Verilog и J++. Первый дает привязку к событиям, понятным и принятым в цифровой аппаратуре (clock, interruprt, etc.), второй - многопоточность и все, что можно вложить в смысл выражения "объектно-ориентированное программирование". Подчеркиваю, не С++, а J++, так как это важно. Fork - join конструкция в С++, как мне кажется, отсутствует.
Так вот. Задача верификатора с помощью VERA разработать Verification Environment, состоящий и VERA-программы, VERA-обвязки, HDL- или VERA-модели верифицируемого объекта и симулятора (поддерживаются VCS, NC-Verilog, Scirocco, Modelsim). Связь VERA-программы и симулятора выполняется на основе PLI-вызовов.
Что дает применение этого языка? Гибкость при разработки сложных устройств (ASIC/multimillion gates FPGA). Естественно, что городить весь этот лес для простого контроллера памяти не стоит. Подойдет обычный HDL-testbench. А вот если у вас ASIC, занимающийся роутингом потоков данных в различных форматах, льющихся с трех-четырех интерфейсов при data rate = OC192 (или, хлеще, OC768), то например Gigabit Ethernet, то вы не найдете другого решения как применить что-то лучше, чем Assertion-based Approach.
Господа, материала много. Если это кого-то заинтересует, то можно будет пообсуждать сотрудничество. Здесь можно писать еще и еще, но место и время - понятия здесь не бесконечные...
|
|
|
|
|
Sep 15 2004, 06:17
|

к.т.н.
  
Группа: Модераторы
Сообщений: 242
Регистрация: 21-06-04
Из: Санкт–Петербург, Россия
Пользователь №: 75

|
Завязался, на мой взгляд, очень интересный разговор! Есть предложение перенести его в соотвествующий раздел... Модераторы, ау!  ))
|
|
|
|
|
Sep 21 2004, 19:42
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326

|
oleg_rudakov А есть реальный опыт использования Transaction-based Verification с использованием PLI-вызовов? Только на прошлой неделе дал студенту задание разработать модель CPU и EthernetCard на C++ под PLI с возможностью модификации модели - сопряжению с реальной EthernetCard. Так вот, студент говорит, что такое невозможно  - only HDL & TextFile with MII. Как есть мысли у All на этот счет ?
|
|
|
|
|
Sep 23 2004, 12:14
|
Частый гость
 
Группа: Свой
Сообщений: 136
Регистрация: 26-07-04
Из: Europe
Пользователь №: 387

|
To ASN:
Не совсем понял вопрос: требуется функциональная верификация HDL-модели, поведенческое моделирование системы или отладка железа In-System? В зависимости от ответа - различные решения.
Возможна функциональная верификация с помощью SystemC. TVA здесь легко реализуется, как и Object-Oriented Verification. PLI писать не придется, так как ModelSim 6.0 SE и Active-HDL уже имеют реализованный PLI от SystemC к своим симуляторам. Написание собственного PLI - дело затратное и неблагодарное. Если цель - научить писать PLI, то лучше снизить сложность другой части проекта. Это мое личное мнение как человека, работавшего в высшей школе (пусть немного, 5 лет), и уже в течение других 5 лет работающего в реальном секторе электронной промышленности. Студента лучше не грузить - результата не будет, да и эффективность решения невелика. А здесь явно две большие порции на разработку.
Поведенческая модель - дело другое. SystemC здесь - на первом месте (пока толкового SystemVerilog-симулятора нет). Сразу же оговорюсь, Modelsim 6.0 SystemVerilog понимает, но усеченный subset от стандарта Accelera. Опять же, PLI тоже должен быть реализован. Стандартный Verilog PLI (для VHDL - VHPI) есть у каждого промышленного симулятора: NC-Veriog, Scirocco, VCS, Modelsim.
In-System Debugging, вообще лучше делать через JTAG: IMHO подойдут ChipScope (Xilinx), Identify (Synplicity).
Реальный опыт, естественно, имеется. Только никто разработкой PLI не занимался по вышеуказанной причине: интеграция симулятора и C++ программы - дело для качественного фирменного продукта.
Если неправильно трактую вопрос - поправьте и уточните.
|
|
|
|
|
Sep 23 2004, 19:36
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326

|
oleg_rudakovВсё очень просто  . Жизнь заставляет выполнить системную верификацию всего изделия в целом (а не только своего FPGA блока), а я в этом пока не очень смыслю, поэтому заранее прошу прощения за, возможно, неверно используемую терминологию. Есть проект с большим количество FPGA и CPLD. Их структура разработана на HDL (в основном VHDL, но есть и Verilog). В проекте есть несколько процессоров (покупных), а также Ethernet, RS232 и еще несколько интерфейсов. Существуют HDL-модули уровня шины процессора и MII интерфейса. Для них вручную пишутся testbenches. Нужно протестировать весь тракт прохождения сигнала, причем желательно с софтом, функционирующем на процессорах. Ясно, что проще сделать железку и протестировать её по полной  , но это: - дорого (нужно много специального оборудования - логических анализаторов, генераторов сигналов и т.д.); - долго по времени (подготовка и проведение эксперимента); - не позволяет не разрушая изделие имитировать неисправности; - не формирует комплексную картину (включая изменения состояний внутри ПЛИС). Поэтому желательно "поместить" изделие в “реальные условия”. Есть недоделанная поведенческая модель CPU, написанная на HDL. Студенту поставлена задача либо её довести до “удобоваримого” состояния на HDL, либо перенести её на другой язык и подключить виде внешнего модуля к испытательному стенду. Студент – чистый программист, имеет очень поверхностное представление о том, что такое цифровая электроника. Зато лихо рубит в С++. Вот я и подумал, что если есть возможность подключить С++-модель процессора и Ethernet Card к испытательному стенду (сейчас A*ctiveHDL, но скоро наверно заставят перейти на FA), то было бы здорово это осуществить, ибо обучать студента электронике и HDL у меня нет ни времени, ни желания, а сам он вряд ли в состоянии их освоить без посторонней помощи. Вот если смогу выкроить время, покапаю сам - возможно ли сделать подобные внешние модели, или легче написать “генератор испытательных стендов” который из программы для CPU, “фотки” Ehernet кадра формирует файл со входными воздействиями. Если не трудно, подскажите что можно посмотреть на эту тему.
|
|
|
|
|
Sep 24 2004, 06:50
|
Частый гость
 
Группа: Свой
Сообщений: 136
Регистрация: 26-07-04
Из: Europe
Пользователь №: 387

|
Боюсь, что из всего вышеперечисленного извлекается задача, не имеющая тривиального решения.
Имея модели всех частей проекта, объединить их в работающий стенд (на реальном битрейте), скорее всего, не удастся. То, о чем Вы пишете, называется эмулятор. Такое устройство используется для функциональной верификации RTL-модели сложного устройства (типа ASIC), и представляет из себя здоровенный ящик размером со стол, набитый платами с FPGA, объединенными в матрицы, и имеющий ряд стандартных интерфейсных плат. Так вот, в это устройство "заливается" RTL-модель, и весь "стол" начинает работать как одна ASIC. Естественно, что никаких реальных битрейтов нет. Только голая функциональная отладка.
Слить ПО, живущее на ПК под управлением чаще всего Windows, и живое железо, и заставить их работать как единое целое (а именно это и понадобится для верификации) не удастся. Причина - Windows не является ОС РВ. Я однажды сталкивался с похожей задачей, но она предназначалася для моделирования процессов стыковки/расстыковки космического летательного аппарата и реализовывалась на платформе рабочих станций Silicon Graphix под управлением IRIX и QNX. Это был еще тот монстр!
Если я опять что-то "не догнал" - уточните.
|
|
|
|
|
Sep 24 2004, 07:12
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326

|
oleg_rudakovДо ASIC дело не дойдет никогда, принципиально не дойдёт. Это одно из основных требований.  ПО функционирует на процессорах. Операционки там никакой нет, только свое firmware. Под "реальными условиями" понимаются модели наиболее типичных ситуаций. Собственно, дано проанализировать поведение устройтсва на наиболее возможных комбинациях сигналов. Возможно приедется изменять структруру устойства по результам математического моделирования. Требуется автоматизировать процесс разработки testbenches. Просто уже достало вручную набивать многометровые листинги тестовых векторов.
|
|
|
|
|
Apr 6 2005, 14:10
|
Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 15-03-05
Пользователь №: 3 378

|
Цитата(ASN @ Sep 24 2004, 10:12) oleg_rudakovДо ASIC дело не дойдет никогда, принципиально не дойдёт. Это одно из основных требований.  ПО функционирует на процессорах. Операционки там никакой нет, только свое firmware.......Просто уже достало вручную набивать многометровые листинги тестовых векторов.  Я думаю что вполне полезной средой будет Visual Elite... позволяет и Mix Modeling -(SystemC\VHDL\Verilog) & и позволяет писать, использовать в моделировании VirtCPU.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|