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.
BlockFlow.tcl: The Detailed
Flow
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
}
}
}
}
}BlockFlow.tcl: High Level Flow
Definition
######## 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
}
}
}