Перейти к содержанию
    

Методологии построения сред верификации проектов

С появлением стандартов нового поколения унифицированных аппаратно-ориентированных языков типа HDSVLs (Hardware Design, Specification, and Verification Languages) и принятием их на вооружение средствами компьюторизированной разработки аппаратуры появилась необходимость в систематизации и методологии использования новых языковых возможностей, особенно в области моделирования и верификации проектов, где с введением в языки объектной ориентации наблюдается наиболее существенный прорыв.

Своё внимание на разработке методологий верификации в последнее время сосредоточили все основные участники рынка средств моделирования и организованные ими коллаборации. Помимо разработки самих концепций посторения верификационной среды проекта участники коллабораций и производители ПО разрабатывают библиотеки базовых классов (шаблоны) для реалицации на их базе предложенных концепций.

Данная ветка предназначена для сбора методических материалов, публикации новостей из области методологий верификации и обсуждения базовых принципов приложения той или иной методологии построения верификационных сред проектов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

приведу ссылочки, которые уже были любезно предоставлены участниками форума в частности lotorev, des00, тот_кого_случайно_забыл

 

http://www.ovmworld.org/ - официальный сайт OVM

http://www.vmmcentral.org/ - официальный сайт VMM

http://www.mentor.com/products/fv/_3b715c/ - AVM от MentorGraphics

 

http://www.doulos.com/knowhow/sysverilog/ovm/ - тьюториал по OVM от Doulos

http://www.testbench.in/ - здесь можно найти примеры тестбенчей построенных по AVM, VMM, RVM(OpenVera)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вот и первый мега баг в тему. Похоже мне везет на попадания на баги %)))

 

Итак имеем OVM-2.0 + квесту 6.4. Проблем с поддержкой быть не должно

 

Various versions of OVM have been tested on various version of Questa.
The table below matches OVM versions and Questa versions
+-------------+----------------+
| OVM Version | Questa Version |
+-------------+----------------+
| 2.0         | 6.3h, 6.4      |
+-------------+----------------+

 

Пример примитивнейший.

 

module pipa #(parameter int pA = 0, pB = 1);

  localparam int cA = pA;
  localparam int cB = pB;

endmodule


module tb;

  pipa #(0, 1) uut ();

  import ovm_pkg::*;
  `include "ovm_macros.svh"

  class simple_item extends ovm_sequence_item;
    //
    // OVM tail
    //
    `ovm_object_utils(simple_item)

    function new (string name = "");
      super.new(name);
    endfunction
  endclass

  class simple_seq extends ovm_sequencer;
    //
    // OVM tail
    //
    `ovm_sequencer_utils(simple_seq)

    function new (string name = "", ovm_component parent = null);
      super.new(name, parent);
    endfunction
  endclass

  simple_seq seq;

  initial begin : main
    seq = new("seq", null);
    $stop;
  end

endmodule

 

компилится без проблем и вот магические vsim -novopt work.tb и .....

 

# Refreshing D:\work_des00\bug\work.pipa

# Loading work.pipa

# ** Error: (vsim-3978) nofile(31): Illegal assignment to variable of class ovm_component from variable of class <temp_name>

# Time: 0 ns Iteration: 0 Region: /ovm_pkg::ovm_component_registry::ovm_component_registry__3 File: nofile

# ** Error: (vsim-3046) nofile(30): Too many arguments to 'new'.

# Region: /ovm_pkg::ovm_component_registry::ovm_component_registry__3

# ** Error: (vsim-3046) nofile(30): Too many arguments to 'new'.

# Region: /ovm_pkg::ovm_component_registry::ovm_component_registry__3

# ** Error: (vsim-3978) nofile(30): Illegal assignment to variable of class ovm_object_wrapper from variable of class <temp_name>

# Time: 0 ns Iteration: 0 Region: /ovm_pkg::ovm_component_registry::ovm_component_registry__3 File: nofile

# Error loading design

 

а причина вот в чем. заменим статический модуль (!!!) pipa на вот такой

 

module pipa #(parameter int pA = 0, pB = 1);

//localparam int cA = pA;
//localparam int cB = pB;
  localparam int cA = 0;
  localparam int cB = 1;

endmodule

 

и вуаля

 

# Refreshing D:\work_des00\bug\work.pipa

# Loading work.pipa

# ----------------------------------------------------------------

# OVM-2.0

# © 2007-2008 Mentor Graphics Corporation

# © 2007-2008 Cadence Design Systems, Inc.

# ----------------------------------------------------------------

 

На либе 1.1 все работает нормально.

 

Кстати тоже относится и к внутренним параметрам (parameter) модуля с присвоением ему значений внешних параметров.

 

Вот каким местом связан локальный модуль с динамически создаваемыми объектами, и как он может вызвать проблемы в конструкторе класса для меня остается загадкой.

 

Такое происходит только на двух классах ovm_driver и ovm_sequencer. На классах ovm_component(от которого наследуется ovm_driver/ovm_sequencer !!!), ovm_env, ovm_test все хорошо.

 

Обладателям более новых версий квесты, если не сложно, попробуйте этот вариант запустить. Для этого скомпилируйте OVM-2.0 и поправьте в modelsim.ini

;LibrarySearchPath = mtiAvm mtiOvm mtiUPF
LibrarySearchPath = ovm

 

Обладателям акаунтов у ментора, если не сложно, напишите в саппорт об этой проблеме. Я было полез на форум ovmworld но мне не дают там писать посты, админ форума тоже молчит :(.

 

Заранее спасибо!!!

 

ЗЫ. Все это у меня выскочило на достаточно большом проекте, поиски кто виноват заняли не один час копания в коде и документации на OVM. %(

 

ЗЗЫ. Пока откатился на версию 1.1.1, правда она "более многословна" чем 2.0 %(. Приходится вместо красивого и понятного

 

m_seq = sequencer::type_id::create("m_seq", this)

 

писать по старинке

 

$cast(m_seq, create_component("sequencer", "m_seq"))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вот и первый мега баг в тему.

 

Оставить панику!!!, это бага квесты. значитца так сей эффект возникает только при запуске моделирования вообще без оптимизатора.

 

vsim -novopt work.tb

 

если пусть все под полной оптимизацией

 

vsim work.tb

 

то все хорошо, правда теряется видимость RTL объектов для отладки. Но такой вариант

 

vsim work.tb -voptargs="+acc" pipa

 

работает и даже отлаживаться дает %))

 

Всем спасибо!!!

 

ЗЫ. Если есть время рекомендую начать копаться с 1.1, в 2.0 много операций скрыто, не дает прочувствовать "красоту" игры.

 

ЗЗЫ. Занятный тред о "нужности" многих фичей SV http://ovmworld.org/forums/showthread.php?t=245

от гуру верифкации и очень красивое заворачивание BFM в абстрактный класс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После первых проб и ошибок сложилась примерная картина о возможностях OVM.

Вопрос в следующем - может ли кто из здесь присутствующих провести примерный анализ увеличения производительности от использования данного продукта. На разработку тестбенча для крупного проекта уходит достаточно много времени. Зачастую даже больше, чем на разработку самой тестируемой модели. Теорию я знаю - читал зазывные агитки московской конференции ментора. А как обстоят дела с практикой?

В одной из веток я так же задавал вопрос об интеграции ovm не только с квестой, в которой я сейчас и работаю, а со всем пакетом ментора. Тоесть когда тестбенч, построенный согласно ovm, можно будет создавать в FPGA Advantage,а не отдельно в квесте, как сейчас? Может кто знает о последних новинках? HDL designer новый уже прекрасно понимает SV, а когда же будет графика?

Вобщем вот такие вопросы волнуют простого российского конструктора/разработчика IP ядер :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос в следующем - может ли кто из здесь присутствующих провести примерный анализ увеличения производительности от использования данного продукта. На разработку тестбенча для крупного проекта уходит достаточно много времени. Зачастую даже больше, чем на разработку самой тестируемой модели. Теорию я знаю - читал зазывные агитки московской конференции ментора. А как обстоят дела с практикой?

 

Полагаю что из активных участников форума, похоже что я единственный кто занимается OVM достаточно плотно %(( Вот моя точка зрения.

 

Насчет времени разработки тестбенча не могу понять что вас удивляет, вы знаете примеры когда разработка автоматизированного (НЕ ad-hoc) тестбенча с функциональным покрытием >80% занимала мало времени? К сведению верификация занимает порядка 50% времени разработки крупного проекта.

 

Насчет увеличения производительности тут вопрос сложный.

Что касается первого проекта на OVM то : Если вы не приняли концепцию SV ООП увеличение составит минус (200-300)%. Если вы уже работали с SV ООП и достаточно хорошо разбираетесь в рандомизации, ее ограничениях, механизме синхронизации программных тредов и подходах в отладке на классах то оно составит минус (100-200)%.

 

После этого если вы не будете пользоваться какой либо библиотекой вы в любом случае будете разрабатывать транзакции с констрейнами, драйвера, агенты, мониторы, придумывать систему переопределения свойств и параметров объектов, систему логов. В итоге это получится та же OVM/VMM/AVM только заточенная под конкретный тестбенч. Поэтому не думаю что не используя готовые (и отлаженные сообществом разработчиков !!!) либы вы выиграете время.

 

Что касается OVM никто не заставляет вас делать как в учебниках т.е. использовать те интерфейсы и методы которые они предлагают(хотя это более правильно). Из материалов форума ovmworld я понял что сами разработчики достаточно свободно себя ведут, не всегда регистрируют объекты, создают компоненты, транзакции без фабрики и макросов и т.д(но к сожалению этого в учебниках не описано). Тут полная свобода действий %)

 

Что касается конкретных цифр, я планирую модернизировать/переписать тестбенч для своего опенсорс проекта. Потребуется 100% переписка того кода, который есть. С точки зрения того OVM опыта что у меня есть сейчас это должно занять 2 полноценных дня. При этом ляжет все достаточно красиво, понятно и компактно. У меня нет 100% уверенности в этом, на эту работу планирую выделить ближайшие выходные, после этого станет ясно ошибся я или нет. Если интересно потом могу сообщить результат %))

 

В одной из веток я так же задавал вопрос об интеграции ovm не только с квестой, в которой я сейчас и работаю, а со всем пакетом ментора. Тоесть когда тестбенч, построенный согласно ovm, можно будет создавать в FPGA Advantage,а не отдельно в квесте, как сейчас? Может кто знает о последних новинках? HDL designer новый уже прекрасно понимает SV, а когда же будет графика?

 

в той же ветки я вам ответил %) вот моя точка зрения:

 

никогда не работал с FPGA Advantage, от HDL Designera меня тошнит (все равно не рисую, а редактор там ТАК тормозит), как можно работать в убогом интерфейсе квесты тоже не понимаю. Все делаю в обычном текстовом редакторе, компилирую в нем же или с командной строки/скриптами. Поэтому не могу понять вашей ситуации. Не собираетесь же вы SV классы создавать, описывать методы, соединять, конфигурировать в GUI мышкой? Не вижу в этом ни смысла ни искры.

 

Ну вот как то так %))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во первых - спасибо за развёрнутый ответ. :a14:

Все, что касается первой части поста мне понятно. Лишь одна поправка - верификация занимает 50% времени на программном уровне. Если прибавить отладку в железе, то общая верификация занимает до 80-90% времени работы с проектом. В экономии времени при работе с железом и есть основной плюс верефикации средствами VMM и OVM.

А вот далее...

 

...

никогда не работал с FPGA Advantage, от HDL Designera меня тошнит (все равно не рисую, а редактор там ТАК тормозит), как можно работать в убогом интерфейсе квесты тоже не понимаю. Все делаю в обычном текстовом редакторе, компилирую в нем же или с командной строки/скриптами. Поэтому не могу понять вашей ситуации. Не собираетесь же вы SV классы создавать, описывать методы, соединять, конфигурировать в GUI мышкой? Не вижу в этом ни смысла ни искры.

...

Выбор FPGA Advantage в качестве основного продукта зависел не от меня. Однако со временем я нашёл ряд преимуществ в работе с данным пакетом. Не буду заниматься описанием всех плюсов тут, скажу одно - при командной работе над масштабными проектами, к тому же, когда уровень разработчиков в команде весьма и весьма разнообразный :) , пакет FPGA Advantage - один из лучших выборов (под Altera).

В убогом интерфейсе квесты я тоже не работаю, пишу текстовым редактором, от квесты беру компилятор. НО, Если бы когда-нибудь появилась графическая интерпретация SV, процесс создания тестбенчей и реюза увеличился бы многократно. В моей команде много специалистов по VHDL/Verilog. Однако многие из них имеют слабое представление об ООП. Вот поэтому и возникает необходимость "SV классы создавать, описывать методы, соединять, конфигурировать в GUI мышкой".

 

С нетерпением жду информации о 100% переписывании старого тестбенча. У меня на такие вещи времени сейчас нету, может после Нового Года смогу уделить время модернизации старых проектов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вы не приняли концепцию SV ООП увеличение составит минус (200-300)%. Если вы уже работали с SV ООП и достаточно хорошо разбираетесь в рандомизации, ее ограничениях, механизме синхронизации программных тредов и подходах в отладке на классах то оно составит минус (100-200)%.

Поясните пожалуйста, как понять фразу "увеличение производительности минус 300%" - сломал 3 проекта за время, за которое нужно было сделать один (с завтрашним праздником всех) :biggrin: ?

С точки зрения того OVM опыта что у меня есть сейчас это должно занять 2 полноценных дня. При этом ляжет все достаточно красиво, понятно и компактно. У меня нет 100% уверенности в этом, на эту работу планирую выделить ближайшие выходные, после этого станет ясно ошибся я или нет. Если интересно потом могу сообщить результат %))

И как результат?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

обвинение синопсиса в плагиате в новой версии VMM

 

автор не стесняется в выражениях %)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

слияние OVM и VMM подробно не смотрел, но похоже наделали оберток из одного в другое. Видится длинная рука аццелеры, похоже собираются стандартизировать верификацию......

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видится длинная рука аццелеры, похоже собираются стандартизировать верификацию......

а они давно хотели библиотеку в стандарт SV запихнуть, но сейчас эти настроения ушли, и даже наоборот - образовалась партия, которая вещает о том, что стандарт уже и так перегружен и по идее его нужно разгружать. так что стандартизировать будут отдельным номером.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

обвинение синопсиса в плагиате в новой версии VMM

 

автор не стесняется в выражениях %)

 

Ну допустим в этом посте автор наезжает на то что основательно перелопаченную версию VMM 2009.12 синопсис пометил минорным релизом 1.2 - я кстати тоже удивился, как основательно они перелопатив VMM, скромно отиндексировали это десятичной точкой. И то что они помучившись таки добавили class factory - это я тоже заметил. И разбили верификацию на фазы - тоже есть. И VMM1.2 нормально могла симулироваться только начиная с VCS 2009.12 :) Правда к единому базовом классу они так весь VMM и не подвели. Но видать на то есть основания.

 

слияние OVM и VMM подробно не смотрел, но похоже наделали оберток из одного в другое. Видится длинная рука аццелеры, похоже собираются стандартизировать верификацию......

 

Хорошие вести! После усушки и утряски вертеть эти классы станет легче. Вот собственно официальный документ о конечных намерениях: создать common base class library (CBCL) и Universal Verification Methodology (UVM) на основе этой CBCL.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошие вести! После усушки и утряски вертеть эти классы станет легче. Вот собственно официальный документ о конечных намерениях: создать common base class library (CBCL) и Universal Verification Methodology (UVM) на основе этой CBCL.

ну всё свершилось 17 мая 2010 Accellera выпустила UVM 1.0

в общем те кто пользовался OVM будут приятно поражены сходством(в общем за основу он и брался).

при беглом взгляде на док. кажется, что просто трибукв OVM заменили на UVM

http://www.accellera.org/activities/vip (сам пакет)

http://uvmworld.org/ (семечки пощёлкать)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну всё свершилось 17 мая 2010 Accellera выпустила UVM 1.0

в общем те кто пользовался OVM будут приятно поражены сходством(в общем за основу он и брался).

при беглом взгляде на док. кажется, что просто трибукв OVM заменили на UVM

http://www.accellera.org/activities/vip (сам пакет)

http://uvmworld.org/ (семечки пощёлкать)

Подробно пока не смотрел, но что-нибудь там вообще от VMM есть? :)  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подробно пока не смотрел, но что-нибудь там вообще от VMM есть? :)  
на мой взгляд только упоминание для утешения

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...