blob: 020de6989d43e5ca3ad8d355c49f5dbfb7761592 [file] [log] [blame] [edit]
def read $::env(CURRENT_DEF)
proc custom_drc_save_report {{cellname ""} {outfile ""}} {
if {$outfile == ""} {set outfile "drc.out"}
set fout [open $outfile w]
set oscale [cif scale out]
# magic::suspendall
if {$cellname == ""} {
select top cell
set cellname [cellname list self]
set origname ""
} else {
set origname [cellname list self]
puts stdout "loading $cellname\n"
flush stdout
load $cellname
select top cell
}
drc check
set count [drc list count]
puts $fout "$cellname count: $count"
puts $fout "----------------------------------------"
set drcresult [drc listall why]
foreach {errtype coordlist} $drcresult {
puts $fout $errtype
puts $fout "----------------------------------------"
foreach coord $coordlist {
set bllx [expr {$oscale * [lindex $coord 0]}]
set blly [expr {$oscale * [lindex $coord 1]}]
set burx [expr {$oscale * [lindex $coord 2]}]
set bury [expr {$oscale * [lindex $coord 3]}]
set coords [format " %.3f %.3f %.3f %.3f" $bllx $blly $burx $bury]
puts $fout "$coords"
}
puts $fout "----------------------------------------"
}
puts $fout ""
if {$origname != ""} {
load $origname
}
# magic::resumeall
close $fout
puts stdout "done with $outfile\n"
flush stdout
}
custom_drc_save_report $::env(DESIGN_NAME) $::env(magic_log_file_tag).drc