Персональный научно-технический сайт

Темы

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 и стадию потребления. Это связывает плоскую топологию с технологическим стеком и делает дальнейшую обработку воспроизводимой.

Рисунок 1 - Общая цепочка geometry_prep: layout/process входы приводятся к упорядоченному geometry state.

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.

Рисунок 2 - Scanline-механизм geometry_prep: contour records переходят в X-events, active interval index, pair candidates и intersection inputs.
Рисунок 3 - Классификация отношений: XY, Z, role и semantics формируют типизированные relation records.

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.

Источники

  1. Franco P. Preparata, Michael I. Shamos. Computational Geometry: An Introduction. Springer. DOI: 10.1007/978-1-4612-1098-6.
  2. Mark de Berg, Otfried Cheong, Marc van Kreveld, Mark Overmars. Computational Geometry: Algorithms and Applications. Springer. DOI: 10.1007/978-3-540-77974-2.
  3. Jon Louis Bentley, Thomas A. Ottmann. Algorithms for Reporting and Counting Geometric Intersections. IEEE Transactions on Computers, 1979. DOI: 10.1109/TC.1979.1675432.
  4. Bala R. Vatti. A generic solution to polygon clipping. Communications of the ACM, 35(7), 1992. DOI: 10.1145/129902.129906.
  5. Kevin Weiler, Peter Atherton. Hidden surface removal using polygon area sorting. SIGGRAPH. DOI: 10.1145/965141.563896.
  6. Wenjian Yu, Zeyi Wang. Capacitance Extraction. Encyclopedia of RF and Microwave Engineering. DOI: 10.1002/0471654507.eme573.
  7. 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
Всего комментариев: 0
avatar

Поиск

Друзья сайта