@@ -50,7 +50,7 @@ export const getSimpleRouteJsonFromCircuitJson = ({
5050 }
5151
5252 const subcircuitElements = ( circuitJson ?? db . toArray ( ) ) . filter (
53- ( e : any ) =>
53+ ( e ) =>
5454 ! subcircuit_id ||
5555 ( "subcircuit_id" in e && relevantSubcircuitIds ! . has ( e . subcircuit_id ! ) ) ,
5656 )
@@ -70,13 +70,22 @@ export const getSimpleRouteJsonFromCircuitJson = ({
7070 board = db . pcb_board . list ( ) [ 0 ]
7171 }
7272
73-
73+ db = su ( subcircuitElements )
7474
7575 const connMap = getFullConnectivityMapFromCircuitJson ( subcircuitElements )
7676
7777 const obstacles = getObstaclesFromCircuitJson (
78- subcircuitElements . filter ( ( e : any ) =>
79- [ "pcb_component" , "pcb_smtpad" , "pcb_plated_hole" , "pcb_hole" , "pcb_via" , "pcb_cutout" ] . includes ( e . type ) ,
78+ [
79+ ...db . pcb_component . list ( ) ,
80+ ...db . pcb_smtpad . list ( ) ,
81+ ...db . pcb_plated_hole . list ( ) ,
82+ ...db . pcb_hole . list ( ) ,
83+ ...db . pcb_via . list ( ) ,
84+ ...db . pcb_cutout . list ( ) ,
85+ // getObstaclesFromSoup is old and doesn't support diagonal traces
86+ // ...db.pcb_trace.list(),
87+ ] . filter (
88+ ( e ) => ! subcircuit_id || relevantSubcircuitIds ?. has ( e . subcircuit_id ! ) ,
8089 ) ,
8190 connMap ,
8291 )
@@ -90,9 +99,7 @@ export const getSimpleRouteJsonFromCircuitJson = ({
9099 }
91100
92101 // Build mapping from source_port_id to internal connection ID for interconnects
93- const internalConnections = subcircuitElements . filter (
94- ( e : any ) => e . type === "source_component_internal_connection" ,
95- ) as any [ ]
102+ const internalConnections = db . source_component_internal_connection . list ( )
96103 const sourcePortIdToInternalConnectionId = new Map < string , string > ( )
97104 for ( const ic of internalConnections ) {
98105 for ( const sourcePortId of ic . source_port_ids ) {
@@ -105,7 +112,7 @@ export const getSimpleRouteJsonFromCircuitJson = ({
105112
106113 // Build mapping from pcb_smtpad_id/pcb_plated_hole_id to source_port_id via pcb_port
107114 const pcbElementIdToSourcePortId = new Map < string , string > ( )
108- for ( const pcbPort of subcircuitElements . filter ( ( e : any ) => e . type === "pcb_port" ) as any [ ] ) {
115+ for ( const pcbPort of db . pcb_port . list ( ) ) {
109116 if ( pcbPort . source_port_id ) {
110117 // Find the smtpad or plated hole associated with this port
111118 const smtpad = db . pcb_smtpad . getWhere ( {
@@ -195,21 +202,18 @@ export const getSimpleRouteJsonFromCircuitJson = ({
195202 }
196203 }
197204 const routedTraceIds = new Set (
198- ( subcircuitElements . filter ( ( e : any ) => e . type === "pcb_trace" ) as any [ ] )
199- . map ( ( t : any ) => t . source_trace_id )
200- . filter ( ( id : any ) : id is string => Boolean ( id ) ) ,
205+ db . pcb_trace
206+ . list ( )
207+ . map ( ( t ) => t . source_trace_id )
208+ . filter ( ( id ) : id is string => Boolean ( id ) ) ,
201209 )
202210
203211 // Create connections from traces
204- const directTraceConnections = ( subcircuitElements . filter (
205- ( e : any ) => e . type === "source_trace" ,
206- ) as any [ ] )
207- . filter (
208- ( trace : any ) =>
209- ! routedTraceIds . has ( trace . source_trace_id ) ,
210- )
211- . map ( ( trace : any ) => {
212- const connectedPorts = trace . connected_source_port_ids . map ( ( id : string ) => {
212+ const directTraceConnections = db . source_trace
213+ . list ( )
214+ . filter ( ( trace ) => ! routedTraceIds . has ( trace . source_trace_id ) )
215+ . map ( ( trace ) => {
216+ const connectedPorts = trace . connected_source_port_ids . map ( ( id ) => {
213217 const source_port = db . source_port . get ( id )
214218 const pcb_port = db . pcb_port . getWhere ( { source_port_id : id } )
215219 return {
@@ -220,16 +224,9 @@ export const getSimpleRouteJsonFromCircuitJson = ({
220224
221225 if ( connectedPorts . length < 2 ) return null
222226
227+ // TODO handle trace.connected_source_net_ids
223228 const [ portA , portB ] = connectedPorts
224229
225- const netId = trace . source_trace_id
226- ? connMap . getNetConnectedToId ( trace . source_trace_id )
227- : null
228- const net = netId ? db . source_net . get ( netId ) : null
229- const connectionName = net ?. name
230- ? `net.${ net . name } `
231- : `trace ${ trace . source_trace_id } `
232-
233230 if (
234231 ! portA . pcb_port_id ||
235232 portA . x === undefined ||
@@ -238,16 +235,9 @@ export const getSimpleRouteJsonFromCircuitJson = ({
238235 const readablePortA = portA . pcb_port_id
239236 ? getReadableNameForPcbPort ( db . toArray ( ) , portA . pcb_port_id )
240237 : "unknown"
241- db . pcb_trace_error . insert ( {
242- error_type : "pcb_trace_error" ,
243- source_trace_id : trace . source_trace_id ! ,
244- message : `Port ${ readablePortA } on ${ connectionName } does not have x/y coordinates. Skipping this trace.` ,
245- pcb_trace_id : null as any ,
246- pcb_component_ids : [ portA . pcb_component_id ] . filter (
247- ( id ) : id is string => Boolean ( id ) ,
248- ) ,
249- pcb_port_ids : [ portA . pcb_port_id ! ] ,
250- } )
238+ console . error (
239+ `(${ readablePortA } ) for trace ${ trace . source_trace_id } does not have x/y coordinates. Skipping this trace.` ,
240+ )
251241 return null
252242 }
253243 if (
@@ -258,16 +248,9 @@ export const getSimpleRouteJsonFromCircuitJson = ({
258248 const readablePortB = portB . pcb_port_id
259249 ? getReadableNameForPcbPort ( db . toArray ( ) , portB . pcb_port_id )
260250 : "unknown"
261- db . pcb_trace_error . insert ( {
262- error_type : "pcb_trace_error" ,
263- source_trace_id : trace . source_trace_id ! ,
264- message : `Port ${ readablePortB } on ${ connectionName } does not have x/y coordinates. Skipping this trace.` ,
265- pcb_trace_id : null as any ,
266- pcb_component_ids : [ portB . pcb_component_id ] . filter (
267- ( id ) : id is string => Boolean ( id ) ,
268- ) ,
269- pcb_port_ids : [ portB . pcb_port_id ! ] ,
270- } )
251+ console . error (
252+ `(${ readablePortB } ) for trace ${ trace . source_trace_id } does not have x/y coordinates. Skipping this trace.` ,
253+ )
271254 return null
272255 }
273256
@@ -296,7 +279,10 @@ export const getSimpleRouteJsonFromCircuitJson = ({
296279 }
297280
298281 return {
299- name : connectionName ,
282+ name :
283+ trace . source_trace_id ??
284+ connMap . getNetConnectedToId ( trace . source_trace_id ) ??
285+ "" ,
300286 source_trace_id : trace . source_trace_id ,
301287 nominalTraceWidth : trace . min_trace_thickness ,
302288 width : trace . min_trace_thickness ,
@@ -306,15 +292,15 @@ export const getSimpleRouteJsonFromCircuitJson = ({
306292 y : portA . y ! ,
307293 layer : layerA ,
308294 pointId : portA . pcb_port_id ,
309- source_port_id : portA . source_port_id ,
295+ pcb_port_id : portA . pcb_port_id ,
310296 } ,
311297 ...hintPoints ,
312298 {
313299 x : portB . x ! ,
314300 y : portB . y ! ,
315301 layer : layerB ,
316302 pointId : portB . pcb_port_id ,
317- source_port_id : portB . source_port_id ,
303+ pcb_port_id : portB . pcb_port_id ,
318304 } ,
319305 ] ,
320306 } as SimpleRouteConnection
@@ -324,7 +310,11 @@ export const getSimpleRouteJsonFromCircuitJson = ({
324310 directTraceConnections . map ( ( c ) => [ c . source_trace_id , c ] ) ,
325311 )
326312
327- const source_nets = subcircuitElements . filter ( ( e : any ) => e . type === "source_net" ) as any [ ]
313+ const source_nets = db . source_net
314+ . list ( )
315+ . filter (
316+ ( e ) => ! subcircuit_id || relevantSubcircuitIds ?. has ( e . subcircuit_id ! ) ,
317+ )
328318
329319 const connectionsFromNets : SimpleRouteConnection [ ] = [ ]
330320 for ( const net of source_nets ) {
@@ -346,13 +336,17 @@ export const getSimpleRouteJsonFromCircuitJson = ({
346336 y : p . y ! ,
347337 layer : ( p . layers ?. [ 0 ] as any ) ?? "top" ,
348338 pointId : p . pcb_port_id ,
349- source_port_id : p . source_port_id ,
339+ pcb_port_id : p . pcb_port_id ,
350340 } ) )
351341 } ) ,
352342 } )
353343 }
354344
355- const breakoutPoints = subcircuitElements . filter ( ( e : any ) => e . type === "pcb_breakout_point" ) as any [ ]
345+ const breakoutPoints = db . pcb_breakout_point
346+ . list ( )
347+ . filter (
348+ ( bp ) => ! subcircuit_id || relevantSubcircuitIds ?. has ( bp . subcircuit_id ! ) ,
349+ )
356350
357351 const connectionsFromBreakoutPoints : SimpleRouteConnection [ ] = [ ]
358352 const breakoutTraceConnectionsById = new Map < string , SimpleRouteConnection > ( )
@@ -400,7 +394,7 @@ export const getSimpleRouteJsonFromCircuitJson = ({
400394 layer : ( pcb_port . layers ?. [ 0 ] as any ) ?? "top" ,
401395 pointId : pcb_port . pcb_port_id ,
402396 // @ts -ignore
403- source_port_id : pcb_port . source_port_id ,
397+ pcb_port_id : pcb_port . pcb_port_id ,
404398 } ,
405399 pt ,
406400 ] ,
@@ -425,7 +419,11 @@ export const getSimpleRouteJsonFromCircuitJson = ({
425419 }
426420
427421 // ----- 3. Walk existing pcb_traces to find already-connected port groups
428- const existingTraces = subcircuitElements . filter ( ( e : any ) => e . type === "pcb_trace" ) as any [ ]
422+ const existingTraces = db . pcb_trace
423+ . list ( )
424+ . filter (
425+ ( t ) => ! subcircuit_id || relevantSubcircuitIds ?. has ( t . subcircuit_id ! ) ,
426+ )
429427
430428 for ( const tr of existingTraces ) {
431429 const tracePortIds = new Set < string > ( )
0 commit comments