Skip to content

Commit df144e7

Browse files
authored
feat(compiler): emit layer properties (#20)
* feat(compiler): emit layer properties * feat(lang): rect layers are now string values * hardcode lyp path
1 parent ff8f0f9 commit df144e7

File tree

17 files changed

+302
-66
lines changed

17 files changed

+302
-66
lines changed

Cargo.lock

Lines changed: 32 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/compiler/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ rust_decimal_macros = "1"
2727
indexmap = { version = "2", features = ["serde"] }
2828
clap = { version = "4", features = ["derive"] }
2929
geometry = { version = "0.7", registry = "substrate" }
30+
rgb = { version = "0.8", features = ["serde"] }
31+
klayout-lyp = "0.1.1"
3032

3133
[build-dependencies]
3234
cfgrammar = "0.13"

core/compiler/examples/cell_out_of_order.ar

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ cell top() {
66
eq(left.y, 0.);
77
eq(right.x, 300.);
88
eq(right.y, 0.);
9-
let met3 = rect(Layer::Met3, x0=left.met1.x0, y0=20., x1=right.met1.x1, y1=80.)!;
9+
let met3 = rect("met3", x0=left.met1.x0, y0=20., x1=right.met1.x1, y1=80.)!;
1010
}
1111

1212
cell bot() {
13-
let met1 = rect(Layer::Met1, x0=0., y0=0., x1=100., y1=100.)!;
14-
let met2 = rect(Layer::Met1, x0=100., y0=0., x1=200., y1=100.)!;
13+
let met1 = rect("met1", x0=0., y0=0., x1=100., y1=100.)!;
14+
let met2 = rect("met1", x0=100., y0=0., x1=200., y1=100.)!;
1515
}
1616

core/compiler/examples/func_out_of_order.ar

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ fn double(x: Float) -> Float {
77
}
88

99
cell test() {
10-
let shape = rect(Layer::Met1)!;
10+
let shape = rect("met1")!;
1111
eq(shape.x0, 0.);
1212
eq(shape.y0, 0.);
1313
eq(shape.y1, 100.);
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cell bot() {
2-
let met1 = rect(Layer::Met1, x0=0., y0=0., x1=100., y1=100.)!;
3-
let met2 = rect(Layer::Met1, x0=100., y0=0., x1=200., y1=100.)!;
2+
let met1 = rect("met1", x0=0., y0=0., x1=100., y1=100.)!;
3+
let met2 = rect("met1", x0=100., y0=0., x1=200., y1=100.)!;
44
}
55

66
cell top() {
@@ -11,6 +11,6 @@ cell top() {
1111
eq(left.y, 0.);
1212
eq(right.x, 300.);
1313
eq(right.y, 0.);
14-
let met3 = rect(Layer::Met3, x0=left.met1.x0, y0=20., x1=right.met1.x1, y1=80.)!;
14+
let met3 = rect("met3", x0=left.met1.x0, y0=20., x1=right.met1.x1, y1=80.)!;
1515
}
1616

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<layer-properties>
3+
<name>Basic Layer Properties</name>
4+
<properties>
5+
<frame-color>#0000ff</frame-color>
6+
<fill-color>#0000ff</fill-color>
7+
<frame-brightness>0</frame-brightness>
8+
<fill-brightness>0</fill-brightness>
9+
<dither-pattern>C7</dither-pattern>
10+
<line-style>C0</line-style>
11+
<valid>true</valid>
12+
<visible>true</visible>
13+
<transparent>false</transparent>
14+
<width>1</width>
15+
<marked>false</marked>
16+
<xfill>false</xfill>
17+
<animation>0</animation>
18+
<name>met1</name>
19+
<source>235/4@1</source>
20+
</properties>
21+
<properties>
22+
<frame-color>#5e00e6</frame-color>
23+
<fill-color>#5e00e6</fill-color>
24+
<frame-brightness>0</frame-brightness>
25+
<fill-brightness>0</fill-brightness>
26+
<dither-pattern>C7</dither-pattern>
27+
<line-style>C0</line-style>
28+
<valid>true</valid>
29+
<visible>true</visible>
30+
<transparent>false</transparent>
31+
<width>1</width>
32+
<marked>false</marked>
33+
<xfill>false</xfill>
34+
<animation>0</animation>
35+
<name>via1</name>
36+
<source>235/4@1</source>
37+
</properties>
38+
<properties>
39+
<frame-color>#ff00ff</frame-color>
40+
<fill-color>#ff00ff</fill-color>
41+
<frame-brightness>0</frame-brightness>
42+
<fill-brightness>0</fill-brightness>
43+
<dither-pattern>C7</dither-pattern>
44+
<line-style>C0</line-style>
45+
<valid>true</valid>
46+
<visible>true</visible>
47+
<transparent>false</transparent>
48+
<width>1</width>
49+
<marked>false</marked>
50+
<xfill>false</xfill>
51+
<animation>0</animation>
52+
<name>met2</name>
53+
<source>235/4@1</source>
54+
</properties>
55+
<properties>
56+
<frame-color>#ff8000</frame-color>
57+
<fill-color>#ff8000</fill-color>
58+
<frame-brightness>0</frame-brightness>
59+
<fill-brightness>0</fill-brightness>
60+
<dither-pattern>C7</dither-pattern>
61+
<line-style>C0</line-style>
62+
<valid>true</valid>
63+
<visible>true</visible>
64+
<transparent>false</transparent>
65+
<width>1</width>
66+
<marked>false</marked>
67+
<xfill>false</xfill>
68+
<animation>0</animation>
69+
<name>via2</name>
70+
<source>235/4@1</source>
71+
</properties>
72+
<properties>
73+
<frame-color>#00ffff</frame-color>
74+
<fill-color>#00ffff</fill-color>
75+
<frame-brightness>0</frame-brightness>
76+
<fill-brightness>0</fill-brightness>
77+
<dither-pattern>C7</dither-pattern>
78+
<line-style>C0</line-style>
79+
<valid>true</valid>
80+
<visible>true</visible>
81+
<transparent>false</transparent>
82+
<width>1</width>
83+
<marked>false</marked>
84+
<xfill>false</xfill>
85+
<animation>0</animation>
86+
<name>met3</name>
87+
<source>235/4@1</source>
88+
</properties>
89+
<properties>
90+
<frame-color>#268c6b</frame-color>
91+
<fill-color>#268c6b</fill-color>
92+
<frame-brightness>0</frame-brightness>
93+
<fill-brightness>0</fill-brightness>
94+
<dither-pattern>C7</dither-pattern>
95+
<line-style>C0</line-style>
96+
<valid>true</valid>
97+
<visible>true</visible>
98+
<transparent>false</transparent>
99+
<width>1</width>
100+
<marked>false</marked>
101+
<xfill>false</xfill>
102+
<animation>0</animation>
103+
<name>via3</name>
104+
<source>235/4@1</source>
105+
</properties>
106+
<properties>
107+
<frame-color>#5e00e6</frame-color>
108+
<fill-color>#5e00e6</fill-color>
109+
<frame-brightness>0</frame-brightness>
110+
<fill-brightness>0</fill-brightness>
111+
<dither-pattern>C7</dither-pattern>
112+
<line-style>C0</line-style>
113+
<valid>true</valid>
114+
<visible>true</visible>
115+
<transparent>false</transparent>
116+
<width>1</width>
117+
<marked>false</marked>
118+
<xfill>false</xfill>
119+
<animation>0</animation>
120+
<name>met4</name>
121+
<source>235/4@1</source>
122+
</properties>
123+
</layer-properties>

core/compiler/examples/nested_inst.ar

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
cell bot() {
2-
let met1 = rect(Layer::Met1, x0=0., y0=0., x1=100., y1=100.)!;
3-
let met2 = rect(Layer::Met1, x0=100., y0=0., x1=200., y1=100.)!;
2+
let met1 = rect("met1", x0=0., y0=0., x1=100., y1=100.)!;
3+
let met2 = rect("met1", x0=100., y0=0., x1=200., y1=100.)!;
44
let met3 = make_rect()!;
55
let met4 = emit_rect();
66
}
77

88
fn make_rect() -> Rect {
9-
rect(Layer::Met2, x0=0., y0=0., x1=200., y1=100.)
9+
rect("met2", x0=0., y0=0., x1=200., y1=100.)
1010
}
1111

1212
fn emit_rect() -> Rect {
13-
rect(Layer::Met2, x0=0., y0=0., x1=200., y1=100.)!
13+
rect("met2", x0=0., y0=0., x1=200., y1=100.)!
1414
}
1515

1616
cell middle() {
@@ -27,7 +27,7 @@ cell top() {
2727
eq(left.y, 0.);
2828
eq(right.x, 300.);
2929
eq(right.y, 0.);
30-
let met3 = rect(Layer::Met3, x0=left.bot.met1.x0, y0=20., x1=right.bot.met1.x1, y1=80.)!;
30+
let met3 = rect("met3", x0=left.bot.met1.x0, y0=20., x1=right.bot.met1.x1, y1=80.)!;
3131
let duplicate_rect = left.bot.met3!;
3232
}
3333

core/compiler/examples/scopes.ar

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ cell scopes() {
66
let tmp = z + x0;
77
tmp
88
};
9-
rect(Layer::Met1, x0=x0, y0=y0, w=z, h=w)!;
9+
rect("met1", x0=x0, y0=y0, w=z, h=w)!;
1010
}

core/compiler/examples/via.ar

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cell via() {
2-
let via = rect(Layer::Via1)!;
3-
let met1 = rect(Layer::Met1)!;
2+
let via = rect("via1")!;
3+
let met1 = rect("met1")!;
44
eq(via.h, 40.);
55
eq(via.w, if met1.w < 20. {
66
10.

core/compiler/examples/via_array.ar

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,11 @@ fn max_array(r: Rect, w: Float, h: Float, xpitch: Float, ypitch: Float) -> Rect
9191
}
9292

9393
cell vias() {
94-
let met2 = rect(Layer::Met2)!;
95-
let met1 = rect(Layer::Met1)!;
94+
let met2 = rect("met2")!;
95+
let met1 = rect("met1")!;
9696

9797
// Create via.
98-
let via = rect(Layer::Via1);
98+
let via = rect("via1");
9999
eq(via.w, 10.);
100100
eq(via.h, 10.);
101101
eq(via.x0, 0.);

0 commit comments

Comments
 (0)