Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cross-section transition #208

Open
alpasla opened this issue Oct 4, 2024 · 1 comment
Open

Cross-section transition #208

alpasla opened this issue Oct 4, 2024 · 1 comment

Comments

@alpasla
Copy link

alpasla commented Oct 4, 2024

The linear transition between cross-sections does not work well: the offset sections still taper with a sinusoidal profile. This is evident in the transition method defintion in phidl.path. However forcing the offset sections to be follow linear profiles looks bad too. The transition with the sine profile does work well.

Here is a minimum working example:

import phidl
import phidl.path as pp

readout_layer = (1,0)

readout_CPW_strip_w = 2
readout_CPW_slot_w  = 3
readout_CPW_w       = readout_CPW_strip_w + 2*readout_CPW_slot_w

bondpad_CPW_strip_w = 20
bondpad_CPW_slot_w  = 30
bondpad_CPW_w         = bondpad_CPW_strip_w + 2*bondpad_CPW_slot_w

readout_xsection      = phidl.CrossSection()
readout_xsection.add(width=readout_CPW_strip_w, offset=0, layer=readout_layer, name='strip')
readout_xsection.add(width=readout_CPW_slot_w, offset=+(readout_CPW_strip_w/2+readout_CPW_slot_w/2), layer=readout_layer, name='slot1')
readout_xsection.add(width=readout_CPW_slot_w, offset=-(readout_CPW_strip_w/2+readout_CPW_slot_w/2), layer=readout_layer, name='slot2')


bondpad_xsection      = phidl.CrossSection()
bondpad_xsection.add(width=bondpad_CPW_strip_w, offset=0, layer=readout_layer, name='strip')
bondpad_xsection.add(width=bondpad_CPW_slot_w, offset=+(bondpad_CPW_strip_w/2+bondpad_CPW_slot_w/2), layer=readout_layer, name='slot1')
bondpad_xsection.add(width=bondpad_CPW_slot_w, offset=-(bondpad_CPW_strip_w/2+bondpad_CPW_slot_w/2), layer=readout_layer, name='slot2')


bondpad_taper_xsection = pp.transition(cross_section1 = bondpad_xsection,
                                       cross_section2 = readout_xsection,
                                       width_type = 'linear')    

bondpad_taper_l = 100
bondpad_taper_path = pp.straight(length = bondpad_taper_l)
bondpad_taper          = bondpad_taper_path.extrude(bondpad_taper_xsection)

phidl.quickplot(bondpad_taper)

image

@MechanicalPenguin225
Copy link

MechanicalPenguin225 commented Feb 4, 2025

Just stumbled on this too. Looks like it might happen when a section is offset from the crossection center ?

EDIT : looking in the code, looks like it's the case. Segment width does taper linearly, but its centerpoint is still mappsed out using a cosine transition

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

No branches or pull requests

2 participants