@@ -32,17 +32,24 @@ def route_analog_pins(
32
32
via4 = tech .findVia ("Via4_YX_so" )
33
33
via3 = tech .findVia ("Via3_XY_so" )
34
34
35
+ analog_track = odb .dbTechNonDefaultRule_create (reader .block , 'analog_track' )
36
+ for layer in ['Metal1' , 'Metal2' , 'Metal3' , 'Metal4' , 'Metal5' , 'TopMetal1' ]:
37
+ layer_rule = odb .dbTechLayerRule_create (analog_track , tech .findLayer (layer ))
38
+ layer_rule .setWidth (900 )
39
+ layer_rule .setSpacing (2700 )
40
+
35
41
for inst in reader .block .getInsts ():
36
42
if inst .getMaster ().getName () == "tt_um_htfab_r2r_dac" :
37
43
for term in inst .getITerms ():
38
44
net = term .getNet ()
39
45
if net .getName () == "pad_raw[58]" :
40
46
net .clearSpecial ()
47
+ net .setNonDefaultRule (analog_track )
41
48
bbox = term .getBBox ()
42
49
wire = odb .dbWire .create (net )
43
50
encoder = odb .dbWireEncoder ()
44
51
encoder .begin (wire )
45
- encoder .newPath (metal5 , "FIXED" )
52
+ encoder .newPath (metal5 , "FIXED" , analog_track . getLayerRule ( metal5 ) )
46
53
encoder .addPoint (bbox .xMin (), bbox .yCenter ())
47
54
encoder .addPoint (bbox .xMin () - 50000 , bbox .yCenter ())
48
55
encoder .addTechVia (via4 )
@@ -56,26 +63,28 @@ def route_analog_pins(
56
63
net = term .getNet ()
57
64
if net .getName () == "pad_raw[59]" :
58
65
net .clearSpecial ()
66
+ net .setNonDefaultRule (analog_track )
59
67
bbox = term .getBBox ()
60
68
wire = odb .dbWire .create (net )
61
69
encoder = odb .dbWireEncoder ()
62
70
encoder .begin (wire )
63
- encoder .newPath (metal5 , "FIXED" )
71
+ encoder .newPath (metal5 , "FIXED" , analog_track . getLayerRule ( metal5 ) )
64
72
encoder .addPoint (bbox .xMin (), bbox .yCenter ())
65
- encoder .addPoint (bbox .xMin () - 49000 , bbox .yCenter ())
73
+ encoder .addPoint (bbox .xMin () - 47300 , bbox .yCenter ())
66
74
encoder .addTechVia (via4 )
67
- encoder .addPoint (bbox .xMin () - 49000 , 886490 )
75
+ encoder .addPoint (bbox .xMin () - 47300 , 886490 )
68
76
encoder .addPoint (319855 , 886490 )
69
77
encoder .addTechVia (via3 )
70
78
encoder .addPoint (319855 , 884490 )
71
79
encoder .end ()
72
80
if net .getName () == "pad_raw[60]" :
73
81
net .clearSpecial ()
82
+ net .setNonDefaultRule (analog_track )
74
83
bbox = term .getBBox ()
75
84
wire = odb .dbWire .create (net )
76
85
encoder = odb .dbWireEncoder ()
77
86
encoder .begin (wire )
78
- encoder .newPath (metal5 , "FIXED" )
87
+ encoder .newPath (metal5 , "FIXED" , analog_track . getLayerRule ( metal5 ) )
79
88
encoder .addPoint (bbox .xMin (), bbox .yCenter ())
80
89
encoder .addPoint (bbox .xMin () - 50000 , bbox .yCenter ())
81
90
encoder .addTechVia (via4 )
@@ -86,11 +95,12 @@ def route_analog_pins(
86
95
encoder .end ()
87
96
if net .getName () == "pad_raw[61]" :
88
97
net .clearSpecial ()
98
+ net .setNonDefaultRule (analog_track )
89
99
bbox = term .getBBox ()
90
100
wire = odb .dbWire .create (net )
91
101
encoder = odb .dbWireEncoder ()
92
102
encoder .begin (wire )
93
- encoder .newPath (metal5 , "FIXED" )
103
+ encoder .newPath (metal5 , "FIXED" , analog_track . getLayerRule ( metal5 ) )
94
104
encoder .addPoint (bbox .xMin (), bbox .yCenter ())
95
105
encoder .addPoint (bbox .xMin () - 50000 , bbox .yCenter ())
96
106
encoder .addTechVia (via4 )
0 commit comments