| # Copyright 2020 Efabless Corporation |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| if { [info exists ::env(TECH)] } { |
| tech load $::env(TECH) |
| } |
| |
| gds read $::env(GDS_INPUT) |
| 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 "\[INFO\]: 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 " %.3fum %.3fum %.3fum %.3fum" $bllx $blly $burx $bury] |
| puts $fout "$coords" |
| } |
| puts $fout "----------------------------------------" |
| } |
| puts $fout "" |
| |
| if {$origname != ""} { |
| load $origname |
| } |
| |
| # magic::resumeall |
| |
| close $fout |
| puts "\[INFO\]: DONE with $outfile\n" |
| #flush stdout |
| } |
| |
| custom_drc_save_report $::env(DESIGN_NAME) $::env(REPORT_OUTPUT) |