Altifigence Academy

20 / 20 · Теория

Проверка интеграции RTL и расширения

Соедините учебную модель с интерфейсами RTL и свидетельствами верификации.

Разделите обязанности ядра и оболочки

Ядро массива обрабатывает регистровую пересылку операндов, знаковые MAC, valid/метки и глобальный advance. Оболочка отвечает за start/clear, размеры матриц, координаты блоков, подачу границ со сдвигом, маскированный сбор результатов и подтверждение передач выхода. Определите каждую обязанность именами сигналов и соглашением о фронтах.

Простая оболочка использует IDLE, CLEAR, RUN, COLLECT и SEND. CLEAR гарантирует один фронт инициализации до данных. RUN продвигает логические шаги от нуля до K+2N−3. Результаты завершаются сразу после последнего фронта RUN; COLLECT копирует их на следующем фронте. Так избегают копирования старого аккумулятора на том же фронте, где происходит его последнее неблокирующее обновление.

Рассчитайте пример задержки интеграции

При N=K=2 clear происходит на E−1, вычисление — на E0..E3. Пусть E4 копирует четыре результата параллельно в буфер. Выход по одному результату на фронт с постоянно истинным ready отправляет девятнадцать, двадцать два, сорок три и пятьдесят на E5..E8 в порядке строк. Измерение от clear до последней передачи включает десять передних фронтов E−1..E8 против четырёх вычислительных фронтов. Блокирование выхода продлевает SEND без изменения завершённых значений.

Полезным данным результата нужны job и глобальные координаты, а также определённое сырое или квантованное представление. Не очищайте аккумулятор, пока его результат безопасно не скопирован или потреблён. Перекрытие следующего вычисления с SEND требует владения буфером и разделения заданий.

Пересматривайте спецификации при расширении проекта

Конвейерный умножитель меняет время накопления, меток и завершения. Разбиение свёртки требует сохранённых частичных сумм и нового анализа разрядности. Перекрытие заданий требует отдельного состояния накопления. FIFO хранит value, valid и метки как единые полезные данные и требует проверок переполнения и чтения пустой очереди.

Документация архитектуры Gemmini даёт пример из первоисточника, где локальное хранение и перемещение данных сопровождают массив. Наш конечный автомат и временной пример — независимо заданные учебные соглашения.

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

Попробуйте сами

В примере интеграции заблокируйте ready на два фронта после E6. Какими станут последний фронт передачи и общее число измеренных фронтов?

Прочитать объяснение

Ожидайте на E7 и E8, затем отправьте оставшиеся два результата на E9 и E10. Последняя передача — E10; измерение E−1..E10 включает двенадцать фронтов. Вычисление остаётся четырьмя фронтами E0..E3, а заблокированные данные должны удерживаться.

Выбор действует в этом браузере. Его можно изменить внизу страницы.