Jump to content

СистемаVerilog DPI

SystemVerilog DPI (Интерфейс прямого программирования) — это интерфейс, который можно использовать для взаимодействия SystemVerilog с иностранными языками. Этими иностранными языками могут быть C , C++ , SystemC и другие. DPI состоят из двух уровней: уровня SystemVerilog и уровня иностранного языка. Оба слоя изолированы друг от друга.

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

Интерфейс прямого программирования ( DPI ) позволяет осуществлять прямые вызовы межъязыковых функций между SystemVerilog и иностранным языком. Функции, реализованные на иностранном языке, можно вызывать из SystemVerilog, и такие функции называются функциями импорта . Аналогично, функции, реализованные в SystemVerilog, можно вызывать с иностранного языка ( C/C++ или System C ); такие функции называются функциями экспорта . DPI позволяют передавать данные между двумя доменами через аргументы функции и возврат.

Импорт и экспорт функций [ править ]

1) Импорт функций: — Функция, реализованная на иностранном языке, может использоваться в SystemVerilog путем ее импорта. Функция иностранного языка, используемая в SystemVerilog, называется импортированной функцией.

Свойства импортированной функции и задачи [ править ]

  1. Импортированная функция должна завершить свое выполнение мгновенно и не тратить времени на моделирование. Импортированная задача может занять время.
  2. Импортированная функция может иметь входные, выходные и входные аргументы.
    • Формальные входные аргументы не должны изменяться. Если такие аргументы изменяются внутри функции, эти изменения не должны быть видны за пределами функции.
    • Импортированная функция не должна принимать никаких начальных значений формальных выходных аргументов. Начальное значение выходных аргументов не определено и зависит от реализации.
    • Импортированная функция может получить доступ к начальному значению формального входного аргумента. Изменения, которые импортированная функция вносит в формальный входной аргумент, должны быть видны за пределами функции.
  3. Импортированная функция не должна освобождать память, выделенную кодом SystemVerilog, и не ожидать, что код SystemVerilog освободит память, выделенную внешним кодом или (внешним компилятором).
  4. Вызов импортированной задачи может привести к приостановке текущего выполняющегося потока. Это происходит, когда импортированная задача вызывает экспортированную задачу, а экспортированная задача выполняет оператор управления задержкой, управления событиями или ожидания. Таким образом, импортированная задача может быть одновременно активной в нескольких потоках выполнения.
  5. Импортированную функцию или задачу можно снабдить специальными свойствами, называемыми чистыми или контекстными.

Чистые и контекстные задачи и функции [ править ]

Чистые функции [ править ]

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

Свойства чистых функций [ править ]

  1. Только непустые функции без выходных или входных аргументов можно вызывать как чистые функции.
  2. Функции, указанные как Pure, не должны иметь побочных эффектов, их результаты должны зависеть исключительно от значений их входных аргументов.
  3. Вызов функции Pure можно безопасно исключить, если его результат не нужен или если его результаты для того же значения входных аргументов доступны для повторного использования без необходимости пересчета.
  4. Предполагается, что чистая функция не выполняет прямо или косвенно следующее:
    1. Выполните любую файловую операцию.
    2. Чтение или запись чего-либо в переменную среды, общую память, сокеты и т. д.
    3. Доступ к любым постоянным данным, таким как глобальная или статическая переменная.
  5. Импортированная задача никогда не может быть объявлена ​​чистой.

Контекстные задачи и функции [ править ]

Импортированная задача или функция, которая вызывает «экспортированные» задачи или функции или обращается к объектам данных SystemVerilog, отличным от ее фактических аргументов, называется контекстной задачей или функцией.

Свойства контекстных задач и функций [ править ]

1) Задача или функция, импортированная из контекста, может получить доступ (чтение или запись) к любому объекту данных SystemVerilog, вызвав (PLI/VPI) или вызвав задачу или функцию экспорта. Таким образом, вызов задачи или функции Context является препятствием для оптимизации компилятора SystemVerilog.

Импортная декларация [ править ]

import "DPI-C" function int calc_parity (input int a);

Экспортная декларация [ править ]

export "DPI-C" my_cfunction = function myfunction;

Вызов функций Unix [ править ]

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

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

Вызов функций C в SystemVerilog [ править ]

C - файл кода [ править ]

#include <stdio.h>
#include <stdlib.h>

extern int add() {
  int a = 10, b = 20;
  a = a + b;

  printf("Addition Successful and Result = %d\n", a);
  return a;
}

Файл кода SystemVerilog [ править ]

module tb_dpi;

  import "DPI-C" function int add();
  import "DPI-C" function int sleep(input int secs);
  int j;
  
  initial
  begin
    $display("Entering in SystemVerilog Initial Block");
    #20
    j = add();
    $display("Value of J = %d", j);
    $display("Sleeping for 3 seconds with Unix function");
    sleep(3);
    $display("Exiting from SystemVerilog Initial Block");
    #5 $finish;
  end
  
endmodule

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

  • Гопи Кришна (9 ноября 2005 г.). «Учебное пособие по SystemVerilog DPI» .
  • Учебное пособие по SystemVerilog DPI из проекта VeriPage
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: be8bc35ee1f3373ff8467b2e2e991395__1705531260
URL1:https://arc.ask3.ru/arc/aa/be/95/be8bc35ee1f3373ff8467b2e2e991395.html
Заголовок, (Title) документа по адресу, URL1:
SystemVerilog DPI - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)