Само по себе изучение схем является интересным занятием, но иногда скучным и монотонным. Связано это с тем, что разработка схем является сильно автоматизированным процессом: стандартные ячейки генерируются на базе HDL, а разводка соединений производится автоматическим "укладчиком" (роутером).
Естественно возникает желание как-то автоматизировать и процесс обратной разработки
Первый объект пристального внимания - это стандартные ячейки. Само название намекает, что если они "стандартные", значит они одинаковые и их можно искать по фотографиям, используя некоторые шаблоны или маски. Затрудняет поиск ячеек грязь и плохая фокусировка микроскопа, из-за чего часть ячейки может быть скрыта для программы поиска.
Но тут можно применять полуавтоматизированный процесс: восстанавливать тополгию ячеек руками (то есть превращать фотографии ячеек в картинки с четкими масками ячеек). Такой процесс мы называем "векторизация". Затем можно производить поиск ячеек по полученным векторизованным данным. Я немного покурил бамбука и придумал адекватный алгоритм для поиска, без всяких edge detection и тому подобных техник. Почитать идею алгоритма можно тут: Алгоритм поиска ячеек.
Вторым объектом являются провода. Весь процессор это гигантская тарелка с дошираком Я долго искал в интернете какой же алгоритм использовали разработчики для своего укладчика проводов и думаю что наконец-то нашёл подходящий алгоритм: http://en.wikipedia.org/wiki/Channel_router . Так называемый "Канальный укладчик" широко применялся в конце 80-х до середины 90-х в CMOS микросхемах с двумя слоями металла (как и у нашего процессора). Стандартные ячейки укладываются рядами, а между ними образуются как раз те самые "каналы", по которым укладчик аккуратно укладывает лапшичку
Я даже нашёл исходники реализации этого алгоритма (программа YACR2). А что если мы расставим ячейки, натравим на них укладчик YACR и он выдаст нам укладку точь в точь повторяющую разводку металла ? Главное точно попасть в "клеточки" сетки укладчика.
Но где бы взять столько времени, чтобы реализовать эти алгоритмы в виде утилит, ума не приложу Каждая программа как минимум тянет на тему дипломной работы в российских ВУЗах.