TVEC error messages!

A place for discussing all aspects of T-VEC subsystem compilation, vector generation, and model coverage analysis.

TVEC error messages!

Postby Bao » Thu Jun 18, 2009 3:07 pm

Hi, Bob:

I run two closely related TTM models and get some error messages with TVEC. Can you point out the cause of the errors? I will e-mail you the models.

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?

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?

Thanks,
Bao
Bao
 
Posts: 1
Joined: Mon Jun 08, 2009 4:40 pm

Re: TVEC error messages!

Postby busser » Thu Jun 18, 2009 3:33 pm

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
coverage_passed.jpg (462.09 KiB) Viewed 3480 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 <- row1

is 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) < 0

can 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
multispace_errors.jpg (360.61 KiB) Viewed 3479 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.
busser
Site Admin
 
Posts: 52
Joined: Thu Mar 13, 2008 7:42 pm


Return to Vector Generation

Who is online

Users browsing this forum: No registered users and 0 guests

cron