Hi Bao,

The row conditions for the 1st model basically specify:

Abs(a-b) >t1 AND abs(a-b)<= t2 <- row1

Abs(a-b) <= t1 <- row2

Abs(a-b) > t2 <- row3

where, t1 and t2 are constants with t2 > t1. TVEC generates 4 vectors for each row. But it also generates some error messages for row1. Can you point out how TVEC picks up the ranges for signals INTERM_00928_016:FLOAT32 and INTERM_00928_017:FLOAT32 shown in the error report?

As you can see, T-VEC determined that full logic coverage was achieved, hence the coverage numbers are green.

- coverage_passed.jpg (462.09 KiB) Viewed 3860 times

But there can still be vector gen errors for specific sub-cases. For example, for simulink models we generate both T=0 and T>0 test vectors covering the same logic. However, T=0 test vectors make use of the state variable initial values specified by the user, whereas the T>0 cases solve for values for those state variables. (This will come to TTM also, in the near future with the addition of local and global state variables that is underway now.) In many cases, parts of a Simulink design model are meant for initial cycle only or non-initial cycle one use. So, when trying to generate a T=0 test vector for a design that involves logical paths that are only meant for T>0 operation, an error will be flagged that points out that the given DCP path is not valid - by design in this case - at T=0.

There is something similar in your PP_Test_RP case. T-VEC divides test vector generation for DCP's that involve abs() functions into positive and negative input domains for the inputs to the abs() functions. For example, the row 1 relationship

Abs(a-b) >t1 AND abd(a-b)<= t2 <- row1is treated as if it actually was 4 different DCPs - actually 4 variations of the same DCP

* DCP 1 (Multispace Variation 1) : (a-b) >= 0 && (a-b) >= 0 && Abs(a-b) >t1 AND abd(a-b)<= t2

* DCP 1 (Multispace Variation 2) : (a-b) < 0 && (a-b) >= 0 && Abs(a-b) >t1 AND abd(a-b)<= t2

* DCP 1 (Multispace Variation 3) : (a-b) >= 0 && (a-b) < 0 && Abs(a-b) >t1 AND abd(a-b)<= t2

* DCP 1 (Multispace Variation 4) : (a-b) < 0 && (a-b) < 0 && Abs(a-b) >t1 AND abd(a-b)<= t2 This splitting of the one constraint into 4 virtual DCP paths is done at vector generation time, which is why it really is not smart enough to know that your 2 abs() functions actually have the same input expression. You should be able to see from the above description that #2 and #3 are guaranteed to fail. It is not possible to find values for a and b such that

(a-b) < 0 && (a-b) >= 0 or (a-b) >= 0 && (a-b) < 0can be true. If you look at the error diagnostic information, the fact that it was these 2 cases that failed to produce test vectors is apparent from the names in the high level DCP predicate list.

- multispace_errors.jpg (360.61 KiB) Viewed 3859 times

So, to summarize the vector generator's attempt at generating vectors that fully cover the input domain partitioning inadvertently created a couple of cases that contained internal contraditions.

The 2nd model is a typical limit function and its row conditions are:

vIn > limit <- row1

vIn < -limit <- row2

vIn <=limit AND vIn >=-limt <- row3

TVEC did not generate vector at all for row2. Why does the interm variable INTERM_LL for -limit always have positive data range?

This question is a bit harder to answer in this space. It is related to the use of FLOAT32 variable types with very large default domain boundaries for that floating point type and it is related to the vector generation rules that are set up to try and deal with such expressions and types. I'll get back to you on this via standard email.