Tagged: connection
- This topic has 9 replies, 3 voices, and was last updated 5 years, 6 months ago by AleksandarK.
-
AuthorPosts
-
5 June 2019 at 18:04 #5558AleksandarKMember
Dear Nazca designers,
I have played with Nazca and in documentation (here to be precise) i discovered a phase shifter. Now i am wondering how could i add it to the Directional Coupler like this little demonstration i created (the gray box) here: https://imgur.com/nX6Bp7L
I would like to add the phase shifter there with some leads from it.
Here is my Directional Coupler:
import nazca as nd import nazca.demofab as demo with nd.Cell("Coupler") as coupler: # Upper arm demo.shallow.sinebend(distance=200, offset=-40).put(0, 50) demo.shallow.strt(length=40).put() demo.shallow.sinebend(distance=200, offset=40).put() # Lower arm demo.shallow.sinebend(distance=200, offset=40).put(0, -50) demo.shallow.strt(length=40).put() demo.shallow.sinebend(distance=200, offset=-40).put() # Add pins nd.Pin("a0").put(0, 50, 180) nd.Pin("a1").put(0, -50, 180) nd.Pin("b0").put(220, 50, 0) nd.Pin("b1").put(220, -50, 0) coupler.put(0, 0) nd.export_gds()
Thanks for reading 🙂
5 June 2019 at 18:10 #5560RonaldKeymasterDear AlexsandarK,
This link to getting started may be helpful to start connecting components, as well as this topic on cells and instances.
In your specific case you want to connect the phase shifter (electro-optical phase modulator) to pin[‘b0’] of the coupler you placed:
C = coupler.put(0) demo.eopm_dc().put(C.pin['b0'])
Ronald
7 June 2019 at 07:45 #5563AleksandarKMemberThanks for the answer Ronald!
I was looking at how are lasers are made and saw how to add external pin here. I would like to add external pin to phase shifter in order to for it to be controled. How can i pass that argument to it? I understand how to do it when drawing a cell from schratch, but how to add external pin(with leads to it) when i use demo.eopm_dc() func to draw the phase shifer?
7 June 2019 at 08:39 #5564RonaldKeymasterDear AleksandarK,
Pins are added at cell level. A good example you may have been looking at as you mention is in getting started part “7 Creating a parametrized DBR laser”. After a cell is closed (after leaving the with-context), you can’t add stuff to the cell any more and pin positions and properties are fixed (which is intended). Parameters to add to a pin at definition time are described here.
Ronald
7 June 2019 at 20:58 #5573AleksandarKMemberDear Ronald,
I added the pin, but i seem to get an error.
I get:
Traceback (most recent call last):
File “dc_with_phase_shifter.py”, line 23, in <module>
demo.eopm_dc(length=150).put(C.pin[‘b0’], pin[‘c0’])
NameError: name ‘pin’ is not definedCan anyone please help? 🙂
8 June 2019 at 21:03 #5585AleksandarKMember9 June 2019 at 18:09 #5587XaveerModeratorHi Aleksandar,
The phase shifter has a different cross section (“deep”) and you therefore need to add a shallow-to-deep junction. Also, placing the pad directly on top of the modulator is not advised, because the underlying structure could be damaged during electrical probing or bonding. So I added an offset w.r.t. the phase modulator.
Instead of the bend_strt_bend I used an sbend, which is usually what you’d have in such cases.
import nazca as nd import nazca.demofab as demo with nd.Cell("Coupler") as coupler: # Upper arm demo.shallow.sinebend(distance=100, offset=-40).put(0, 50) demo.shallow.strt(length=20).put() demo.shallow.sinebend(distance=100, offset=40).put() # Lower arm demo.shallow.sinebend(distance=100, offset=40).put(0, -50) demo.shallow.strt(length=20).put() demo.shallow.sinebend(distance=100, offset=-40).put() # Pins nd.Pin("a0").put(0, 50, 180) nd.Pin("a1").put(0, -50, 180) nd.Pin("b0").put(220, 50, 0) nd.Pin("b1").put(220, -50, 0) C = coupler.put(0) demo.s2d().put() eopm = demo.eopm_dc(length=150).put() pad = demo.pad_dc().put(eopm.pin["c1"].move(200, 100, 0)) demo.metaldc.sbend_p2p(eopm.pin["c1"], Lstart=100).put() nd.export_gds()
Xaveer
10 June 2019 at 08:41 #5590AleksandarKMemberThank you!
So if i wish to continue a waveguide from pin c1(if that is possible to do while still having external dc pin on that port), i have to use deep to shallow junctiom as well?
10 June 2019 at 11:33 #5591XaveerModeratorIn this case the eopm has four ports: a0, b0 and c0, c1. a0 and b0 are the optical ports, c0, c1 the electrical ports. They can be at the same location, depending on the specific component. a0 and b0 are the ports that by default are connected to.
If you want to connect an optical waveguide to the eopm, it has to be at b0 (or a0, but that is already connected). You can tell from the color of the stub if the connections match, deep-deep, or shallow-shallow, for the demofab technology. You should have loaded the demofab_klayout_colors.lyp file in klayout for proper visual feedback. Colors are very important in Nazca. See https://nazca-design.org/manage-klayout-technologies for instructions.
After the eopm you indeed have to add a deep to shallow junction and continue with shallow waveguides, or you can just continue with waveguides in the deep cross section, in which case of course there is no need for the transition.
11 June 2019 at 07:56 #5592AleksandarKMemberThank you very much!
-
AuthorPosts
- You must be logged in to reply to this topic.