148 lines
4.3 KiB
Tcl
148 lines
4.3 KiB
Tcl
|
|
|
|||
|
|
set SIM_TYPE func ;
|
|||
|
|
set CASE_NUM 1 ;
|
|||
|
|
set SIM_TIME 100sec ;#as all
|
|||
|
|
set CORNER_TYPE max ;
|
|||
|
|
set COPY_RUN_TEMPLATE no;
|
|||
|
|
|
|||
|
|
#declear a empty list
|
|||
|
|
|
|||
|
|
set args [list];
|
|||
|
|
#put the do command $1-$9 to list,because we can't use the argv,we should construct the "argv" mannully.
|
|||
|
|
for {set i 1} {$i <= $argc} {incr i 1} {
|
|||
|
|
lappend args [set $i];
|
|||
|
|
}
|
|||
|
|
puts "---->parsing the command line....argc=$argc,args=$args*************************"
|
|||
|
|
|
|||
|
|
#get the max index of the list,the "expr" command should be use to calculate out the express
|
|||
|
|
set max_index [expr $argc-1];
|
|||
|
|
|
|||
|
|
#search copy templation option
|
|||
|
|
for {set i 0} {$i < $argc} {incr i 1} {
|
|||
|
|
|
|||
|
|
set para [lindex $args $i]
|
|||
|
|
if {[string equal $para "-c"]} {
|
|||
|
|
set COPY_RUN_TEMPLATE yes
|
|||
|
|
puts "whether to copy run.tcl template=$COPY_RUN_TEMPLATE"
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#search generate instantiate_top.sv opton
|
|||
|
|
for {set i 0} {$i < $argc} {incr i 1} {
|
|||
|
|
|
|||
|
|
set para [lindex $args $i]
|
|||
|
|
if {[string equal $para "-g"]} {
|
|||
|
|
set GEN_INSTANTIATE_TOP yes
|
|||
|
|
puts "force generate instantiate_top.sv and override exist file"
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#search case number
|
|||
|
|
for {set i 0} {$i < $argc} {incr i 1} {
|
|||
|
|
set para [lindex $args $i];
|
|||
|
|
if {[string equal $para "-n"] } {
|
|||
|
|
|
|||
|
|
if {$i < $max_index} {
|
|||
|
|
set num [lindex $args [expr [expr $i+1]]];
|
|||
|
|
if { [string is digit $num] } {
|
|||
|
|
set CASE_NUM [format "%03d" $num];
|
|||
|
|
puts "case number=$CASE_NUM"
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#search simulation time
|
|||
|
|
for {set i 0} {$i < $argc} {incr i 1} {
|
|||
|
|
|
|||
|
|
set para [lindex $args $i]
|
|||
|
|
if {[string equal $para "-t"]} {
|
|||
|
|
if {$i < $max_index} {
|
|||
|
|
set time [lindex $args [expr $i+1]]
|
|||
|
|
if {[regexp {^[0-9]+((n|u|m)s|sec)$} $time]} {
|
|||
|
|
set SIM_TIME $time
|
|||
|
|
puts "simulation time=$SIM_TIME"
|
|||
|
|
} else {
|
|||
|
|
puts "unknow simulation time,set to 1us"
|
|||
|
|
set SIM_TIME 1us
|
|||
|
|
puts "simulation time=$SIM_TIME"
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#search simulation type
|
|||
|
|
for {set i 0} {$i < $argc} {incr i 1} {
|
|||
|
|
|
|||
|
|
set para [lindex $args $i]
|
|||
|
|
if {[string equal $para "-timing"]} {
|
|||
|
|
set SIM_TYPE "timing"
|
|||
|
|
puts "simulation type=$SIM_TYPE"
|
|||
|
|
break;
|
|||
|
|
} elseif {[string equal $para "-func"]} {
|
|||
|
|
set SIM_TYPE "func"
|
|||
|
|
puts "simulation type=$SIM_TYPE"
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
#search corner type
|
|||
|
|
for {set i 0} {$i < $argc} {incr i 1} {
|
|||
|
|
|
|||
|
|
set para [lindex $args $i]
|
|||
|
|
if {[string equal $para "-corner"]} {
|
|||
|
|
if {$i < $max_index } {
|
|||
|
|
set corner [lindex $args [expr $i+1]]
|
|||
|
|
|
|||
|
|
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>run.tcl<63><6C><EFBFBD>ٴε<D9B4><CEB5>ñ<EFBFBD><C3B1>ű<EFBFBD><C5B1><EFBFBD><EFBFBD>µ<EFBFBD>bug ,ɾ<><C9BE>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
regsub -nocase {[0-9]+_} $corner "" corner
|
|||
|
|
|
|||
|
|
switch -glob $corner {
|
|||
|
|
"max" {
|
|||
|
|
set CORNER_TYPE 03_max
|
|||
|
|
}
|
|||
|
|
"min" {
|
|||
|
|
set CORNER_TYPE 01_min
|
|||
|
|
}
|
|||
|
|
"type" {
|
|||
|
|
set CORNER_TYPE 02_type
|
|||
|
|
}
|
|||
|
|
default {
|
|||
|
|
puts "unknow corner type,set to 03_max"
|
|||
|
|
set CORNER_TYPE 03_max
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
puts "corner type=$CORNER_TYPE"
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#search simulation type
|
|||
|
|
for {set i 0} {$i < $argc} {incr i 1} {
|
|||
|
|
|
|||
|
|
set para [lindex $args $i]
|
|||
|
|
if {[string equal $para "-h"]} {
|
|||
|
|
puts "------------------------help------------------------"
|
|||
|
|
puts "-n x:specify case number to be excuted,x stand for case number,default to 0"
|
|||
|
|
puts "-t x:specify simulation time to be excuted,x stand for time,unit may be ns,us,ms,sec,default to 1us"
|
|||
|
|
puts "-timing:specify to excute in timing simulation mode"
|
|||
|
|
puts "-corner x:specify the timing simulation corner,may be max,min,type,default to max"
|
|||
|
|
puts "-c:force to override run.tcl scripts in case directory,be carefull"
|
|||
|
|
puts "-h:to display this help information,it has the highest priority,thus block other options"
|
|||
|
|
puts "----------------------------------------------------"
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
puts "---->parsing the command line complete ***************************"
|