Build Flows with vovbuild

To begin, you need to get a Flow Definition File. You have the following options:
  • Get the flow definition from the Flow Library.
  • Create the flow definition yourself.

In the following example, you create the flow yourself. The default name for the flow definition file is Flow.tcl. If you use another name, use the option -f in vovbuild to select the desired flow description.

% vovbuild
% vovbuild -f Flow.tcl
% vovbuild -f MyBigFlow.tcl

With vovbuild you can build large flows with thousands of jobs in a few seconds and then you can execute them efficiently using FlowTracer retracing capabilities.

The Flow Definition File is a Tcl script that describes the structure of the flow by using a Flow Description Language (FDL) consisting of some extension to Tcl.

A simple Flow.tcl file may look like the following:
N "Copy"
T vw cp aa bb
I aa
O bb

The first line calls the procedure E which sets the environment to "BASE". This means that any job to be declared from now on will be executed in the "BASE" environment.

The second line call procedure N to assign a name to the subsequent job. In this case the name is "Copy". If the name is not specified, or if the name is the empty string "", then the system will use the tool name (in this case "cp") as the job name.

The next line calls procedure T to add a tool invocation with command line "vw cp aa bb". This job is to be run in the current working directory, using the environment "BASE".

The next two lines call the procedures I" and O to declare the expected inputs and outputs for the job.

The Flow.tcl script is then processed by vovbuild.
% vovbuild

vovbuild does not execute the commands. Instead, it builds or updates the design trace by adding all jobs defined in the Tcl script.

After the trace is built, you can request a parallel execution with the command vsr.

All extra arguments to vovbuild are passed to the Tcl script and are available as the global array argv.

Tracing the Execution of vovbuild

The tool vovbuild itself is an instrumented tool. This means that you will be able to trace the invocation of vovbuild itself and to have FlowTracer monitor the changes in the Flow.tcl file as well. The input list of a vovbuild job includes Flow.tcl and possibly many other Tcl scripts. These scripts are now an important part of your design, and it is important to trace the changes to these files. By default, tracing is disabled in vovbuild, but you can enable it with the option -T:
% vovbuild -T

In this way, if Flow.tcl changes, FlowTracer knows that you must rerun vovbuild.

If you have tens or hundreds of Flow.tcl files in as many directories, you will end up with many invocations of vovbuild -T, all indistinguishable from one another in many of the FlowTracer messages. The option -l allows you to add arbitrary descriptive test to the command line; its use purely a matter of style and clarity and is recommended to avoid confusion. Example:
% vovbuild -T -l "Label to distinguish this job from other jobs"