64 квадратных миллиметров счастья
Автор |
Сообщение |
12 июн 2013, 11:59 |
|
Зарегистрирован: 28 июл 2007, 04:39 Сообщения: 103 Откуда: MSK
|
Я уже нашел и поправил. Там проблемы с захардкоженными слешами в путях были. Сейчас есть другая проблема, как пофикшу - выложу новый билд. -- 12 июн 2013, 13:39 -- http://rghost.net/46696661 вот. Импорт картинок работает. Есть проблема с удалением временных файлов, которую я пока не решил, так что лучше чистить папку tmp переодически
_________________ close the world... ..open the next.
|
 |
12 июн 2013, 14:50 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 569
|
Виасы не рапспознаются, какая-то ошибка в путях. Объекты не удаляются, кнопка DEL не работает  Поиск металлических дорожек тоже не работает, вылетает исключение. Прикрепляю тестовую картинку.
Вложения:
1.jpg [ 1.26 МБ | Просмотров: 14662 ]
cannot_via.jpg [ 37.26 КБ | Просмотров: 14662 ]
|
 |
12 июн 2013, 15:17 |
|
Зарегистрирован: 28 июл 2007, 04:39 Сообщения: 103 Откуда: MSK
|
Не могу воспроизвести. Можно последовательность действий и лог из консоли?
-- 12 июн 2013, 15:22 --
Заодно нашел там еще баг с автосохранением проекта =_=
_________________ close the world... ..open the next.
|
 |
12 июн 2013, 15:40 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 569
|
Создаем проект -> создаем 3 слоя (0:металл, 1:металл, 2:логика) Импортируем тестовую картинку на слой 0 (металл) 1. Жмем : Recognition -> Wire matching с дефолтными параметрами. Исключение. 2. Тыкаем Via down на какой-нибудь виас, Жмем : Recognition -> Via matching. Исключение.
А можно убрать вывод загружаемых иконок в консоль ? )
|
 |
12 июн 2013, 16:22 |
|
Зарегистрирован: 28 июл 2007, 04:39 Сообщения: 103 Откуда: MSK
|
Билд с убраным срачем в консоль при старте и отключенным (пока) автосохранением http://rghost.net/46700784Те два эксепшна выше я так и не смог воспроизвести =/
_________________ close the world... ..open the next.
|
 |
13 июн 2013, 23:49 |
|
Зарегистрирован: 08 июн 2013, 22:12 Сообщения: 12
|
Огромное спасибо за все исправления в коде degate! Я сам не использую, но хорошо знаю некоторых, кто использует. От них - спасибо!
|
 |
15 июн 2013, 15:07 |
|
Зарегистрирован: 28 ноя 2012, 17:56 Сообщения: 63
|
Свежесобранные кусочки CPU: Кусок 11:  Куски 12 и 15:  Куски 13 и 14:  Кусок 31:  Кусок 32:  -- 15 Jun 2013, 17:30 -- Собрал еще кусок 01, 03 и 04. Как оказалось части снимков нехватает ( 
|
 |
17 июн 2013, 12:24 |
|
Зарегистрирован: 08 июн 2013, 22:12 Сообщения: 12
|
Как вы собираетесь совмещать слои между собой?
|
 |
17 июн 2013, 12:45 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 569
|
Не знаю как коллега Акари, но я совмещать не собираюсь. Восстановлю библиотеку логических вентилей, а промежуточные линии (входы и выходы) как нибудь обзову. Стало понятно, что трассировка металлических межсоединений - это мартышкин труд, самый сок находится слоем ниже - в диффузии. Поэтому мы попросили Михаила "травить по-маленьку"  Сайт обновлен : http://psxdev.ru/download
Последний раз редактировалось org 17 июн 2013, 13:12, всего редактировалось 1 раз.
|
 |
17 июн 2013, 12:55 |
|
Зарегистрирован: 08 июн 2013, 22:12 Сообщения: 12
|
Цитата: Стало понятно, что трассировка металлических межсоединений - это мартышкин труд, самый сок находится слоем ниже - в диффузии.
Эмм... А как тогда схему восстанавливать без межсоединений?
|
 |
17 июн 2013, 13:16 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 569
|
Легко. Могу показать на примере APU 2A03:  Внизу межсоединения, в сверху функциональные блоки. В местах входа/выхода межсоединений указывается название контрольной линии, после чего собственно сами межсоединения нам уже не нужны.
|
 |
17 июн 2013, 13:23 |
|
Зарегистрирован: 08 июн 2013, 22:12 Сообщения: 12
|
А как тогда узнать где какой вход? Там же названия не подписаны.
|
 |
17 июн 2013, 13:33 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 569
|
По фотографии верхнего слоя проследить куда ведет провод, подписать его и дополнительно пометить на нижнем слое. Имеющегося разрешения вполне достаточно. Единственная трудность в этом - шланги могут уходить в другие куски схемы, поэтому дополнительно нужно будет подписывать места ухода шланга в другой кусок. В итоге мы получим набор "лент" из логических элементов, с подписанными входами и выходами. -- 17 июн 2013, 12:40 --  Начать разбор схемы естественно нужно с контактов, в частности с тактовых сигналов и шин. Станет понятно где находятся защелки и выходные tri-state буферы шин. Из шин можно попасть в "селекторы" регистров, а по тактовым линиями можно добраться до регистров и прочего добра. Это можно уже сделать сейчас, но без фотографий логики будет непонятно функциональное назначение мест, куда приходят входные контакты (и выходят выходные). Нужны вентили.
|
 |
17 июн 2013, 17:29 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 569
|
Ну и чтобы не быть голословным, прилагаю текущие результаты трассировки куска 2-4. Готово примерно на 70%, учитывая что можно из него выжать даже межсоединения нижнего слоя металла и виасы. Автоматическую трассировку делать на таком большом куске боюсь + искажения вряд ли будут корректно переварены. Итог всей работы на данный момент : розовый квадратик A соединяется с розовыми квадратиками B, C и D Конечно трассировку смотреть приятней, чем ползать по проводам исходной фотографии, но как уже говорил - без вентилей делать тут пока особо нечего. http://psxdev.ru/files/IC103/24_topo2.jpg
Вложения:
24_topo2_sm.jpg [ 222.08 КБ | Просмотров: 14479 ]
|
 |
17 июн 2013, 18:29 |
|
Зарегистрирован: 28 ноя 2012, 17:56 Сообщения: 63
|
Собрал следующий кусок состоящий из фрагментов21, 22 и 23. В нем тоже нехватает незначительной части фотографий контактов. 
Вложения:
psxcpu_part21-22-23_small.jpg [ 124.77 КБ | Просмотров: 14576 ]
|
 |
19 июн 2013, 11:47 |
|
Зарегистрирован: 19 июн 2013, 10:59 Сообщения: 30
|
Узнал об теме с хабра и поглядываю.
Так вот что хочу сказать по тому, что здесь вижу. Чипы такой сложности разбирать вручную - нереально. Огромные затраты времени и сил. Год разбирали чип 3к, а 300к - сто лет значит? Для примера - килобайт бинарного кода можно разобрать вручную на бумажке. С мегабайтом без IDA (и если возможно Hexrays) связываться - безумие. Как верно написано, данный чип продукт работы CAD. А эти системы не следуют человеческим методам раскладки компонент. Там сидит математика и рандом. Они оптимизируют схему по опреденным критериям. Не смогли подобрать с одного раза, рандомно прекидали проблемые участки, попробовали опять, и так итерациями. А учитывая, когда данный чип проектировали, алгоритмы раскладки были далеко не столь хороши как сейчас. С продукцией компа - должен разбираться комп. А вот тут проблема - софта нормального в доступе нет. Что объяснимо, очень мало кто этим занимается профессионально. Покрутил хваленый дигейт - студенческая поделка к диплому. Полноценно работать с ним нельзя. До уровня софта у чипворкс ему как до луны, и пользуются им от безвыходности.
Так что для начала, вам нужно сформировать ТЗ на софт реверса, а дальше или самим писать и(или) фрилансеров нанимать. "Лучше день потерять - потом за 5 минут долететь"
|
 |
19 июн 2013, 12:36 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 569
|
На прошлой неделе нам на огород привезли грузовик щебенки и высыпали на дорогу. Получилось 2 кучи, примерно с человеческий рост. Мы с батей стали лопатами грузить в тележку и разбрасывать по дороге. За 4 часа растаскали примерно десятую часть одной кучи. Нанятая на следующий день бригада таджиков растаскала обе(!) кучи за 3 часа.
-- 19 июн 2013, 11:47 --
А вообще все верно. Сейчас попробую ТЗ составить на программу )
-- 19 июн 2013, 13:48 --
Программа для реверс-инжиниринга микросхем.
Программа для Win32, GUI желательно стандартный winapi, чтобы можно было без проблем запускать в Wine. Второй вариант : приложение на JavaScript.
Программа должна работать по сети и позволять одновременное подключение нескольких пользователей к редактируемому проекту.
"Файл" проекта представляет собой базу данных (MySQL), где хранятся объекты и компоненты, а также локальный кеш, куда складываются графические материалы (PNG картинки компонентов, задники топологии и пр.). На сервере хранится сервеный кэш картинок. При обновлении серверного кеша - локальные кеши всех пользователей также обновляются.
Взаимодействие по протоколу HTTP с серверной частью.
Все правки мгновенно записываются в БД и отображаются на экранах всех пользователей. То есть один пользователей может в реальном времени смотреть что делают другие пользователи.
Главный интерфейс.
Главный интерфейс представляет собой : - drop-down меню (обычное меню средствами Windows). - слева распологается дерево компонентов (об этом подробнее) - справа распологается главное поле для просмотра и редактирования
Меню Файл - Присоединиться к проекту (необходимо указать URL сайта, где находится сереверная часть редактируемого проекта) После чего нужно будет указать логин и пароль для создания сессии подключения к проекту. Выйти - закрыть сессию и выйти из программы. Регистрация в проекте осуществляется через web-сайт, учетная запись активируется руководителем проекта (админом). Остальное придумаем походу.
Дерево компонентов Дерево представлено обычным образом Родитель -> Потомок. В качестве узлов используются компоненты определенных типов, которые берутся из Библиотеки. Каждый узел имеет свой уникальный ID внутри проекта.
Библиотека Таблица в БД, где хранятся свойства компонента: - картинка компонента, в формате GIF или PNG, для обеспечения прозрачности. Также возможно использоваться JPG/BMP, но прозрачным цветом в этом случае будет являться черный цвет (RGB #000). Все картинки хранятся на серверном кеше (/images/cache). При первом подключении весь серверный кеш копируется на локальный компьютер пользователя в папку (/images/cache). После редактирования компонента - кеш инвалидируется и пользователю загружается новая картинка. Картинки может и не быть (если например компонент - это vias) - линейные размеры компонента в пикселях (ширина/высота). Форма границы компонентов - прямоугольная. - входы/выходы. Набор координат (X;Y) в пределах компонента, и тип соединения : вход (in), выход (out), двунаправленный (i/o). Входы и выходы помечаются особым образом в GUI (в виде разноцветных квадратиков, цвет можно поменять в настройках). - дополнительное свойство входа/выхода - "блокировка подсветки". Если вход не блокирует подсветку, то при выделении цепи - выделение не прерывается на данном входе. - название компонента (строка) - уникальный номер (ID)
Пользователи могут как добавлять новые компоненты в библиотеку, так и размещать инстанции компонентов на схеме (включать их в дерево). Никакой функциональной нагрузки дерево не несёт и используется просто для удобства, чтобы пометить например: "защелка ACRL входит в состав Program Control, который в свою очередь входит в Dispatch Logic, который входит в верхнюю часть 6502."
"Поле деятельности" Это главная часть окна программы где собственно распологаются микрофотографии микросхем и нанесенными сверху компонентами.
Поле делится на две группы слоев : - слои картинок - слои компонентов
Слои картинок Пользователь может выбирать на какой слой положить картинку и какой слой картинок отображать в данный момент. На одном слое может находится несколько картинок. У каждого слоя есть приоритет 0 -> 1 -> 2... Слой с большим приоритетом показывается выше нижних слоев. У картинок внутри слоя также есть приоритет 0 -> 1 -> 2 ... Картинки с большим приоритетом показываются выше остальных в текущем слое.
Свойства картинок - Номер слоя, на котором распологается картинка - Приоритет внутри слоя - Координаты верхнего левого угла - Линейные размеры
Картинки можно двигать мышкой на манер drag&drop.
Слои компонентов Все слои компонентов находятся выше всех слоев картинок. Внутри слоя у компонентов нет приоритета. Кроме компонентов можно размещать другие объекты : - Межсоединения. Обычные линии, фиксированной толщины. Состоит из двух координат (x;y), толщины линии в пикселях и цвета RGB. - Узлы. Места соединения межсоединений. Не являются физическими контактами, а используются для обозначения места перегиба. Когда пользователь тыкает на межсоединение - оно подсвечивается определенным образом. Причем осуществляется трассировка компонентов и подсвечивается весь кусок до входов/выходов составляющих его компонентов (если вход/выход блокирует подсветку). Отмена подсветки - ESC, или клик на пустое место. Рисование межсоединений осуществляется обычным образом - мышкой. - Bounding box-ы (bbox). Это замкнутые области для обозначения группы компонентов. При перетаскивании bbox-а - перетаскивается вся группа компонентов внутри него. Состоит из списка координат : Начало -> узел1 -> узел2 -> ... -> УзелN. Последний узел соединяется с началом. Проверка на вхождение компонента в bbox : если координаты левого-верхнего угла входят внутрь bbox-а, то компонент входит в bbox. Перетаскивание bbox осуществляется за Начало (которое обычно является верхним-левым углом)
Прочее - Самый задний бекграунд (ниже картинок) монотонного цвета (можно выставить в настройках) - Дополнительно можно включить "липкую" сетку (на манер окон WinAmp), цвет точек и шаг сетки можно выставить в настройках.
Импорт схемы в PNG. По команде сервер может сгенерировать схему в виде обычной картинки.
|
 |
19 июн 2013, 16:16 |
|
Зарегистрирован: 19 июн 2013, 10:59 Сообщения: 30
|
Некоторые дополнения. org писал(а): -- 19 июн 2013, 13:48 --
Программа для реверс-инжиниринга микросхем.
Программа для Win32, GUI желательно стандартный winapi, чтобы можно было без проблем запускать в Wine. Второй вариант : приложение на JavaScript.
Программа должна работать по сети и позволять одновременное подключение нескольких пользователей к редактируемому проекту.
"Файл" проекта представляет собой базу данных (MySQL)(не обязательно он), где хранятся объекты и компоненты, а также локальный кеш, куда складываются графические материалы (PNG картинки компонентов, задники топологии и пр.). На сервере хранится сервеный кэш картинок. При обновлении серверного кеша - локальные кеши всех пользователей также обновляются.
Взаимодействие по протоколу HTTP(https) с серверной частью.
Все правки мгновенно записываются в БД и отображаются на экранах всех пользователей. То есть один пользователей может в реальном времени смотреть что делают другие пользователи.
Главный интерфейс.
Главный интерфейс представляет собой : - drop-down меню (обычное меню средствами Windows). - слева распологается дерево компонентов (об этом подробнее) - справа распологается главное поле для просмотра и редактирования
Меню Файл - Присоединиться к проекту (необходимо указать URL сайта, где находится сереверная часть редактируемого проекта) После чего нужно будет указать логин и пароль для создания сессии подключения к проекту. Выйти - закрыть сессию и выйти из программы. Регистрация в проекте осуществляется через web-сайт, учетная запись активируется руководителем проекта (админом). Остальное придумаем походу.
Дерево компонентов Дерево представлено обычным образом Родитель -> Потомок. В качестве узлов используются компоненты определенных типов, которые берутся из Библиотеки. Каждый узел имеет свой уникальный ID внутри проекта.
Библиотека Таблица в БД, где хранятся свойства компонента: - картинка компонента, в формате GIF или PNG, для обеспечения прозрачности. Также возможно использоваться JPG/BMP, но прозрачным цветом в этом случае будет являться черный цвет (RGB #000). Все картинки хранятся на серверном кеше (/images/cache). При первом подключении весь серверный кеш копируется на локальный компьютер пользователя в папку (/images/cache). После редактирования компонента - кеш инвалидируется и пользователю загружается новая картинка. Картинки может и не быть (если например компонент - это vias) - линейные размеры компонента в пикселях (ширина/высота). Форма границы компонентов - прямоугольная. - входы/выходы. Набор координат (X;Y) в пределах компонента, и тип соединения : вход (in), выход (out), двунаправленный (i/o). Входы и выходы помечаются особым образом в GUI (в виде разноцветных квадратиков, цвет можно поменять в настройках). - дополнительное свойство входа/выхода - "блокировка подсветки". Если вход не блокирует подсветку, то при выделении цепи - выделение не прерывается на данном входе. - название компонента (строка) - уникальный номер (ID)
Пользователи могут как добавлять новые компоненты в библиотеку, так и размещать инстанции компонентов на схеме (включать их в дерево). Никакой функциональной нагрузки дерево не несёт и используется просто для удобства, чтобы пометить например: "защелка ACRL входит в состав Program Control, который в свою очередь входит в Dispatch Logic, который входит в верхнюю часть 6502."
"Поле деятельности" Это главная часть окна программы где собственно распологаются микрофотографии микросхем и нанесенными сверху компонентами.
Поле делится на две группы слоев : - слои картинок - слои компонентов
Слои картинок Пользователь может выбирать на какой слой положить картинку и какой слой картинок отображать в данный момент. На одном слое может находится несколько картинок. У каждого слоя есть приоритет 0 -> 1 -> 2... Слой с большим приоритетом показывается выше нижних слоев. У картинок внутри слоя также есть приоритет 0 -> 1 -> 2 ... Картинки с большим приоритетом показываются выше остальных в текущем слое.
Свойства картинок - Номер слоя, на котором распологается картинка - Приоритет внутри слоя - Координаты верхнего левого угла - Линейные размеры - Правка геометрических искажений (подушка, бочка) -поддержка полупрозрачности картинок при рендере, которую можно регулировать - возможность иметь в локальном кеше свой вариант картинки, не загружая его на сервер (если надо с ней поработать в серьезном редакторе с какими-либо целями)
Картинки можно двигать мышкой на манер drag&drop.
Слои компонентов Все слои компонентов находятся выше всех слоев картинок. Внутри слоя у компонентов нет приоритета. Кроме компонентов можно размещать другие объекты : - Межсоединения. Обычные линии, фиксированной толщины. Состоит из двух координат (x;y), толщины линии в пикселях и цвета RGB. - Узлы. Места соединения межсоединений. Не являются физическими контактами, а используются для обозначения места перегиба. Когда пользователь тыкает на межсоединение - оно подсвечивается определенным образом. Причем осуществляется трассировка компонентов и подсвечивается весь кусок до входов/выходов составляющих его компонентов (если вход/выход блокирует подсветку). Отмена подсветки - ESC, или клик на пустое место. Рисование межсоединений осуществляется обычным образом - мышкой. - Bounding box-ы (bbox). Это замкнутые области для обозначения группы компонентов. При перетаскивании bbox-а - перетаскивается вся группа компонентов внутри него. Состоит из списка координат : Начало -> узел1 -> узел2 -> ... -> УзелN. Последний узел соединяется с началом. Проверка на вхождение компонента в bbox : если координаты левого-верхнего угла входят внутрь bbox-а, то компонент входит в bbox. Перетаскивание bbox осуществляется за Начало (которое обычно является верхним-левым углом)
Прочее - Самый задний бекграунд (ниже картинок) монотонного цвета (можно выставить в настройках) - Дополнительно можно включить "липкую" сетку (на манер окон WinAmp), цвет точек и шаг сетки можно выставить в настройках.
- нужны реперные точки для совмещения снимков слоев - нужно иметь возможность клонировать какой-либо набор графических обьектов, крутить его. Причем на всех слоях сразу ( это для повторяющихся элементов) - надо иметь в виду возможность подключения плагинов для авто распознавания
Пока это только графика. Даже если это будет реализовано, все упроститься. Плюс при реализации всплывут неучтенные моменты
В дальнейшем надо думать над механизмом перевода результатов трассировки в принципальную схему, а из нее в VHDL Кое какие наметки в этом направлении в дегейте есть.
Импорт схемы в PNG. По команде сервер может сгенерировать схему в виде обычной картинки.
|
 |
19 июн 2013, 18:10 |
|
Зарегистрирован: 28 июл 2007, 04:39 Сообщения: 103 Откуда: MSK
|
>GUI желательно стандартный winapi, чтобы можно было без проблем запускать в Wine. Зачем, если есть кроссплатформенный Qt?
Алсо, я так понял, degate под винду уже никому не нужен?
_________________ close the world... ..open the next.
|
 |
19 июн 2013, 18:34 |
|
Зарегистрирован: 19 июн 2013, 10:59 Сообщения: 30
|
iSage писал(а): >GUI желательно стандартный winapi, чтобы можно было без проблем запускать в Wine. Зачем, если есть кроссплатформенный Qt?
Алсо, я так понял, degate под винду уже никому не нужен? Ну. Гуя может и на Qt, основное - база на сервере. Кстати может имеет смысл иметь и ее локальную копию. degate под винду вы крутили побольше? Ваше мнение - демонстратор алгоритмов или что-то серьезнее? Есть ли смысл допиливать дальше или лучше делать прогу по данному ТЗ.
|
 |
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1 |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|