aboutsummaryrefslogtreecommitdiff
path: root/circuits/add_drop.cir
blob: bc0ee01db48e82eebc0c76e66ab9eeefa6a7c7dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
* An Add-drop filter

* Circuit parameters
.assign lambda0 = 1.55e-6
.assign neff = 2.3
.assign length_2pi = {lambda0}/{neff}
.assign k = 0.85

.subckt test p1 p2 length=100e-6 att=1 neff=2.2 ng=4.3
wg1 p1 0 length={length} att={att} neff={neff} ng={ng}
wg2 0 p2 length={length} att={att} neff={neff} ng={ng}
.ends

* Circuit definition
cwsrc1 in_ wl=1.55e-6 power=1
x1 in_ in test length=1e-3 neff=1 ng=4 att=0
;wg_access in_ in length={length_2pi} neff={neff} ng=4

coupler1 in ring_bl out ring_br k={k}
coupler2 add ring_tr drop ring_tl k={k}

wg_ring_l ring_tl ring_bl att=2 length=101*{length_2pi} neff={neff} ng=4.3
wg_ring_r ring_br ring_tr att=2 length=101*{length_2pi} neff={neff} ng=4.3

* Simulator options
.options abstol=1e-12 reltol=1e-6 timescale=-15

* DC analysis (CW sweep) parameters
.assign lambda_min = {lambda0} - 15e-9
.assign lambda_max = 2*{lambda0}-{lambda_min}
.assign dlambda = 1*1e-9

* Analysis
;.dc WL(cwsrc1) {lambda_min} {lambda_max} {dlambda} P(cwsrc1) 0 1 0.01
.dc /cwsrc1/WL {lambda_min} {lambda_max} {dlambda}
;.dc P(cwsrc1) 0 1 0.1
;.dc FREQ(cwsrc1) 192e12 194e12 1e9
;.dc WL(cwsrc1)
;.op
;.tran
;.dc wl(osrc1)=[{lambda_min},{lambda_max},{npoints}]