updated with github #5
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 262 KiB |
@@ -0,0 +1,99 @@
|
||||
# =============================================
|
||||
# mxPIC Cell/Project Definition File
|
||||
# =============================================
|
||||
schema_version: "2.0.0"
|
||||
kind: cell
|
||||
coordinate_system: gds_y_up
|
||||
canvas_size:
|
||||
width: 5000
|
||||
height: 5000
|
||||
project: mxpic_project_1
|
||||
name: mxpic_project_1
|
||||
type: project
|
||||
version: "1.0.0"
|
||||
|
||||
# 1. External Ports (How this cell connects to the outside world)
|
||||
ports: []
|
||||
|
||||
# 2. Instances (The sub-components dropped onto this canvas)
|
||||
instances:
|
||||
MMI_1:
|
||||
component: Silterra/EMO1_2ML_CU_Al_RDL/primitives/multimode_interferometers/1x2MMI_1310nm_TE_Silterra_202603_ZKY_v2
|
||||
x: 476.0
|
||||
y: -2453.2
|
||||
rotation: 0.0
|
||||
flip: 0
|
||||
flop: 0
|
||||
mirror: false
|
||||
settings:
|
||||
length:
|
||||
|
||||
MMI_2:
|
||||
component: Silterra/EMO1_2ML_CU_Al_RDL/primitives/multimode_interferometers/1x2MMI_1310nm_TE_Silterra_202603_ZKY_v2
|
||||
x: 723.1
|
||||
y: -2241.8
|
||||
rotation: 0.0
|
||||
flip: 0
|
||||
flop: 0
|
||||
mirror: false
|
||||
settings:
|
||||
length:
|
||||
|
||||
MMI_3:
|
||||
component: Silterra/EMO1_2ML_CU_Al_RDL/primitives/multimode_interferometers/1x2MMI_1310nm_TE_Silterra_202603_ZKY_v2
|
||||
x: 438.9
|
||||
y: -2230.2
|
||||
rotation: 0.0
|
||||
flip: 0
|
||||
flop: 0
|
||||
mirror: false
|
||||
settings:
|
||||
length:
|
||||
|
||||
MMI_4:
|
||||
component: Silterra/EMO1_2ML_CU_Al_RDL/primitives/multimode_interferometers/1x2MMI_1310nm_TE_Silterra_202603_ZKY_v2
|
||||
x: 750.9
|
||||
y: -2468.7
|
||||
rotation: 0.0
|
||||
flip: 0
|
||||
flop: 0
|
||||
mirror: false
|
||||
settings:
|
||||
length:
|
||||
|
||||
elements:
|
||||
anchor_1:
|
||||
type: anchor
|
||||
x: 421.9
|
||||
y: -2624.7
|
||||
angle: 0.0
|
||||
layer: WG_CORE
|
||||
width: 0.5
|
||||
description: ""
|
||||
|
||||
# 3. Bundles (Grouped links for multi-bus/parallel routing)
|
||||
bundles:
|
||||
output_bus:
|
||||
routing_type: euler_bend
|
||||
links:
|
||||
- from: MMI_2:a1
|
||||
to: MMI_1:b1
|
||||
xsection: strip
|
||||
family: optical
|
||||
width: 0.45
|
||||
radius: 10
|
||||
routing_type: euler_bend
|
||||
- from: anchor_1:right
|
||||
to: MMI_4:a1
|
||||
xsection: strip
|
||||
family: optical
|
||||
width: 0.45
|
||||
radius: 10
|
||||
routing_type: euler_bend
|
||||
- from: anchor_1:left
|
||||
to: MMI_3:a1
|
||||
xsection: strip
|
||||
family: optical
|
||||
width: 0.45
|
||||
radius: 10
|
||||
routing_type: euler_bend
|
||||
Binary file not shown.
@@ -5181,13 +5181,21 @@
|
||||
style: view.style,
|
||||
data: { route }
|
||||
};
|
||||
const nodeMap = Object.fromEntries(activePage.nodes.map(node => [node.id, node]));
|
||||
const conflict = findSameTypeRouteCrossing(candidate, activePage.edges, nodeMap, technologyManifest);
|
||||
if (conflict) {
|
||||
const source = nodeMap[conflict.conflictEdge.source]?.data?.componentDisplayName || conflict.conflictEdge.source;
|
||||
const target = nodeMap[conflict.conflictEdge.target]?.data?.componentDisplayName || conflict.conflictEdge.target;
|
||||
addLog(`Connection rejected: ${route.xsection} route crosses ${source} to ${target}.`);
|
||||
return;
|
||||
}
|
||||
setPages(prev => prev.map(p => (
|
||||
p.id === activePageId
|
||||
? { ...p, edges: addEdge(candidate, p.edges) }
|
||||
: p
|
||||
)));
|
||||
addLog(`Connected ${connection.sourceHandle} to ${connection.targetHandle}.`);
|
||||
}, [activePageId, activePage, rulerMode, currentLinkRoute, addLog]);
|
||||
}, [activePageId, activePage, rulerMode, currentLinkRoute, technologyManifest, addLog]);
|
||||
|
||||
const handleRouteEdgeMouseDown = useCallback((event) => {
|
||||
if (rulerMode) return false;
|
||||
|
||||
@@ -92,9 +92,11 @@ assert(
|
||||
canvasHtml.includes('onConnect={handleBasicConnection}') &&
|
||||
canvasHtml.includes('nodesConnectable={true}') &&
|
||||
canvasHtml.includes('connectionMode="loose"') &&
|
||||
canvasHtml.includes('const conflict = findSameTypeRouteCrossing(candidate, activePage.edges, nodeMap, technologyManifest);') &&
|
||||
canvasHtml.includes('Connection rejected:') &&
|
||||
canvasHtml.includes('data: { route }') &&
|
||||
canvasHtml.includes('addEdge(candidate, p.edges)'),
|
||||
'canvas should use React Flow native pin-to-pin connections for new links'
|
||||
'canvas should use React Flow native pin-to-pin connections and reject same-xsection crossings for new links'
|
||||
);
|
||||
assert(
|
||||
!canvasHtml.includes('linkDraft') &&
|
||||
|
||||
Reference in New Issue
Block a user