Functional verification

Functional verification

Functional verification, in electronic design automation, is the task of verifying that the logic design conforms to specification. In everyday terms, functional verification attempts to answer the question "Does this proposed design do what is intended?" This is a complex task, and takes the majority of time and effort in most large electronic system design projects.

Functional verification is very difficult - it is equivalent to program verification, and is NP-hard or even worse - and no solution has been found that works well in all cases. However, it can be attacked by many methods. None of them are perfect, but each can be helpful in certain circumstances:
*Logic simulation simulates the logic before it is built.
*Simulation acceleration applies special purpose hardware to the logic simulation problem.
*Emulation builds a version of system using programmable logic. This is expensive, and still much slower than the real hardware, but orders of magnitude faster than simulation. It can be used, for example, to boot the operating system on a processor.
*Formal verification attempts to prove mathematically that certain requirements (also expressed formally) are met, or that certain undesired behaviors (such as deadlock) cannot occur.
*HDL-specific versions of lint, and other heuristics, are used to find common problems.

Simulation based verification (also called 'dynamic verification') is widely used to "simulate" the design, since this method scales up very easily. Stimulus is provided to exercise each line in the HDL code. A test-bench is built to functionally verify the design by providing meaningful scenarios to check that given certain input, the design performs to specification.

A simulation environment is typically composed of several types of components:
*The generator (or irritator) generates input vectors. Modern generators generate random, biased, and valid stimuli. The randomness is important to achieve a high distribution over the huge space of the available input stimuli. To this end, users of these generators intentionally under-specify the requirements for the generated tests. It is the role of the generator to randomly fill this gap. This mechanism allows the generator to create inputs that reveal bugs not being searched for directly by the user. Generators also bias the stimuli toward design corner cases to further stress the logic. Biasing and randomness serve different goals and there are tradeoffs between them, hence different generators have a different mix of these characteristics. Since the input for the design must be valid (legal) and many targets (such as biasing) should be maintained, many generators use the Constraint satisfaction problem (CSP) technique to solve the complex testing requirements. The legality of the design inputs and the biasing arsenal are modeled. The model-based generators use this model to produce the correct stimuli for the target design.
*The drivers translate the stimuli produced by the generator into the actual inputs for the design under verification. Generators create inputs at a high level of abstraction, namely, as transactions or assembly language. The drivers convert this input into actual design inputs as defined in the specification of the design's interface.
*The simulator produces the outputs of the design, based on the design’s current state (the state of the flip-flops) and the injected inputs. The simulator has a description of the design net-list. This description is created by synthesizing the HDL to a low gate level net-list.
*The monitor converts the state of the design and its outputs to a transaction abstraction level so it can be stored in a 'score-boards' database to be checked later on.
*The checker validates that the contents of the 'score-boards' are legal. There are cases where the generator creates expected results, in addition to the inputs. In these cases, the checker must validate that the actual results match the expected ones.
*The arbitration manager manages all the above components together.

Different coverage metrics are defined to assess that the design has been adequately exercised. These include functional coverage (has every functionality of the design been exercised?), statement coverage (has each line of HDL been exercised?), and branch coverage (has each direction of every branch been exercised?).

See also

* Cleanroom Software Engineering


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Verification — The word Verify And Verification can refer to:* Verification and Validation: In engineering or a quality management system, verification is the act of reviewing, inspecting, testing, etc. to establish and document that a product, service, or… …   Wikipedia

  • Verification and Validation — Verification Validation is the process of checking that a product, service, or system meets specifications and that it fulfils its intended purpose. These are critical components of a quality management system such as ISO… …   Wikipedia

  • Verification and validation — IV V redirects here. For NASA s IV V Facility, see Independent Verification and Validation Facility. Verification and validation is the process of checking that a product, service, or system meets specifications and that it fulfills its intended… …   Wikipedia

  • Verification and Validation (software) — In software project management, software testing, and software engineering, Verification and Validation (V V) is the process of checking that a software system meets specifications and that it fulfils its intended purpose. It is normally part of… …   Wikipedia

  • Functional specification — A functional specification (also, functional spec , specs , functional specifications document (FSD) , or Program specification ) in software development, is the set of documentation that describes the requested behavior of an engineering system …   Wikipedia

  • Breker Verification Systems — Articleissues advert = September 2008 notable = September 2008 orphan = April 2008 refimprove = September 2008 Overview Breker Verification Systems is a venture backed, privately held EDA company supplying graph based functional test synthesis… …   Wikipedia

  • E (verification language) — e is a verification language used in Specman Elite to allow high level verification of RTL designs and to analyze functional coverage. It started as the property of Cadence, but as of 2006, became standardized as IEEE 1647.e attempts to provide a …   Wikipedia

  • Asic verification — is today’s most challenging problem for ASIC designers. As chip sizes have skyrocketed and use of IP has increased, the need to fully verify the design functionality has become critical. However, verification is a function of both design size and …   Wikipedia

  • Reference Verification Methodology — The Reference Verification Methodology (RVM) is a complete set of metrics and methods for performing Functional verification of complex designs such as for Application specific integrated circuits or other semiconductor devices. It was published… …   Wikipedia

  • Software verification — is a broad and complex discipline of software engineering whose goal is to assure that software fully satisfies all the expected requirements.There are two fundamental approaches to verification: * Dynamic verification , also known as Test or… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”