Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
cris_diss_21_07_last.docx
Скачиваний:
9
Добавлен:
18.12.2018
Размер:
10.16 Mб
Скачать

1.2. Моделирование на уровне транзакций

Достижения в области технологий проектирования и изготовления кристаллов позволяют создавать сверхсложные системы малого размера, для имплементации которых EDA индустрией введено моделирование на уровне транзакций (Transaction-level modeling, TLM). Модели TLM описывают аппаратные модули на высоких уровнях абстракции, что позволяет уменьшить время моделирования и упростить отладку проекта [21, 29, 30].

При проектировании SoC используются компоненты различных уровней абстракции, часто включающие алгоритмические модели, описанные на языке ANSI C++. Эти модели используются совместно с детальной спецификацией взаимосвязей между ними. Другой вид компонентов (часто составляющих большую часть системы) – повторно используемые блоки (IP-cores).

Средства алгоритмического синтеза позволяют ускорить и упростить имплементацию нового оригинального контента на RTL уровне. При этом необходимо за короткий период времени перейти от набора алгоритмов к множеству верифицируемых RTL блоков, которые должны быть интегрированы в проект. Но любые ошибки или неверное толкование спецификации системы или IP-cores приводят к системе, которая не функционирует.

Модели уровня транзакций позволяют упростить интеграцию и тестирование, но при этом возникает проблема генерации моделей TLM. Создание моделей вручную с помощью языка SystemC путем добавления аппаратных деталей в исходный ANSI C++ код является трудоемким и не застраховано от ошибок. Лучшим решением является автоматическая генерация TLM моделей в процессе проектирования и верификации системы.

На уровне RTL при моделировании, как правило, используется тактовая синхронизация. При TLM синхронизация выполняется, когда данные передаются между двумя блоками, и это означает, что при моделировании время не используется. Такая связь называется транзакцией.

Транзакция – совокупность действий, которые выполняются в системе в ограниченный период времени. Все операции, изменения состояний, передача данных и вычисления, которые выполняются в определенном модуле системы или между двумя модулями, являются транзакциями.

Модель уровня транзакций описывает компонент как набор одновременно взаимодействующих процессов, которые определяют и представляют его поведение. TLM модель описывает сложную систему на высоком уровне абстракции. Модели TLM представляют взаимодействие в виде транзакции через абстрактный канал, отделяющий коммуникацию от вычислений. Моделирование на высоком уровне абстракции выполняется до 1000 раз быстрее, чем на RTL уровне. При этом проектировщик может оптимизировать архитектуру перед переходом на низкий уровень абстракции для имплементации системы. Для быстрого моделирования можно использовать модели TLM более высокого уровня с минимальной детализацией, постепенно добавляя в нее информацию в целях более полного моделирования. Постепенное уточнение модели предполагает уточнение структуры системы и введение параллелизма на уровнях TLM, поведенческом и RTL, на каждом из которых выполняется моделирование и верификация проекта (рис. 1.3).

Рис. 1.3. Алгоритмический синтез

Как правило, уточнение модели предполагает выполнение нескольких шагов: проект представляется на алгоритмическом уровне в виде исходного ANSI C++ кода; создается модель уровня транзакций, в которой не учитывается параметр времени и используется универсальная шина (без детализации); валидация архитектуры и переход на следующий уровень детализации для описания архитектуры шины и добавления отдельных временных значений. Для дальнейшего продвижения по уровням абстракции необходимо расширить модель до синхронизации по времени, оценить качество проекта в целях обеспечения перехода к синтезу на уровне RTL.

После завершения RTL синтеза для верификации проекта могут быть использованы современные средства верификации, позволяющие использовать TLM модели. Поэтапный подход к верификации представляет собой эффективный способ выявления ошибок в больших блоках, в том числе в процессорах, встроенной памяти, модулях цифровой обработки сигналов и IP-блоках заказных СБИС (ASIC) и FPGA. Однако уточнение моделей уровня транзакций представляет собой в основном ручной и трудоемкий процесс, автоматизация которого позволит уменьшить ошибки кодирования и ошибки, связанные с неправильной интерпретацией спецификации.

При моделировании на основе транзакций каждая транзакция представляет собой вычислительный модуль “unit of computation”. Аналогичные модули описываются в моделях уровней спецификации и имплементации. На уровне спецификации вычислительнй модуль рассматривается как одно функциональное приложение. Например, каждая инструкция архитектуры системы команд (instruction set architecture, ISA) процессора включает в себя вычислительный модуль и может рассматриваться как функция, воздействующая на состояние архитектуры [16].

Транзакция может быть описана как конечный автомат с помеченными состояниями “start” и “end”. Для каждой завершенной транзакции ее конечный автомат начинает выполняться с состояния “start” и функционирует до тех пор, пока не перейдет в состояние “end”. В процессе выполнения транзакция может модифицировать разделяемые переменные состояний, которые используются для хранения изменяемых транзакцией данных, а также для передачи информации между транзакциями.

В настоящее время известны два типа моделей, основанных на транзакциях, отличающихся уровнем детализации, семантикой выполнения и назначением: архитектурная модель (спецификация) и микроархитектурная модель (имплементация).

Архитектурная модель включает транзакции и элементы состояний. Каждая транзакция конечного автомата описывает преобразование данных, находящихся в разделяемом состоянии. Транзакции выполняются атомарно и изолированы от других исполняемых транзакций. Изолирование означает, что транзакция «видит» только то состояние, в которое переходит автомат в процессе ее выполнения. Множественные транзакции могут стартовать и выполняться одновременно при условии, что две транзакции не обновляют одновременно одну и ту же переменную состояния. В соответствии с функциональной природой исполнение архитектурной модели не фиксируется по времени, она может рассматриваться в качестве исполняемой и формально анализируемой функциональной спецификации.

Микроархитектурная модель включает транзакции, элементы состояний и аппаратные модули. Каждая транзакция описывает, как аппаратный модуль физически используется в процессе одновременного исполнения транзакций. Конечный автомат транзакции выполняет одну передачу для каждого модуля в единицу времени. Транзакции выполняются не изолировано друг от друга и изменения состояний являются видимыми для всех транзакций непосредственно после их завершения. Новые экземпляры транзакций могут создаваться в каждом цикле в соответствии с заданными условиями. Это позволяет моделировать конвейеры и другие формы одновременных транзакций. Экземпляры различных транзакций или несколько экземпляров одной транзакции могут стартовать и выполняться одновременно. Ошибкой является ситуация, когда два экземпляра транзакции записывают информацию в одну переменную состояния (или сигнал) одновременно. Наличие параллелизма приводит к необходимости взаимодействия транзакций (разделения ресурсов), для чего в дополнение к разделяемым состояниям могут быть использованы глобальные сигналы (связи).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]