По опыту скажу (выпустил один проц в кремнии, второй сейчас готовлю). Пишем вручную тест-программу, проверяем по одной инструкции из каждого класса со всеми видами адресаций. Не забывая про всякие статусные биты, и т.п., на что команда влияет. В конце всего проверяем все регистры и ВСЮ память на предмет того, не влияет ли какая нибудь команда на то, на что она влиять не должна. Отдельно дрючится буфер предвыборки-конвейер. На всякие ситуации, которые можно самому предположить. Далее смотрим на синтезированном нетлисте покрытие, и если не 100, следующая итерация (уже зная, где недотестировано). И так до потери пульса, т.е. до 100 покрытия и до самоуверенности в том, что больше тестировать нечего (покрытие может быть 100, но это не значит, что процессор работает полностью как задумал разработчик при каком нить хитром условии)
Никаких средств автоматизации тут нет. Так как проверяем функциональность, т.е. работает так как задумано, или не так. А значит пишем тест на ассемблере того самого проца, который разрабатывается. Ну и подаем всякие необходимые тестовые воздействия на пины, не касающиеся ОЗУ/ПЗУ
|