VCS

The tool vcs by Synopsys is used to compile Verilog files into an executable typically called simv. It internally uses a makefile to efficiently update the output. It is therefore possible for the output to remain unchanged.

License management

Use the +vcs+lic+wait option to enable vendor queueing.

Preemption

The simv binary use VCSRuntime_Net. This resource can be preempted with the LMREMOVE method.
## Add this to your vovpreemptd/config.tcl  file
VovPreemptMethod License:VCSRuntime_Net      LMREMOVE
VovPreemptMethod License:VT_TestbenchRuntime LMREMOVE
The advertised method of using TSTP does not seem to work all the time, as reported on Jan 15, 2013. There is a simple way to test this.
  1. Launch a SIMV job
  2. Go to the machine on which the job is running
  3. Identify the PID of the simv process
  4. kill -TSTP PID_OF_SIMV
  5. If the simv process stops and the license has been released (check with lmstat), then your SIMV can be preempted with SIGTSTP, which would be more effective than LMREMOVE. Otherwise, stay with LMREMOVE.

Encapsulation

Although the vrt wrapper is reported to work well with vcs we recommend you also have a simple capsule to take care of the complex rules that affect the existence and timestamp of the output simv.
# This is an example capsule for vcs
# Put this in file $VOVDIR/local/capsules/vov_vcs.tcl

while { $argv != {} } {
   set arg [shift]
   switch -- $arg {
     "-f" { VovInput                    [shift] }
     "-o" { VovOutput -ignore_timestamp [shift] }
     "-l" { VovOutput                   [shift] }
     default {}
   } 
}