Темы |
|---|
C++ [2]
ЭМатериалы по языку C++ и разработке технического программного обеспечения. В разделе публикуются статьи о C++20/C++23, корутинах, шаблонах, архитектуре библиотек, управлении ресурсами, проектировании API и реализации низкоуровневых компонентов.
Солверы и численные методы [3]
Материалы по численным решателям, расчётным моделям и алгоритмам моделирования. В разделе публикуются статьи о построении расчётных сеток, решении систем уравнений, методах конечных элементов, граничных элементов, электромагнитных и паразитных расчётах, а также о реализации солверов в инженерном программном обеспечении.
|
Статистика |
|---|
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
Статьи
geometry_prep: абстрактная модель подготовки геометрии
geometry_prep: абстрактная модель подготовки геометрии
geometry_prep — это C++20-библиотека геометрической подготовки топологии межсоединений для задач 3D-экстракции паразитных ёмкостей интегральных схем. Библиотека преобразует layout-геометрию и технологическое описание процесса в каноническое геометрическое состояние: связывает топологические и технологические слои, нормализует контуры и интервалы, применяет технологические геометрические поправки, формирует пространственный индекс, классифицирует отношения между объектами и строит связное представление проводников, переходов, диэлектрических областей и локальных технологических эффектов.
Описание дано в абстрактной терминологии вычислительной геометрии и отражает geometry_prep pipeline, реализованный автором в библиотеке geometry_prep на C++20.
1. Назначение
geometry_prep принимает топологические данные макета, технологическое описание процесса, layer-map, design ports, текстовые метки, свойства объектов и runtime endpoint payloads.
Результатом является упорядоченный набор geometry records: рабочие IntBox-группы, Z-интервалы, layer/process роли, scanline events, relation records, component keys, component map, dielectric annotations, via/contact bindings, net/port bindings и connectivity records.
Внутри модели каждый геометрический объект получает идентификатор источника, исходную структуру, тип примитива, layer/datatype, process layer, layer role, source path, Z-range, candidate net id и стадию потребления. Это связывает плоскую топологию с технологическим стеком и делает дальнейшую обработку воспроизводимой.
2. Входная модель
Layout reader layer извлекает BOUNDARY, BOX, PATH, TEXT, SREF, AREF, свойства элементов, units и имена структур. BOUNDARY и BOX становятся polygon records. PATH сохраняет centerline, width и path type. TEXT становится semantic label candidate. SREF/AREF сохраняют referenced structure, origin, array vectors, row/column count, magnification, angle и reflection flags.
Process layer извлекает conductors, sub-conductors, dielectrics, vias, wells, diffusion, numeric WEE tables и raw process statements. Для conductors, sub-conductors и dielectrics высота и толщина превращаются в Z-range. Для via Z-range выводится из bottom/top layer endpoints. Raw statements группируются по семействам process metadata: line_end, rho, cf/cfi, variable_side_expands, variable_dielectric_constants, wire_thickness_ratio и local_erosion_candidates.
| Вход |
Что извлекается |
Что формирует в geometry_prep |
| Layout primitives |
BOUNDARY, BOX, PATH, TEXT, properties, units |
polygons, path records, labels, candidate net semantics |
| Hierarchy |
SREF/AREF, origin, array vectors, transforms |
flattened instance records and translated geometry records |
| Layer map |
layer/datatype → layout layer name |
layer/process binding and role assignment |
| Process stack |
conductor, sub-conductor, via, dielectric, well, diffusion |
Z-range, layer roles, via bridges, dielectric slices and process markers |
| Numeric tables |
WEE and process table payloads |
width/spacing lookup and traceable process metadata |
| Raw process statements |
line_end, rho, cf/cfi, VSE, VDC, WTR, loading/WBE/erosion |
raw process metadata families linked to the technology source |
| Ports and labels |
design port records and TEXT strings |
spatial binding candidates for components |
| Endpoint payloads |
endpoint keys and optional numeric ids |
layer blocking endpoint pair records and payload bindings |
3. Layer/process binding
Layer/process binding строит соответствие между layout layer/datatype и технологическим слоем. Слой получает role: conductor, sub-conductor, via, dielectric, well, diffusion или substrate reference. Для role с height/thickness добавляется Z-range. Для substrate-like layout layers сохраняется reference role и process source path.
Process route records разделяют проводящую геометрию, via/contact геометрию и process markers. Conductor и sub-conductor идут в scanline, intersection, layer processing и component map. Via/contact формирует bridge geometry и connectivity. Well, diffusion и substrate reference формируют process-layer markers для layer-processing metadata.
4. Нормализация геометрии
geometry_prep строит рабочую геометрию в целочисленных координатах. Для polygon/box вычисляется bounding box, edge event count и polygon_xy. Axis-aligned rectangle materializes as one IntBox. Orthogonal polygon decomposes into scan strips. PATH with width expands into axis-aligned segment IntBoxes. Эти IntBox становятся единым геометрическим носителем для scanline, relation classification, component grouping и via/contact binding.
Hierarchy flattening формирует flattened instance path. Для SREF используется translation от origin. Для AREF вычисляется translation по row/column и column/row vectors. Поддерживаемые flattened polygons and paths поступают в тот же pipeline, что и исходные primitives.
| Нормализация |
Что формируется |
| BOUNDARY / BOX |
bbox, polygon_xy, edge events, IntBox slices |
| Orthogonal polygon |
scan-strip IntBox decomposition and geometry storage input records |
| PATH with width |
axis-aligned segment IntBoxes and path expansion records |
| Via/contact polygon or path |
via IntBox, via component candidate and top/bottom overlap input |
| SREF / AREF |
flattened instance path, translation, row/column indexes, emitted polygon/path counts |
| TEXT label |
semantic candidate with layer key and XY point |
| Properties |
candidate net value via selected property attribute |
5. Scanline и intersection preprocessing
Scanline stage создает edge event stream. Для каждого рабочего IntBox или polygon slice фиксируются object id, edge index, endpoints, edge bbox и event kind. Ordered events сортируются по sweep X, затем по Y interval, source object id и source edge index. Этот порядок используется как spatial index для reproducible candidate pair generation.
Intersection stage вычисляет pairwise relations между bbox объектов. Для результата сохраняются source ids, process layer names, candidate net ids, Z-ranges, overlap box, overlap area, Z-gap, XY-overlap flag, Z-disjoint flag и classification. Классификация связывает XY-наложение, Z-отношение, роль слоя и semantic relation.
6. Технологические эффекты и local process metadata
geometry_prep учитывает технологические эффекты двумя способами: применяемые к рабочей геометрии records и сохраняемые process metadata families. Оба вида входят в model state и имеют source path, source key или table source.
WEE обрабатывается как табличная поправка для conductor/sub-conductor geometry. Модель собирает wire_edge_enlargement, wire_edge_enlargement_c и wire_edge_enlargement_r tables. Для рабочего IntBox определяется drawn width, nearest spacing, selected width index, selected spacing index и selected adjustment. Затем создается candidate reset box, который связывается со scanline input, intersection input и geometry storage input до component map.
Erosion/loading/local effects представлены как raw process metadata family. В эту группу входят loading_effect, loading_effect_*, wire_bottom_etching, WBE keys, erosion_clamping и erosion_file. Эти записи сохраняют family, key, token payload и source path. В статье это описывается как local process metadata, потому что библиотека удерживает источник технологического эффекта рядом с geometry/process state.
Average-thickness и thickness-related metadata представлены через wire_thickness_ratio и WTR-family records. Они сохраняются как process metadata для вертикальной технологической аннотации слоя. Z-range для проводников и диэлектриков строится из height/thickness, а via Z-range выводится из bottom/top endpoints.
Variable dielectric / damage-k metadata представлены через variable_dielectric_constants, VDC-family keys и conductor_spacings. Rho/cf/cfi metadata представлены через rho, rho_*, cf_* и cfi_* keys. Variable-side-expands представлены через variable_side_expands, vse_* и side_expand_values. Line-end metadata представлены через line_end* keys. Все эти группы попадают в raw process statement table и остаются связанными с технологическим источником.
| Эффект / metadata |
Что делает geometry_prep |
| WEE |
собирает WEE tables; выбирает adjustment по width/spacing; строит reset IntBox; применяет reset box к scanline, intersection и geometry storage input |
| Erosion / loading / WBE |
распознает loading_effect, wire_bottom_etching, WBE, erosion_clamping, erosion_file; сохраняет family, key, tokens и source path как local process metadata |
| Average thickness / WTR |
распознает wire_thickness_ratio and WTR keys; сохраняет thickness-related metadata рядом с process layer state |
| VDC / variable_damage_k |
распознает variable_dielectric_constants, VDC keys and conductor_spacings; сохраняет dielectric-variation metadata |
| rho |
распознает rho and rho_* keys; сохраняет resistivity-related process metadata |
| cf / cfi |
распознает cf_* and cfi_* keys; сохраняет capacitance-factor process metadata |
| VSE / side expands |
распознает variable_side_expands, vse_* and side_expand_values; сохраняет side-expansion metadata |
| line_end |
распознает line_end* statements; сохраняет line-end process metadata |
| Z-range |
строит vertical intervals из height/thickness and via endpoint layers |
| Dielectric stack |
строит dielectric slices; связывает slices с layer geometry; вычисляет covered thickness, series thickness/k and equivalent k для coupling relation |
| Layer blocking |
принимает endpoint payloads; нормализует endpoint пары; подавляет duplicate pair; сохраняет layer-pair metadata |
7. Via/contact, dielectric stack и coupling relations
Via/contact stage строит связь между via geometry и component ids нижнего и верхнего слоя. Для каждой via/contact записи сохраняются via layer, bottom layer, top layer, via Z-range, via IntBox, via component id, bottom component id, top component id, bottom/top overlap flags и materialization flags. Затем via net propagation переносит observed binding values через via component, bottom component и top component и создает component equivalence.
Dielectric stack stage строит dielectric slice records из технологического описания: dielectric name, Z-range, dielectric constant, source path, below conductor layer, above conductor layer and slice role. Для coupling candidate вычисляются z_low, z_high, z_gap, dielectric slice ids, slice names, slice thicknesses, dielectric constants, covered thickness, series thickness over k and equivalent dielectric constant. Coupling records сохраняют overlap IntBox, overlap area, component ids and layer pair.
8. Component map, semantics and connectivity graph
Component grouping строит component key: key family, text tag, component type, scalar id and Z-range id. Boxes с одинаковым ключом группируются в component map entry. Make-components transfer связывает staged storage order с final map order и final box order. Порядок задается через component type, scalar id, Z-range id, key family, text tag and component id.
Semantic binding связывает component id с property-derived net, TEXT label или design port. Design port parser читает source file, source line, port name, optional layer name, optional layer key and optional XY coordinate; затем port input resolves layer and prepares spatial match. Net/port binding records сохраняют binding kind, binding value, binding source and binding rule. Connectivity graph фиксирует root component id, equivalent components, observed binding values, net resolution status, via equivalence and semantic binding.
| Возможность библиотеки |
Что формируется |
| Layer/process binding |
layer/datatype → process layer, role, source path, status and Z-range |
| Layout ingestion |
polygons, boxes, paths, labels, SREF/AREF, units and properties |
| Hierarchy flattening |
translated flattened geometry with instance path and array indexes |
| Path expansion |
centerline+width → axis-aligned segment IntBoxes |
| Polygon slicing |
orthogonal polygon/box → IntBox slices and geometry storage inputs |
| Scanline index |
edge events, ordered sweep records and candidate ranges |
| Intersection records |
overlap box, overlap area, Z-gap and relation classification |
| WEE application |
table lookup, adjustment, reset IntBox and downstream geometry replacement |
| Local process metadata |
erosion/loading/WBE, WTR, VDC, rho, cf/cfi, VSE and line_end metadata families |
| Dielectric annotation |
dielectric slices, layer bindings, stack coverage and equivalent dielectric constant |
| Via/contact binding |
top/bottom overlap, via component, bottom/top components and equivalence |
| Layer blocking metadata |
runtime endpoint payloads, normalized pairs and duplicate suppression |
| Semantic binding |
property net, text label, design port and spatial binding records |
| Component map |
component keys, IntBox groups, final map order and make-components transfer |
| Connectivity graph |
root component ids, equivalent component ids and observed binding values |
9. Алгоритмическая основа
Модель использует стандартные идеи вычислительной геометрии: plane sweep, ordered event stream, spatial filtering through bounding boxes, polygon decomposition, pair classification and deterministic ordering. В geometry_prep эти приемы соединены с process-aware вертикальной моделью: layer role, Z-range, via bridge, dielectric interval and manufacturing-effect metadata.
Такой pipeline переводит hierarchical layout and process stack в проверяемую структуру геометрических отношений. Сначала геометрия нормализуется, затем индексируется, затем пары классифицируются, затем строятся components, process annotations and connectivity graph.
Источники
- Franco P. Preparata, Michael I. Shamos. Computational Geometry: An Introduction. Springer. DOI: 10.1007/978-1-4612-1098-6.
- Mark de Berg, Otfried Cheong, Marc van Kreveld, Mark Overmars. Computational Geometry: Algorithms and Applications. Springer. DOI: 10.1007/978-3-540-77974-2.
- Jon Louis Bentley, Thomas A. Ottmann. Algorithms for Reporting and Counting Geometric Intersections. IEEE Transactions on Computers, 1979. DOI: 10.1109/TC.1979.1675432.
- Bala R. Vatti. A generic solution to polygon clipping. Communications of the ACM, 35(7), 1992. DOI: 10.1145/129902.129906.
- Kevin Weiler, Peter Atherton. Hidden surface removal using polygon area sorting. SIGGRAPH. DOI: 10.1145/965141.563896.
- Wenjian Yu, Zeyi Wang. Capacitance Extraction. Encyclopedia of RF and Microwave Engineering. DOI: 10.1002/0471654507.eme573.
- Cadence Quantus Techgen Reference Manual 21.22: process file, conductor/dielectric/via/process descriptions and manufacturing effects.
|
|
Категория: Солверы и численные методы | Добавил: olegiv (24.06.2026) | Автор: Oleg Ivanov |
| Просмотров: 48
| Рейтинг: 0.0/0 |
|
|