Configure vovmake

The behavior of vovmake can be configured with a file called vovmake.config.tcl, which is also useful to augment the information already contained in the Makefile, for example by adding new dependencies or resource constraints.

The name of the configuration file is vovmake.config.tcl but this value may be overridden with the environment variable VOVMAKE_CONFIG, which can be used to specify a full path.

The search path for the file contains the following directories:
  • ./ (working directory of vovmake)
  • ../ (parent directory of vovmake)
  • PROJECT.swd/ (project directory)
  • $VOVDIR/local
The procedures that belong in a vovmake.config.tcl file are the following:
  • vovmakeTarget
  • vovmakeAddInputForTarget
  • vovmakeAddOutputForTarget
  • vovmakeSetWrapperForTool
  • vovmakeConfig

In the following, fragments of Makefiles are shown in this font while fragments of vovmake.config.tcl will be shown in this different font.

Procedure vovmakeTarget

The procedure vovmakeTarget defines additional information for a specific target. For example, it can define which licenses are required to update the target. The target name has to be the same as the one specified in the Makefile, or a glob expression.

chip.plan: chip.netlist
runPlanner chip

# The floorplanner requires a special license and 5GB of RAM.
vovmakeTarget chip.plan -res "License:floorplanner RAM/5000" 

# Also specify a job name and an expected duration.
vovmakeTarget *.plan -name "Planner" -xdur 3h

Some targets can be skipped, because they do not map into actionable scripts:

all: place route

# There is no need to add the 'all' target to the flow.
vovmakeTarget all -skip


vovmakeTarget *.o -name Compile -res "RAM/20"

Procedures vovmakeAddInputForTarget and vovmakeAddOutputForTarget

The procedures vovmakeAddInputForTarget and vovmakeAddOutputForTarget can be used to declare more I/O dependencies for a target.

chip.plan: chip.netlist
runPlanner chip

# The floorplanner generates also a report file
vovmakeAddOutputForTarget chip.plan chip.rpt chip.log

# Also floorplanner uses a 'planner.constraints' file as input.
vovmakeAddInputForTarget chip.plan planner.constraints

Procedure vovmakeSetWrapperForTool

This procedure takes two arguments, a tool and a wrapper. By default, vovmake uses the default wrapper for all jobs that have simple (one-line) makefile rules and the wrapper "vov" for all jobs that have complex rules.

# Simple example of invocation.
vovmakeSetWrapperForTool cp vw

Procedure vovmakeConfig

The procedure vovmakeConfig changes the behavior of vovmake. It takes two arguments, a name and a value.
# Example of each meaningful invocation of vovmakeConfig
vovmakeConfig strictTracing   1
vovmakeConfig doRun           0
vovmakeConfig setname         "abc"
vovmakeConfig wrapper,default "vw"
vovmakeConfig res,default     "RAM/200"
vovmakeConfig env,default     "SNAPSHOT"
vovmakeConfig wrapper,tool,cp "vrt"; # This can also be called vovmakeSetWrapperForTool