emu-russia / psxrev

Sony PlayStation PCB/chips reverse engineering.
Creative Commons Zero v1.0 Universal
144 stars 19 forks source link

DEROUTE: Сохранить сущности как Netlist #74

Closed ogamespec closed 2 years ago

ogamespec commented 5 years ago

Необходимо из RubberTool перетащить алгоритм эластичной трансформации, но только для векторных данных.

Вкратце задача выглядит так:

image

EDIT: Вместо бессмысленных приседаний по выравниванию веселых картинок лучше сделать сохранение сущностей как Netlist (GRAPHML). При этом для "стыковки" двух виасов достаточно назвать их одинаковым именем.

ogamespec commented 3 years ago

На самом деле нет необходимости "подгонять" виасы, это бессмысленно и беспощадно.

Проще сохранять сущность в Netlist (Graphml) и в утилите yEd выполнять авто-расстановку графа.

Поэтому таска переквалифицируется в "Сохранить сущности как Netlist"

ogamespec commented 3 years ago

Кто ещё не видел как yEd умеет расставлять графы, можно посмотреть демо тут:

https://live.yworks.com/demos/layout/layoutstyles/index.html?layout=hierarchic&sample=hierarchic

Для цифровых схем хорошо подходит например Hierarchic Layout.

ogamespec commented 2 years ago

image

ogamespec commented 2 years ago

Так.

Идею с алиасами отбросил, как непонятную. Юзер должен помнить что у него A1 на одном конце и A1 на другом - одна вершина - бред короче.

Сделал сегменты проводов - ребрами.

Немного пришлось поколдовать над TraverseWires, плюс не уверен что алгоритм оптимальный (рекурсивный проход по смежным проводам сопровождается проходом по всем сущностям для проверки что в месте стыка нет виаса).

Изоморфизм достигнут:

image

На очереди группировка виасов ячеек/юнитов (на картинке выше группировка сделана уже руками в yEd).

ogamespec commented 2 years ago

И ещё нужно будет поднастроить ориентацию ребер - чтобы выходы были ориентированы на входы.