Skip to content

Commit 10d4ff7

Browse files
authored
Merge pull request #4378 from AcKoucher/write-rc-clean-up
remove unused functions in net RC script and renaming for concision
2 parents 46ab264 + 19f8108 commit 10d4ff7

2 files changed

Lines changed: 5 additions & 178 deletions

File tree

flow/util/write_net_rc.tcl

Lines changed: 2 additions & 175 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,4 @@
1-
proc report_wire_caps { count } {
2-
set nets [lsort -command net_wire_cap_less [get_nets *]]
3-
set i 0
4-
foreach net $nets {
5-
set wire_cap [net_wire_cap $net]
6-
puts "[get_full_name $net] [sta::format_capacitance $wire_cap 3]"
7-
if { $i >= $count } {
8-
break
9-
}
10-
incr i
11-
}
12-
}
13-
14-
proc net_wire_cap_less { net1 net2 } {
15-
expr [net_wire_cap $net1] < [net_wire_cap $net2]
16-
}
17-
18-
proc report_var_caps { var_name count } {
19-
upvar 1 $var_name var
20-
global cap_var_name
21-
22-
set cap_var_name $var_name
23-
set nets [lsort -command net_var_cap_less [get_nets *]]
24-
set i 0
25-
foreach net $nets {
26-
set net_name [get_full_name $net]
27-
puts "$net_name [sta::format_capacitance $var($net_name) 3]"
28-
if { $i >= $count } {
29-
break
30-
}
31-
incr i
32-
}
33-
}
34-
35-
proc write_rc_csv { filename } {
1+
proc write_nets_rc_csv { filename } {
362
upvar 1 grt grt_net_name_to_rc
373
upvar 1 rcx rcx_net_name_to_rc
384

@@ -97,7 +63,7 @@ proc write_rc_csv { filename } {
9763
close $stream
9864
}
9965

100-
proc record_wire_rc { var_name } {
66+
proc fetch_nets_rc { var_name } {
10167
upvar 1 $var_name var
10268

10369
foreach net [get_nets *] {
@@ -116,142 +82,3 @@ proc net_wire_res { net } {
11682
proc net_wire_cap { net } {
11783
return [$net wire_capacitance [sta::cmd_scene] max]
11884
}
119-
120-
proc net_pin_cap { net } {
121-
return [$net pin_capacitance [sta::cmd_scene] max]
122-
}
123-
124-
proc net_wire_cap_less { net1 net2 } {
125-
expr [net_wire_cap $net1] < [net_wire_cap $net2]
126-
}
127-
128-
proc net_var_cap_less { net1 net2 } {
129-
global var_cap_less_name
130-
upvar 2 $var_cap_less_name cap_var
131-
132-
set net_name1 [get_full_name $net1]
133-
set net_name2 [get_full_name $net2]
134-
lassign $cap_var($net_name1) res1 cap1
135-
lassign $cap_var($net_name2) res2 cap2
136-
expr $cap1 < $cap2
137-
}
138-
139-
proc compare_wire_rc { count var_name ref_var_name } {
140-
global var_cap_less_name
141-
142-
set i 0
143-
# implicit arg to net_var_cap_less
144-
set var_cap_less_name $ref_var_name
145-
set nets [lsort -command net_var_cap_less [get_nets *]]
146-
puts "net fanout [format %4s $var_name] [format %5s $ref_var_name] \
147-
wire total [format %5s $var_name] [format %5s $ref_var_name]"
148-
puts " cap cap delta delta res res delta"
149-
set res_sum 0.0
150-
set res_count 0
151-
set cap_sum 0.0
152-
set total_cap_sum 0.0
153-
foreach net $nets {
154-
lassign [compare_wire_rc1 $net $var_name $ref_var_name] \
155-
res_delta res_count cap_delta total_delta
156-
set res_sum [expr $res_sum + $res_delta]
157-
set res_count [expr $res_count + $res_count]
158-
set cap_sum [expr $cap_sum + $cap_delta]
159-
set total_cap_sum [expr $total_cap_sum + $total_delta]
160-
if { $i >= $count } {
161-
break
162-
}
163-
incr i
164-
}
165-
set res_avg [expr $res_sum / $count]
166-
set cap_avg [expr $cap_sum / $count]
167-
set total_cap_avg [expr $total_cap_sum / $count]
168-
puts " \
169-
----- ----- -----"
170-
puts " \
171-
[format %+4.0f $cap_avg]% [format %+4.0f $total_cap_avg]%\
172-
[format %+4.0f $res_avg]%"
173-
}
174-
175-
proc compare_net_wire_rc { net_name var_name ref_var_name } {
176-
upvar 1 $var_name cap_var
177-
upvar 1 $ref_var_name ref_var
178-
global var_cap_less_name
179-
180-
puts "net fanout [format %5s $var_name] [format %5s $ref_var_name] \
181-
wire total"
182-
puts " cap cap delta delta"
183-
compare_wire_rc1 [get_net $net_name] $var_name $ref_var_name
184-
}
185-
186-
proc compare_wire_rc1 { net var_name ref_var_name } {
187-
upvar 2 $var_name rc_var
188-
upvar 2 $ref_var_name ref_var
189-
190-
set net_name [get_full_name $net]
191-
set pin_cap [net_pin_cap $net]
192-
lassign $rc_var($net_name) res wire_cap
193-
lassign $ref_var($net_name) res_ref wire_cap_ref
194-
195-
if { $res != 0.0 } {
196-
set res_delta [expr ($res - $res_ref) / $res_ref * 100]
197-
set res_count 1
198-
} else {
199-
set res_delta 0.0
200-
set res_count 0
201-
}
202-
203-
if { $wire_cap_ref != 0.0 } {
204-
set cap_delta [expr ($wire_cap - $wire_cap_ref) / $wire_cap_ref * 100]
205-
} else {
206-
set cap_delta 0.0
207-
}
208-
209-
set total_cap [expr $pin_cap + $wire_cap]
210-
set total_cap_ref [expr $pin_cap + $wire_cap_ref]
211-
if { $total_cap_ref != 0.0 } {
212-
set total_delta [expr ($total_cap - $total_cap_ref) / $total_cap_ref * 100]
213-
} else {
214-
set total_delta 0.0
215-
}
216-
217-
set fanout [llength [get_pins -of $net -filter "direction == input"]]
218-
219-
puts -nonewline [concat \
220-
[format "%-20s" $net_name] " " \
221-
[format "%5d" $fanout] " " \
222-
[format "%8s" [sta::format_capacitance $wire_cap 3]] " " \
223-
[format "%8s" [sta::format_capacitance $wire_cap_ref 3]] " " \
224-
[format "%4.0f" $cap_delta]% " " \
225-
[format "%4.0f" $total_delta]%]
226-
if { $res > 0.0 } {
227-
puts [concat \
228-
[format "%8s" [sta::format_resistance $res 3]] " " \
229-
[format "%8s" [sta::format_resistance $res_ref 3]] " " \
230-
[format "%4.0f" $res_delta]%]
231-
} else {
232-
puts ""
233-
}
234-
return [list $res_delta $res_count $cap_delta $total_delta]
235-
}
236-
237-
# adjustment is percent to adjust (ie, 10 for +10%).
238-
proc write_layer_rc_cmds { adjustment } {
239-
foreach layer [[ord::get_db_tech] getLayers] {
240-
if { [$layer getRoutingLevel] > 0 } {
241-
set res_per_sq [$layer getResistance]
242-
set wire_width [ord::dbu_to_microns [$layer getWidth]]
243-
# Convert ohms/square to resistance/wire_length (ohms/micron)
244-
set res [expr $res_per_sq / $wire_width]
245-
246-
set cap_edge [$layer getEdgeCapacitance]
247-
set cap_area [$layer getCapacitance]
248-
# Convert pF/um to F/um.
249-
set cap [expr \
250-
($cap_edge * 2.0 + $wire_width * $cap_area) * 1e-12 / (1.0 + $adjustment / 100.0)]
251-
puts [concat \
252-
"set_layer_rc -layer [$layer getConstName] " \
253-
"-resistance [format %.4e [sta::resistance_sta_ui $res]] " \
254-
"-capacitance [format %.4e [sta::capacitance_sta_ui $cap]]"]
255-
}
256-
}
257-
}

flow/util/write_net_rc_script.tcl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ load_design 6_final.odb 6_final.sdc
44
source $::env(UTILS_DIR)/write_net_rc.tcl
55

66
estimate_parasitics -global_routing
7-
record_wire_rc grt
7+
fetch_nets_rc grt
88

99
read_spef $::env(RESULTS_DIR)/6_final.spef
10-
record_wire_rc rcx
10+
fetch_nets_rc rcx
1111

1212
# write grt/rcx rc file for correlateRC.py
13-
write_rc_csv $::env(RESULTS_DIR)/6_net_rc.csv
13+
write_nets_rc_csv $::env(RESULTS_DIR)/6_net_rc.csv

0 commit comments

Comments
 (0)