blob: 502622d261d570915c097f5f231f75de957169ce [file] [log] [blame]
###############################################################################
# CADENCE COPYRIGHT NOTICE
# © 2008-2013 Cadence Design Systems, Inc. All rights reserved.
#------------------------------------------------------------------------------
#
# This Foundation Flow is provided as an example of how to perform specialized
# tasks.
#
# This work may not be copied, re-published, uploaded, or distributed in any way,
# in any medium, whether in whole or in part, without prior written permission
# from Cadence. Notwithstanding any restrictions herein, subject to compliance
# with the terms and conditions of the Cadence software license agreement under
# which this material was provided, this material may be copied and internally
# distributed solely for internal purposes for use with Cadence tools.
#
# This work is Cadence intellectual property and may under no circumstances be
# given to third parties, neither in original nor in modified versions, without
# explicit written permission from Cadence. The information contained herein is
# the proprietary and confidential information of Cadence or its licensors, and
# is supplied subject to, and may be used only by Cadence's current customers
# in accordance with, a previously executed license agreement between Cadence
# and its customer.
#
#------------------------------------------------------------------------------
# THIS MATERIAL IS PROVIDED BY CADENCE "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL CADENCE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL
# OR CONSEQUENTIAL DAMAGES HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS MATERIAL, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
###############################################################################
proc gen_options {file} {
global names
global notes
global default
global type
global category
set names [list]
set ip [open $file]
while {[gets $ip temp]>=0} {
if {[regexp "^#" $temp]} { continue }
set line [split $temp "\^"]
puts $line
set var [lindex $line 0]
lappend names $var
set category($var) [lindex $line 1]
set type($var) [lindex $line 2]
set default($var) [lindex $line 3]
set notes($var) [lindex $line 4]
}
close $ip
puts "[llength $names] variables processed"
set op [open options.tcl w]
foreach var $names {
switch -glob $var {
"library_sets" {
puts $op "set vars($var) \[list library_set\]"
}
"<library_set*" {
regsub "<" $var "" temp
regsub ">" $temp "" svar
puts $op "set vars($svar) $notes($var)"
}
"rc_corners" {
puts $op "set vars($var) \[list rc_corner\]"
}
"<rc_corner*" {
regsub "<" $var "" temp
regsub ">" $temp "" svar
switch -glob [lindex [split $svar ","] 1] {
"cap_table" {
puts $op "set vars($svar) $notes($var)"
}
"qx_tech_file" {
puts $op "set vars($svar) $notes($var)"
}
"default" {
if {[regexp "post_route" $svar]} {
puts $op "set vars($svar) {1.00 1.00 1.00}"
} else {
puts $op "set vars($svar) 1.00"
}
}
}
}
"delay_corners" {
puts $op "set vars($var) \[list delay_corner\]"
}
"<delay_corner*" {
regsub "<" $var "" temp
regsub ">" $temp "" var
switch -glob [lindex [split $var ","] 1] {
"rc_corner" {
puts $op "set vars($var) {rc_corner}"
}
"library_set" {
puts $op "set vars($var) {library_set}"
}
"default" {
puts $op "set vars($var) 1.00"
}
}
}
"constraint_modes" {
puts $op "set vars($var) \[list constraint_mode\]"
}
"<constraint_mode*" {
regsub "<" $var "" temp
regsub ">" $temp "" var
switch -glob [lindex [split $var ","] 1] {
"pre_cts_sdc" {
puts $op "set vars($var) {sdc_file}"
}
"post_cts_sdc" {
puts $op "set vars($var) {sdc_file}"
}
}
}
"*setup*view*" {
puts $op "set vars($var) {setup_view}"
puts $op "set vars(setup_view,delay_corner) {delay_corner}"
puts $op "set vars(setup_view,constraint_mode) {constraint_mode}"
}
"*hold*view*" {
puts $op "set vars($var) {hold_view}"
puts $op "set vars(hold_view,delay_corner) {delay_corner}"
puts $op "set vars(hold_view,constraint_mode) {constraint_mode}"
}
"analysis_views" {
puts $op "set vars(analysis_views) {setup_view hold_view}"
}
default {
if {$type($var) == "enum"} {
puts $op "set vars($var) $notes($var)"
} elseif {$type($var) == "list"} {
regsub "<" $notes($var) "" temp
regsub ">" $temp "" notes($var)
regsub "{" $notes($var) "" temp
regsub "}" $temp "" notes($var)
puts $op "set vars($var) {list of $notes($var)}"
} elseif {$category($var) == "plug-in"} {
puts $op "set vars($var) $notes($var)"
} elseif {$default($var) != "UNDEFINED"} {
puts $op "set vars($var) $default($var)"
} else {
puts $op "set vars($var) {$type($var)}"
}
}
}
}
close $op
}
gen_options $argv