Skip to content

Conversation

gpeairs
Copy link
Member

@gpeairs gpeairs commented Oct 7, 2025

Adds a RouteChannel, which is basically a Path with a Trace style that gets divided up into "tracks" that routes can follow so that they run in parallel, using offsetting from the channel's center. Also introduces SingleChannelRouting <: RouteRule which lets users manually specify tracks for different paths before calling route! with that rule. Branches off of #88, since auto-speed/curvature is really useful for making nice transitions into/out of the channel.

This is one place I'm very glad to have good path primitives, since it's barely more difficult to do this with channels that follow arbitrary paths (BSplines, turns, compound segments). We can also taper channels and plug in different RouteRules for transitions.

image

Remaining to do:

  • Finish off tests, including using this with route!(::SchematicGraph, ...)
  • Maybe allow a simple automatic track assignment by looking clockwise from the channel start (no, this can be added later if necessary)
  • Documentation (preview here)

This is still a bit experimental. I'm not sure this is exactly the right interface and some of the details might change. (For example, maybe the margin should depend on track assignment, to help avoid crowding? Maybe users will want to specify margin by path? Maybe the Channel should know about what's in it, rather than or in addition to the RouteRule?)

A lot of this is the way it is as set-up for multi-channel routing. An even more experimental PR for that will come later.

Copy link

codecov bot commented Oct 7, 2025

Codecov Report

❌ Patch coverage is 96.85315% with 9 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/paths/contstyles/tapers.jl 28.57% 5 Missing ⚠️
src/hooks.jl 0.00% 1 Missing ⚠️
src/paths/contstyles/strands.jl 0.00% 1 Missing ⚠️
src/paths/contstyles/trace.jl 66.66% 1 Missing ⚠️
src/schematics/routes.jl 95.23% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant