EDA Flows

In this section we show some typical EDA flows. We start with a simulation flow, where we want to execute one job for each stimulus file in a directory. We use glob to find all stimuli, that is, the files with suffix ".stim", then we create a subdirectory for each file and we define a job to run in such directory.

In this example we introduce two FDL procedures: E and R. The procedure E defines the environment in which the simulation jobs mut be executed. In this case, the environment is the combination of the BASE environment, which is part of any normal FlowTracer installation, and the SPICE environment, which is presumably an environment that has to be setup for each site, since the location of the simulation software varies from site to site.

The procedure R defines the resources required by the subsequent jobs in the flow. In this case, we declare that each job requires one license of the tool 'spice' (represented by the resource 'License:spice') and at least 250MB of RAM.

A simulation flow:
E "BASE+SPICE"
R "License:spice RAM/250"
foreach stimulusFile [glob *.stim] {
    set root [file root $stimulusFile]
    indir -create $root {
        J vw simulate ../$stimulusFile -o $root.log
    }
}

The back-end flows for placement and routing of blocks tend to require many sequential steps, each one requiring different resources, such as licenses and RAM. While many organizations use the same tool suites, such as Cadence's Silicon Ensemble, it is rare to see the core tools such as qp and wroute called directly. Instead, each organization has its own wrapper script to define how those tools are to be invoked. In our example, the wrapper script is called pnr and is presumably accessible from the environment called EDA.

A Place & Route flow
set block [shift]
E "BASE+EDA+CADENCE"

R "License:qp RAM/250"
J vw pnr place $block
J vw pnr scanins $block

R "License:wroute RAM/2000"
J vw pnr route $block
J vw pnr clocktree $block

R ""
J vw pnr to_gds $block