реклама на сайте
подробности

 
 
> Верификация процессорного ядра
flipflop
сообщение Dec 7 2009, 21:46
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 27-12-08
Из: Петербург
Пользователь №: 42 787



Последнюю неделю бьюсь над задачей верификации процессорного ядра (RISC архитектура (load/store), 6 ступенчатый конвейер команд, только целочисленная математика). Задача для меня совсем новая (раньше делал только математику и коммуникационные контроллеры), поэтому не знаю даже с какой стороны подойти.

Пока родилась следующая структура: Есть эталонная модель на SystemC (потактовая, тоже с конвейерными регистрами, но вместо логики обычные C++ методы).
На эталонной модели и верифицируемой RTL-модели прогоняется набор тестовых программ и на каждом такте сверяется содержимое конвейерных регистров. После прогона получаем список команд (а также номер такта и название конвейерного регистра), на которых обнаружены ошибки.

Может ли кто-нибудь поделиться опытом, как на практике верифицируют процессоры и покритиковать мой подход?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Leka
сообщение Dec 8 2009, 17:34
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(Methane @ Dec 8 2009, 19:14) *
Но не на аппаратном уровне. На программном: прыгнули, все регистры выгрузили в стек, переключились, загрузили новый указатель стека, загрузили регистры из нового стека итд.

Simultaneous Multi-Threading для повышения производительности - там все на аппаратном уровне, и никаких лишних копирований.

Цитата(flipflop @ Dec 8 2009, 20:18) *

Для навороченного ядра исполняемые инструкции могут вообще не совпадать со входными(оптимизация обращений к памяти, например). Так что просто проверять контрольные точки программы(результат), имхо. Обнаружили ошибку - посеять дополнительные точки. Либо детально описывать все нюансы RTL-поведения(SVA) - на порядок больше работы(за ту-же зарплату).

Цитата
Внутренней. Block Ram

Тогда советую пересмотреть архитектуру(если проц не для ASIC) и/или HDL-описание(избегать "case"-стиля описания АЛУ и др блоков) - кэши/MMU и тп призваны оптимизировать обращения к внешней памяти FPGA.

Цитата(Methane @ Dec 8 2009, 19:14) *

bb-offtopic.gif У меня все проще, некоторыми идеями аппаратной многопоточности воспользовался только для организации прерываний и выполнения фоновых задач, не для повышения производительности.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016