1. Trang chủ
  2. » Công Nghệ Thông Tin

Standardized Functional Verification- P6 pdf

10 261 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Standardized Functional Verification
Trường học Standardized Functional Verification
Thể loại Bài luận
Định dạng
Số trang 10
Dung lượng 77,76 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Relations among variables for a target of verification Choose values for these variables: To establish: Internal connectivity Instance External connectivity Context Power, clocking, and

Trang 1

<’

struct gen_crc {

crc: int;

crc = compute_crc(data);

keep impose_error == TRUE => crc == crc+1;

// Adding 1 to computed value yields a crc error }

‘>

2.13 Generating Excitement

Choosing the values of the external conditional variables and the values of

stimulus variables determines the excitation of an instance within its

con-text

Pseudo-random excitation is currently the province of commercially available pseudo-random test generators

2.14 Special Cases

The foregoing categories of variables (connectivity, activation, conditions, and stimuli and response) form the basis for pseudo-randomly exercising the target However, certain aspects of a target’s functionality may not be readily exercised in a pseudo-random manner, but instead require special treatment

These are best defined as special cases, and are often exercised with

deterministic tests, or with deterministic test sequences within a pseudo-random sequence

Most special cases will be associated with stimuli or responses, but there may also be other things to verify that just don’t seem to fit neatly into any subset This should not impede progress in interpreting the design specifi-cations – just write them down as for later classification Eventually, with time and increasing familiarity with the design, special cases in this latter category will be recast as variables of suitable type with their respective ranges Treating them as special cases early in the project is a practical convenience that enables progress in spite of a few “loose ends”

Interpreting functionality related to reset often accumulates a number of special cases For example, checking the state of the target immediately af-ter de-assertion of reset (whether hard reset or soft reset) is more readily accomplished with a deterministic test and merits description as one or

Trang 2

36 Chapter 2 – Analytical Foundation

more special cases Similarly, checking for state preservation upon receiv-ing a soft reset constitutes another batch of special cases On the other hand, these are better regarded as variables of response whose values are dependent on the type of reset

If indirect conditions are defined for a target, it is important that the dy-namic transition from one value to another during the application of

stim-uli under given conditions be recorded as special cases to be exercised and observed

Other external activity such as the connection or disconnection of a ca-ble, entering or leaving power-save states, and entering or leaving test modes (morphing the target) can also be recorded as special cases during early stages of a project

Each of the special cases discussed so far fall into the category

fre-quently referred to as scenarios As will be seen later, these scenarios

ac-tually correspond to transitions among values of standard variables, but for the time being they will simply remain on the list as special cases

The second category of special cases lists properties 5 of the target

These describe higher-level (or transcendental) behaviors of the target that

are usually not verifiable via CRV, such as the performance (in MIPS) of a processor Verifying performance is likely to need additional testing above and beyond CRV, which tends to focuses on correctness and completeness rather than speediness Properties often encompass behavior of multiple clock-domains and are often expressed with inexact requirements

Passing a compliance test (such as for USB or PCI-Express) is also a property of the target.6 Other properties may be based on aesthetic evalua-tions, such as the quality of an image encoded and decoded by the target,

or the sound fidelity produced by the target Cybernetic properties such as responsiveness to human interaction (in controlling a commercial aircraft, for example) would be listed here as well

5 Note that the term properties is also used in the context of model checking where

a given property of the RTL is to be checked Properties listed as special cases are not based on RTL, but are based only on the requirements stated in the de-sign specifications

6 Passing a compliance test does not mean that the risk of a functional bug is zero Examples abound of products (including IP) that pass compliance tests but still have bugs

Trang 3

2.14.1 Example – Special Case

A classic example of a property as a special case comes to us from the specifications for Ethernet (IEEE 802.3) that states requirements on the distribution of the back-off slot times

Ethernet uses a collision-detect multiple-access algorithm on a shared medium, the wire carrying the electrical signals When two (or more) de-vices happen to drive the wire simultaneously, both (or all) dede-vices must stop driving the wire and wait some specified period of time until attempt-ing to drive the wire again The time each must wait is referred to as the back-off slot time, where a slot corresponds to a specific number of bit times

Testing for this requirement is achieved within a network of compliant, commercially available devices The back-off slot times used by the device being tested are recorded and then tested for a probabilistic uniform distri-bution

Verifying this particular requirement doesn’t lend itself to CRV testing and isn’t readily verified in simulation Similarly, functional requirements related to liveness, fairness, or performance of a target may require treat-ment as a special case outside the context of CRV

2.15 Summary

The taxonomy defined in this chapter provides a consistent and compre-hensive nomenclature for all aspects of functional verification regardless

of the size or complexity of the digital system to be verified The entire function space can be characterized completely and exhaustively by a well-defined set of standard variables using the linear algebra for digital systems The premise stated at the beginning of this chapter bears repeat-ing here:

From the standpoint of functional verification, the

func-tionality of a digital system, including both the target of

verification as well as its surrounding environment, is

characterized completely by the variability inherent in the

definition of the system

Different teams will interpret specification documents to yield different standard variables, surely differing in name but also differing in definition,

Trang 4

38 Chapter 2 – Analytical Foundation

but the sets of variables will be equivalent, each forming orthogonal basis sets Any non-equivalence indicates one or “bugs” in a document because

it is not sufficiently clear or ambiguous in its interpretation

Table 2.1 summarizes this “loosely orthogonal system of basis variables.”

Table 2.1 Relations among variables for a target of verification

Choose values for these variables: To establish:

Internal connectivity Instance

External connectivity Context

Power, clocking, and reset Activation

Morph-related conditions and stimuli Morph

Internal conditions Operation

External conditions

Stimuli

The variables discussed in this chapter already exist in testbenches around the world However, they simply have not been partitioned into the standard framework And, without this standard partitioning, it is ex-tremely difficult to compare different verification projects or to use these projects to assess risk for future projects

With this set of standard variables it is now possible to determine the size of the functional space in terms of its points and arcs and, therefore, determine what is required to achieve functional closure, that is, exhaus-tive functional coverage This will be the topic of the next chapter

References

Bailey B, Martin G, and Anderson T (ed.) (2005) Taxonomies for the Develop-ment and Verification of Digital Systems Springer

Lachish O, Marcus E, Ur S, Ziv A (2002) Hole Analysis for Functional Coverage

Data, Proceedings of the 39th conference on Design Automation, ACM Press

Verisity Design Inc (2002) e Language Reference Manual www.ieee1647.org Verisity Design Inc (2005) Spec-Based Verification, whitepaper

Trang 5

The previous chapter described a method of interpretation of natural-language specification documents into a standard set of variables and their ranges that is applicable to all possible digital systems Each unique com-bination of values of these variables determines a single function point within the functional space These function points determine the functional space in a mathematically precise manner, allowing us to determine the size of this space and, consequently, determine what it means to achieve functional closure Value transition graphs provide a technique for visual-izing this space in a useful way

3.1 Functional Closure

Much recent discussion in the industry has focused on “functional closure” but without providing a solid, substantive definition for this highly desir-able outcome Intuition tells us that functional closure must exist because, after all, the functionality can be expressed with a finite number of transis-tors What does it really mean to achieve functional closure?

This term is borrowed from timing domain analysis where closure is a genuine outcome To reach timing closure is to adjust the placement of transistors and the routing of interconnecting wires and polysilicon such that each and every path propagates signals within a predetermined inter-val of time so that setup times at destinations are satisfied Software tools

make exhaustive lists of signal paths and then determine whether all paths

have no negative slack When a signal has positive slack, it means that the signal reaches its destination with time to spare, whether a few picosec-onds or many nanosecpicosec-onds A signal with negative slack reaches its desti-nation too late When all paths have no negative slack, nothing arrives late Some texts refer to “functional closure” or “coverage closure,” but while also claiming that the size of the space over which this “closure” is reached cannot be determined This is not correct, as we will see in the analysis in this chapter

A survey of current literature finds many technical papers and articles that tell us, “A good test plan should list all the interesting test cases to

Trang 6

40 Chapter 3 – Exploring Functional Space

verify the design.” However, there is no objective way to separate “inter-esting” from “uninter“inter-esting” test cases If so, there would be a software program that could accept as its input these “test cases” in some yet to be defined form and then decide algorithmically whether it is interesting or uninteresting Clearly, this approach does not seem promising

Similar remarks appear in the current literature regarding coverage, in-forming the reader to “decide on the interesting data fields/registers … im-portant state machines, … interesting interactions between some of the above states or data.” Again, we have no objective way to make these de-cisions regarding interestingness or importance Formal verification (such

as theorem provers of some sort) might some day be able to make such de-cisions

With a complete set of variables and their ranges as described in chapter

2, it is possible to arrive at an understanding of the overall size of the func-tional space of a given target Because these variables imply all of the mechanisms (elements) that use them, they may be said to represent the functional space completely This means that it is now possible to gain a complete characterization of the functional space of the target

3.2 Counting Function Points

The previous chapter explained that each unique combination of values of standard variables determines a single function point within the functional space In other words, a function point is represented by a tuple corre-sponding to the location of a point in some large multi-dimensional space, providing us with the coordinates of the point in this space It is possible to

arrive at an exact count P of these points by considering each category of

standard variable in turn and how it relates to the other categories of vari-ables Analysis begins with connectivity

3.2.1 Variables of Connectivity

Variables of connectivity are separated into two categories, variables of in-ternal connectivity and variables of exin-ternal connectivity Each variable has a finite range of discrete values that are countable This is true because these ranges are present in computer programs (verification software tools)

In many designs the ranges of variables of connectivity are independent

such that every value of some variable of connectivity k A can be associated

with each and every value of some other variable of connectivity k B So, if

Trang 7

for example a design has these two variables of internal connectivity k A and k B, then the number of points determined by only these two variables

is simply the product of the number of values in the range of each variable However, for many designs the range of values of certain variables are dependent upon the values of one or more other variables Some ranges are not simple finite sets of discrete values, but rather must be determined by methodically analyzing dependencies among the variables Consider the specification for a microprocessor that includes an optional cache control-ler capable of handling caches of varying size This defines two variables

of internal topology: CACHE_PRESENT and CACHE_SIZE The range of CACHE_PRESENT is [YES,NO] and the range of CACHE_SIZE is (for our example) [4K,8K,16K] The number of function points is not simply

2 ⋅ 3 = 6 due to the dependency of CACHE_SIZE on CACHE_PRESENT When CACHE_PRESENT is equal to NO, then there is no related value for CACHE_SIZE For that matter, one might argue that the variable CACHE_SIZE does not even exist when CACHE_PRESENT is equal to

NO For notational convenience, we will use the value of ∅ (the null value)

in the tuple when the value of the corresponding variable is undefined

So, in this example there are actually only 4 function points whose co-ordinates are:

• (NO,∅),

• (YES,4K),

• (YES,8K), and

• (YES,16K)

One further example illustrates how the count of function points grows quickly even for a design with relatively few variables of connectivity

Consider a simple design with 3 variables of internal connectivity (k i1 , k i2,

and k i3 ) and 2 variables of external connectivity (k e1 and k e2) Assume that all 5 variables are mutually independent

Let’s examine first how many different instances of the target can be

built Let k i1 have 2 values in its range, let k i2 have 3 values in its range,

and let k i3 have 4 values in its range Because all 3 variables are mutually independent, there are at most 2 ⋅ 3 ⋅ 4 = 24 different instances that can be built

Now consider how many different external contexts can surround each

of these 24 instances Let k e1 have 5 values in its range and let k e2 have 6 values in its range Again, because the variables are independent, there are

5 ⋅ 6 = 30 possible different contexts

Trang 8

42 Chapter 3 – Exploring Functional Space

Combining our 24 possible instances with our 30 possible contexts, we find that the subspace of connectivity contains 24 ⋅ 30 = 720 distinct func-tion points in our simple example In other words, it is possible to build

720 distinctly different systems Now let’s consider the general case

Consider the set X containing all of the values from the range of a

vari-able of connectivity (or any other category of varivari-able, for that matter) and also the null value ∅ The zero norm of X, denoted X , is the number of

non-zero elements of X This zero norm is also known as the Hamming weight of X For the purposes of analyzing functional spaces, X is

de-fined as the number of non-null elements of X

Assume that there are M different variables in k i (variables of internal

connectivity) and N different variables in k e (variables of external

connec-tivity) To arrive at the maximum number of function points P k in the space of connectivity, we count the number of values in the range of each variable and then take the product of all of these counts Mathematically this is stated as:

m =1

M

∏ and

n =1

N

(3.1)

Then, the number of function points P k in the subspace of connectivity

of our design is at most the product of these two products:

Pk ≤ Pk i ⋅ Pk e. (3.2)

Any dependencies between ranges of variables will reduce the overall

number of possible instance-context pairs, so P k may usually be less than this upper bound To illustrate how these dependencies reduce the number

of function points, consider the first example in previous chapter that de-scribed the standard variables of external connectivity

In that example we had a simple central bus on which 3 different types

of agent could reside: from 1 to 8 processors, from 1 to 4 memory control-lers, and from 1 to 14 I/O controllers for a total of 16 agents The simple product of the counts of values in the ranges of the respective variables

Trang 9

yields a total of 448 function points (448 = 8 ⋅ 4 ⋅ 14) However, this count includes systems that violate the no-more-than-16-agents requirement Consider a system with one processor and one memory controller This particular system can include any of 1 to 14 I/O controllers for a total of 14 distinct contexts A system with one processor and two memory controllers can include any of 1 to 13 I/O controllers for a total of 13 distinct systems

Of course, it’s unlikely that actual systems corresponding to each and every one of these systems would be interesting in a commercial sense, but the point is that such systems are theoretically allowed within the ranges

defined by the requirements

Table 3.1 Number of possible contexts based on example in Fig 2.2

proc_agents mem_agents io_agents Possible

contexts

1

2

7

8

Continuing in this manner (see Table 3.1) we see that 50 (50 = 14 + 13 + 12 + 11) distinct single-processor systems can be assembled when only one processor is included Accounting for the dependency on the range for I/O controllers for the remaining possible N-processor systems, we see that only 288 possible systems can be assembled

This 288 is the actual number of function points in the space of connec-tivity, significantly fewer than the 448 calculated as the simple product, but still a large number of possible contexts in which the target of verifica-tion must operate correctly This is the challenge for the IP developer

Trang 10

44 Chapter 3 – Exploring Functional Space

In general it is not possible to rely on simple closed-form algebraic ex-pressions (such as in Eq 3.1 and Eq 3.2) to determine the number of func-tion points in the subspace of connectivity (or any other subspace, for that matter), but rather these function points must be counted algorithmically This is accomplished in a straightforward manner with nested for loops that examines each tuple of values of variable of internal connectivity (i.e., each instance) in turn and determining which tuples of values of variables

of external connectivity (i.e., contexts) are valid, just as was done to create Table 3.1

3.2.2 Variables of Activation (and other Time-variant Variables)

Variables of activation are categorized into three subsets, namely power, clocking, and reset For any valid system there may be multiple ways that the system can be activated, each described not by a single tuple of values

of these variables, but rather by sequences in time of changing values of these variables These sequences will be analyzed at length later in this chapter, but some preliminary analysis is in order here Consider the ex-ample of the multi-processor design that we have been using so far

In a system of multiple processors one of the processors is typically des-ignated as the monarch processor with the remaining processors desdes-ignated

as serfs Activation of the monarch precedes activation of the serfs, per-haps by holding each serf in its reset state until system resources such as memory are sufficiently initialized for the serfs to begin fetching and exe-cuting instructions on their own Also, some serf processors might not even be energized until they are needed And, a given serf might be de-activated to conserve power when it is not needed Each of these scenarios constitutes a different sequence of values of variables of activation, each sequence composed of multiple function points

Function points corresponding to time-variant variables such as those of activation are not counted as simply as time-invariant variables of connec-tivity Constructing the value transition graphs (defined later in this chap-ter) is necessary before the corresponding function points can be counted

Accounting for the 4 possible instances of the processor as determined

by CACHE_PRESENT and CACHE_SIZE, this yields 1,152 distinct sys-tems, all of which must be verified to function correctly At first glance this may appear to a rather dire situation for the verification engineer, but,

as will be seen later in this chapter, condensation in the functional space can provide significant practical advantages

Ngày đăng: 03/07/2014, 08:20

TỪ KHÓA LIÊN QUAN