This directory contains pass_requirement files used to evaluate whether VTR
'passes' compared to a set of reference golden results (e.g. for regression
testing). They are used primarily by the parse_vtr_task script.

The .txt files in this directory are suitable for use with the VTR 'Task'
infrastructure (i.e. as pass_requirement_file in the task's config.txt).

Note that to avoid duplication many common pass requirements have been
factored out into sub-files under the 'common' and 'timing' directories.
They are then included into the relveant files using '%include' directives.
