The Flow Description BlockFlow.tcl
This flow creates all jobs for each block (here called unit
)
described in the chipStruct.tcl file, taking into account the
type of the block. The FDL procedure S
is used to define sets of
jobs, which are later used to generate CGI reports.
set PROJECT $env(PROJECT)
set USER [file tail [pwd]]
source $env(EDADEMO)/chipStruct.tcl
if [file exists local/chipStruct.tcl] {
VovMessage "Sourcing local/chipStruct.tcl"
source local/chipStruct.tcl
}
S "CDT:$USER" {
foreach { unit type } $listOfUnits {
E EDADEMO
lappend allUnits $unit
set types($unit) $type
S "CDT:$USER:unit:$unit" {
indir -create $PROJECT/units/$unit {
file mkdir netlists
switch $type {
"rtl" {
indir -create synthesis {
file mkdir results
J vw cdt synth $unit
J clevercopy results/$unit.vg ../netlists
J clevercopy rtl/$unit.v ../../../data/rtl
}
}
}
switch $type {
"rtl" - "softip" {
indir -create place {
J vw cdt place $unit
J vw cdt scanins $unit
}
indir -create route {
J vw cdt route $unit
J vw cdt clocktree $unit
J vw cdt to_gds $unit
J clevercopy ../gds/$unit.gds ../../../data/gds/$unit.gds
}
indir -create verify {
J vw cdt lvs $unit
}
}
"toplevel" {
omitted
}
}
omitted
# All units.
indir -create verify {
J vw cdt extract $unit
J vw cdt sta $unit
J vw cdt drc $unit
J vw cdt erc $unit
}
}
}
}
}
######## Hi-Level Flow Section ########################
H "CDT:$USER:Steps" {
foreach step $listOfImportantSteps {
set B$step [B "$step" SETNAME "CDT:$USER:step:$step"]
}
C $Bsynth $Bplace
C $Bplace $Broute
C $Broute $Bsta
C $Broute [list $Bdrc $Berc]
C $Bdrc $Blvs
C autoplace
}
H "CDT:$USER:units" {
set x 100
set y 100
foreach { unit type } $listOfUnits {
set this [B $unit SETNAME "CDT:$USER:unit:$unit" -xy $x $y]
if { [incr x 100] > 300 } {
incr y 50
set x 100
}
}
}