blob: f4c1dc7a4877b5af3d597b236efd537f051eb5cd [file] [log] [blame]
#!/usr/bin/tclsh8.5
# Copyright (c) Efabless Corporation. All rights reserved.
# See LICENSE file in the project root for full license information.
set ::env(OPENLANE_ROOT) [file dirname [file normalize [info script]]]
source $::env(OPENLANE_ROOT)/scripts/utils/utils.tcl
proc run_non_interactive_mode {args} {
set ::env(OPENLANE_ROOT) [file dirname [file normalize [info script]]]
source $::env(OPENLANE_ROOT)/scripts/tcl_commands/all.tcl
if {[prep {*}$args] < 0} {
puts "prep failed"
exit
}
run_synthesis
run_floorplan
run_placement
#run_cts
gen_pdn
run_routing
run_magic
run_magic_drc
}
proc run_interactive_mode {args} {
set ::env(TCLLIBPATH) $::env(OPENLANE_ROOT)/scripts/tcl_commands/
exec tclsh |& tee /dev/tty
}
proc run_file {args} {
set ::env(TCLLIBPATH) $::env(OPENLANE_ROOT)/scripts/tcl_commands/
exec tclsh $args |& tee /dev/tty
}
set options {{-design optional} \
{-tag optional} \
{-config optional} \
{-file optional} \
}
set flags {-init_design_config -disable_output -interactive}
set argv_copy $argv
parse_key_args "flow.tcl" argv arg_values $options flags_map $flags
if { [info exists flags_map(-interactive)] } {
if { [info exists arg_values(-file)] } {
run_file $arg_values(-file)
} else {
run_interactive_mode "$argv_copy"
}
} else {
run_non_interactive_mode {*}$argv_copy
}