~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ D635EAB2F53120F434BDE2F608323C3C__1715820360 ✰
Заголовок документа оригинал.:
✰ e (verification language) - Wikipedia ✰
Заголовок документа перевод.:
✰ e (язык проверки) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/E_(verification_language) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/d6/3c/d635eab2f53120f434bde2f608323c3c.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/d6/3c/d635eab2f53120f434bde2f608323c3c__translat.html ✰
Дата и время сохранения документа:
✰ 20.06.2024 22:02:10 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 16 May 2024, at 03:46 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

e (язык проверки) — Википедия Jump to content

е (язык проверки)

Из Википедии, бесплатной энциклопедии
Это
Парадигма Аспектно-ориентированный
Разработано Йоав Холландер
Впервые появился 1992  ( 1992 )
Стабильная версия
ИЭЭЭ 1647-2019 / 13 июня 2019 г .; 5 лет назад ( 13.06.2019 )
Расширения имен файлов .Это
Веб-сайт TWiki @ age.org

e — это язык проверки аппаратного обеспечения (HVL), предназначенный для реализации очень гибких и многоразовых тестовых стендов для проверки .

История [ править ]

e был впервые разработан в 1992 году в Израиле Йоавом Холландером для его программного обеспечения Specman . В 1995 году он основал компанию InSpec (позже переименованную в Verisity ) для коммерциализации программного обеспечения. Продукт был представлен на конференции по автоматизации проектирования в 1996 году . [1] С тех пор Verisity была приобретена Cadence Design Systems .

Особенности [ править ]

Основные особенности e :

  • Случайная и ограниченная генерация случайных стимулов
  • Определение и сбор показателей функционального покрытия
  • Темпоральный язык, который можно использовать для написания утверждений.
  • Аспектно-ориентированный язык программирования с возможностью отражения.
  • Язык не зависит от тестируемого устройства, поскольку вы можете использовать один тестовый стенд e для проверки модели SystemC/C++, модели RTL, модели уровня шлюза или даже тестируемого устройства, находящегося в блоке аппаратного ускорения (с использованием методологии UVM Acceleration for e ).
  • Может создавать код, допускающий многократное использование, особенно если тестовый стенд написан в соответствии с универсальной методологией проверки (UVM).
    • Ранее известная как методология электронного повторного использования ( e RM).
    • библиотеку UVM Электронную и документацию можно скачать здесь: UVM World.

Языковые особенности [ править ]

Язык e использует подход аспектно-ориентированного программирования (АОП), который является расширением подхода объектно-ориентированного программирования и предназначен специально для удовлетворения потребностей, необходимых для функциональной проверки. АОП — это ключевая функция, позволяющая пользователям легко и неинвазивно добавлять дополнительные функции к существующему коду. Это позволяет легко повторно использовать и поддерживать код, что является огромным преимуществом в мире аппаратного обеспечения, где конструкции постоянно дорабатываются в соответствии с требованиями рынка на протяжении всего жизненного цикла проекта. АОП также легко решает сквозные проблемы (функции, которые затрагивают различные разделы кода), позволяя пользователям расширять отдельные или все экземпляры определенной структуры для добавления функциональности. Пользователи могут расширить несколько структур, чтобы добавить функциональность, связанную с определенной функцией, и при желании объединить расширения в один файл, обеспечивая более организованное разделение файлов.

Комментарии [ править ]

Исполняемый код заключен в маркеры сегментов кода <' и '>:

Пример [ править ]

Все, что находится за пределами маркеров, является комментарием.
 <'
 расширить систему {
   // Это комментарий в стиле Verilog
   -- Это комментарий в стиле VHDL
   post_generate() также {
     out("... и все остальное внутри маркеров — это исполняемый код.");
   };
 };
 '>
 

Классы [ править ]

В e также есть два типа классов:

  • Динамические классы помечаются ключевым словом «struct». Структуры используются для создания данных, которые существуют только временно и могут быть очищены сборщиком мусора.
  • Статические классы помечаются ключевым словом unit. Модули используются для создания постоянной структуры испытательного стенда.

Класс может содержать поля, методы, порты и ограничения. Поля могут быть целочисленными, вещественными, перечислимыми, строковыми и даже сложными объектами. Сегмент кода показывает, что модуль под названием «environment_u» создается в корне e «sys». Этот класс Environment_u содержит список из 5 объектов package_s, а этот класс package_s содержит два поля и метод.

Пример [ править ]

<'
 // Это динамический класс с двумя полями
 структура package_s {
   поле0: uint (биты: 32);  // Это поле называется 'field0' и является 
                             // 32-битное беззнаковое целое число.
   поле1: байт;  // Это поле называется «поле1» и представляет собой байт.
  
   // Этот метод вызывается после создания объекта package_s
   post_generate() также { 
     выход (поле0);  // Печать значения 'field0'
   };
 };

 // Это статический класс со списком из пяти структур пакетов
 единица окружающей среды_u {
   my_pkt[5]: список package_s;
 };

 // sys является корнем для каждой среды e и создает экземпляр объекта test_env
 расширить систему {
   test_env: Environment_u — это экземпляр;
 };
 '>
 

Рандомизация [ править ]

В e каждое поле рандомизировано по умолчанию. Рандомизацией полей можно управлять с помощью жестких ограничений, мягких ограничений или даже полностью отключить. Мягкие ограничения используются в качестве ограничений по умолчанию и могут быть автоматически отменены тестовым уровнем в случае возникновения конфликта. В противном случае оно ведет себя как обычное ограничение.

Пример [ править ]

<'
 структура my_pkt_s {
   адрес_адресата: uint (биты: 48);  // это поле рандомизировано и не ограничено.
   data_payload: список байтов;     
   !parity_field: uint (биты: 32);  // '!'  предотвращает рандомизацию поля parity_field.
  
   сохраните soft data_payload.size() в [64..1500];  // мягкое ограничение, используемое для обеспечения рандомизации по умолчанию
   оставьте data_payload.size() вне [128..256];  // это жесткое ограничение
 };
 '>
 

Утверждения [ править ]

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

Пример [ править ]

<'
 единица temporal_example_u {
   событие а;  // объявление события 'a'
   событие б;  // объявление события 'b'
   событие с;  // объявление события 'c'
  
   // Это утверждение предполагает, что следующий цикл после события a
   // обнаружено, что произошло событие b, за которым последовало событие c.
   ожидайте @a => {@b;@c}
 };
 '>
 

Охват [ править ]

e поддерживает покрытие, которое сгруппировано в соответствии с выбранным событием, и эти группы внутренне структурированы по элементам. Элементы могут быть простыми или сложными, например перекрестными или переходными.

Пример [ править ]

единица покрытия_example_u {
   событие cov_event_e;  // сбор освещения будет привязан к этому событию

   обложка cov_event_e — {
     элемент а: uint (биты: 4);  // этот элемент имеет 16 сегментов от 0 до 15
     элемент б: логическое значение;  // этот элемент имеет два сегмента: TRUE и FALSE
     перекрестить а, б;  // этот элемент содержит матрицу перекрестного умножения a и b
     транс б;  // этот элемент является производным от элемента b и имеет четыре сегмента
                               // переход каждой комбинации ИСТИНА-ЛОЖЬ
   };
 };
 

Обмен сообщениями и отчетность [ править ]

Обмен сообщениями внутри e может осуществляться различными методами.

Пример [ править ]

модуль message_example_u {
   example_message_method() — это {
     out("Это безусловное, неформатированное выходное сообщение.");
     outf("Это безусловное форматированное выходное сообщение, отображаемое в HEX %x",15);
     print "Это безусловное сообщение.";
     message( LOW, "Это условное сообщение, обычно привязанное к регистратору сообщений. ",
                   «Вы также можете объединять подобные строки и даже добавлять такие объекты, как «,me,
                   «в этом выводе».  );
     messagef( LOW, "Этот условный вывод имеет формат %x.",15 );
   };
 };
 

Взаимодействие с другими языками [ править ]

Электронный испытательный стенд , скорее всего, будет запускаться с моделями RTL или более высокого уровня. Принимая это во внимание, e способен взаимодействовать с VHDL , Verilog , C , C++ и SystemVerilog .

Пример подключения e <-> Verilog [ править ]

// Этот код находится в файле Verilog tb_top.v 
 модуль   testbench_top  ; 
    рег   a_clk  ;    
    всегда   #  5   a_clk   =   ~  a_clk  ; 
    начальное   начало 
     a_clk   =   0  ; 
    Конечный 
 модуль 
Этот код находится в файле signal_map.e.
 <'
 модуль signal_map_u {
   // Определить порт с именем «a_clk_p»
   a_clk_p: в simple_port бита является экземпляром;
   // Установите свойство hdl_path порта, чтобы оно указывало на сигнал «a_clk» в тестовом стенде верхнего уровня
   Keep a_clk_p.hdl_path() == "~/testbench_top/a_clk";
 };
 '>
 

Поддержка аспектно-ориентированного программирования в e [ править ]

Процесс функциональной проверки требует поднять уровень абстракции любого тестируемого проекта (DUT) за пределы уровня RTL. Эта необходимость требует языка, способного инкапсулировать данные и модели, который легко доступен в объектно-ориентированных языках. Для удовлетворения этой потребности был разработан объектно -ориентированный язык, дополненный аспектно-ориентированными механизмами, которые облегчают не только написание очень гибких и повторно используемых тестовых стендов, но также помогают инженерам по верификации, позволяя исправлять обнаруженные RTL. ошибки без необходимости переписывать или трогать уже существующую базу кода.
Аспектно-ориентированное программирование в e позволяет инженерам по верификации структурировать свой испытательный стенд по аспектам. Таким образом, объект представляет собой сумму всех своих аспектов, которые могут быть распределены по нескольким файлам. Следующие разделы иллюстрируют основные аспектно-ориентированные механизмы в e.

Механизм подтипирования [ править ]

Подтипирование — яркий пример того, чего не могут достичь объектно-ориентированные языки без аспектно-ориентированных функций. Подтипирование позволяет инженеру по верификации добавлять функциональность к уже определенному/реализованному классу без необходимости наследования от базового класса. Следующий код показывает исходную реализацию базового класса и ее расширение. Как только расширение произошло, все объекты базового класса также содержат расширения. Ограничения, заданные в двух разных подтипах, обычно вызывают противоречие, однако оба подтипа обрабатываются отдельно, и, таким образом, каждый подтип дает разные вычисления ограничений.

Пример механизма подтипирования [ править ]

subtyping_example.e
 <'
 // Это определение типа перечисления используется для объявления подтипов ODD и EVEN
 введите ctrl_field_type_t: [НЕЧЕТНЫЙ, ЧЕТНЫЙ];
 модуль base_ex_u {
   // Subtype_field — это определяющее поле, для которого применяется расчет
   subtype_field: ctrl_field_type_t;
   data_word: uint (биты: 32);
   четность_бит: бит;
  
   // Подтипирование типа ODD
   когда ODD'subtype_field base_ex_u {
     // Это простое ограничение, которое выполняет XOR индексного бита 0 data_word и увеличивает это значение
     сохранить бит четности == (слово_данных[0:0] ^ слово_данных[0:0] + 1);
   };

   // Подтипирование типа EVEN
   когда EVEN'subtype_field base_ex_u {
     // Это ограничение такое же, как и выше, однако приращение не выполняется
     сохранить бит четности == (слово_данных[0:0] ^ слово_данных[0:0]);
   };
 };
 '>
 

Расширение методов [ править ]

Исходное определение модуля дано в файле file1.e. Аспектно-ориентированный механизм, используемый в этом примере, показывает, как выполнять код до и после уже реализованного метода.

Пример расширения метода [ править ]

Этот код находится в файле file1.e
 <'
 модуль aop_example_u {
   meth_ext() — это {
     out("Это оригинальная реализация метода.");
   };
 };
 '>
 
Этот код находится в файле file2.e
 <'
 расширить aop_example_u {
   meth_ext() — первый {
     out("Это расширение метода выполняется до реализации исходного метода.");
   };

   meth_ext() также {
     out("Это расширение метода выполняется после реализации исходного метода.");
   };
 };
 '>
 

Ссылки [ править ]

  1. ^ Самир Палниткар: Проверка проекта с помощью e , PTR Prentice Hall. 5 октября 2003 г. ISBN   978-0-13-141309-2

Источники [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: D635EAB2F53120F434BDE2F608323C3C__1715820360
URL1:https://en.wikipedia.org/wiki/E_(verification_language)
Заголовок, (Title) документа по адресу, URL1:
e (verification language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)