SFLOW provides a generic environment for executing simulation based verification methodologies, reusable across projects. SFLOW is based on our year-long expertise and provides an industry-proven, reusable and
highly configurable environment.
Pre-silicon hardware verification is typically carried out by simulation based verification methodologies, such as directed testing, assertion based verification and constrained random verification (CRV).The corner stone in simulation based methodologies is the verification environment. The environment needs to support many different features. These features include, but are not limited to:
Normally, the verification environment provides the ability to define and control many testcases, complete
- Configuration of options of the tools which are used for the verification
- Configuration of tests
- Compiling simulators
- Gathering results and coverage
- Running tests and complete regressions
- Producing reports in various formats: text, HTML, XML etc.
- Assisting the debug situation
regressions, utilization of load share facility handling (SGE/LSF), HTML reporting, etc. which is evident when
using simulation based verification methodologies such as CRV.
These verification environment features are usually hard coded to the specific project or subproject. A more
generic implementation of such an environment would be preferred, since it could be used across many projects over and over again.
This is where SFLOW comes into play!
Reuse & Configurability Verification environments are typically implemented by a selection of hard coded scripts and make files.
Furthermore, such verification environments are typically built from scratch for each project, since each project have different requirements for the verification environment. The result is many lines of non-portable
code which needs to be rewritten when ported to the next project if reused at all.
Thus, reuse of the verification environment is very hard.
The SFLOW targets this by implementing a generic verification environment which is completely
configurable. Thus, it is not necessary to rewrite/alter/modify the core of the verification environment to reuse it, add new options, tools, tests, etc. This is all configurable through configuration files.
The SFLOW reaches complete configurability through a series of core features:
- Runs on virtually any platform – Implemented in Perl.
- Complete configurability. All functionality in SFLOW is configurable, making it highly reusable.
- Each configurable command can access all information within the SFLOW though several APIs.
- Simple usage with single script strategy (SSS) as SFLOW is implemented by a single Perl script.
- Simple maintenance and configuration due to SSS combined with complete configurability.
- Cross project flexibility. SFLOW can handle a set of configuration files for each project/testbench.
Regression Management with Hierarchical Execution
While verification engineers are developing tests, they have two features which they would like the verification environment to support:
- Easy execution of a single test
- Easy execution of complete regressions
SFLOW directly provides the verification engineer with the ability to run a single or multiple tests in many different configurations. Additionally, the verification engineer would like to define a set of configurations in which a test should be run as a part of a regression.
SFLOW provides the ability to define individual configurations for each test. SFLOW provides a mechanism to hierarchically stack regressions and merge the results from each sub regression. Thus, it is capable of running complete regressions, i.e. running multiple testbenches and generate an overall reports for the complete regression.
Tool Layer Support
The verification environment needs to utilize different tools for simulation and other tasks, such as using a
computer farm with many hosts.
Normally, this is exposed to the verification engineer, who needs to be an expert with every tool. This consumes some of the verification engineers time, which could be used on the verification instead.
SFLOW increases the verification engineer’s productivity by providing tool layers for each tool used by SFLOW. A tool layer for a specific tool (e.g. a HDL simulator) hides all the details and provides a simple user interface for the verification engineer, making him/her able to use the tool without being an expert on the tool.
Currently SFLOW support two types of tool layers:
- HDLSIM: HDL simulators
- DCS: Distributed Computing Software
SFLOW comes with prepackaged tool layers for all of the commercial simulators and SGE. User defined tool layers can also be added.
Computer Farm Integration
Simulation based verification methodologies demand that the verification environment is able to run many tests in parallel. Especially CRV, since it utilizes randomness, where a test can be turned into a new test, simply by changing the seed. Thus, complete regressions can contain many tests (typically 1.000 to 100.000) which need to be executed.
This requirement is usually targeted with a compute farm with many execution hosts and compute farm management software.
SFLOW has built-in support for compute farm software through the DCS tool layers. Thus, it is capable of
utilizing a compute farm setup with SGE right out of the box.
Additionally, SFLOW supports parallel execution on the local host. If DCS is not available, but the flow is running on a server with multiple cores, then SFLOW is able to
run a fixed number of tests in parallel.
SFLOW is in use at multiple companies where 30+ verification engineers are running complete regressions For more information related to the Verification flow and related services, please contact us with your request.
with various commercial simulators on large compute farms with >250 executions hosts, producing more than 60GB data per regression.