Hello Mark, We discovered a previously passed proposal that modifies this area of the LRM: http://www.verilog.org/svdb/bug_view_page.php?bug_id=0001237 We are going to have to re-do our proposal for 1655 so that it doesn't conflict with the text of 1237. Stay tuned. Regards, Doug > -----Original Message----- > From: Mark Strickland (mastrick) [mailto:mastrick@cisco.com] > Sent: Tuesday, November 21, 2006 9:43 AM > To: Dwivedi, Swapnil; Scott, David; sv-ec@eda.org > Cc: Arturo Salz; Warmke, Doug > Subject: RE: [sv-ec] New Mantis on Coverage Calculation Corner Cases > > Swapnil, > > From the user perspective, I want to see two things (related to this > topic :)): > > 1) I can browse the coverage results top-down and see where are my > "trouble spots" of poor coverage achievement and what is my > achievement > of "interest only" coverage (that is not factored into my > overall grade) > and not get confused which is which. > > 2) The standard includes the fields necessary to accomplish the above > and the algorithm to compute the derived values, so that I can see the > same results in different tools. > > The tool vendor still should have latitude to take the coverage > information and present it in the best way possible in their reporting > tools, with colors/hierarchy/"what-if"/etc. > > Your proposal looks good with the exception of the following: > > 1) Scenario 3, when B.weight=0, seeing covergroup B grade of 0% could > make me think it is a "trouble spot". The vendors could solve this by > providing some kind of visual indication to me that this 0% is not > included in the overall grade. > > 2) Scenario 4 and 5, B grade of 0% makes me think B.cvp had a grade of > 0% until I probe down in the hierarchy. In a big coverage > environment, > I don't want to have to keep probing down to get the real data. > > I don't think you quite got my request for the flat grading, > but perhaps > I misunderstood your response. Again, I want the standard to include > the grading algorithm so that I don't get different results reported > from different tools. The grading algorithm, however, needs > to satisfy > two different needs: > > 1) Give me a feeling of percentage effort completed. Certainly, there > are s-curves to coverage closure, but as a first cut, I'd > like each new > bin covered to increase this number by the same amount, so > that getting > the first TRUE on a TRUE/FALSE point counts the same as getting the > first 5/5/5 on a three-way cross of bytes. > > 2) Give me a feeling of areas covered. For this purpose, I might want > the first TRUE on the TRUE/FALSE to count much more because it is the > only point in a covergroup and the 5/5/5 is one of many bins in a > different covergroup. > > Currently, it sounds like only 2 is supported, but 1 is really my more > common need as a report to project management. > > Again, the tool vendor could just throw away the grades for everything > except the coverpoints and recalculate the overall grade, but > the beauty > of the standard to the user is that I can be sure exactly how this > calculation is done. > > Mark > > > -----Original Message----- > From: Dwivedi, Swapnil [mailto:swapnil_dwivedi@mentor.com] > Sent: Friday, November 10, 2006 10:22 AM > To: Mark Strickland (mastrick); Scott, David; sv-ec@eda.org > Cc: Arturo Salz; Warmke, Doug > Subject: RE: [sv-ec] New Mantis on Coverage Calculation Corner Cases > > Hello Mark! > > I surely do think you have a valid requirement. Users would > definitively > like to have functionality which you described in your email. But I > think this feature should be part of the Coverage report > scheme and onus > should lie with vendor to provide it as part of their tool's report > query system. > > The "weight" option has a special meaning in LRM and is > currently solely > attached to Coverage calculation. Inferring something else from it (at > different situations) would possibly have different > dictations from not > only customers but vendors too. By keeping it in the confines of > Coverage calculation we can minimize that. > > Now about your requirement of not showing in report the items with > "weight == 0". I would forward your requirement to our team. If you do > not mind we would be very much interested in knowing your other > requirements and would directly like to discuss with you. In our > product, "Questa", we do provide something similar in our Coverage > reporting system : "[-above <coverage_percent> | -below > <coverage_percent>]". You may use that for the moment until > we come back > about your requirement. > > Lets discuss your scenarios and how do we achieve your requirements. > > Scenario 1) No problem here. > Scenario 2) No problem here either. > > Scenario 3) > Covergroup A > A.type_option.weight = 1 (default) > A.type_option.goal = 100 Achieved = 100 > > Covergroup B : No Coverpoints (Say Covergroup under construction) > B.type_option.weight = 1 (default) B.type_option.goal = 100 > Achieved = 0 > (no coverage objects/values => 0 > achieved) > > Let assume one instance of each Covergroup. Clearly coverage would be > Design: 50% (Covergroup A contribution: 100% Covergroup B > contribution: > 0%) > Covergroup A coverage: 100% > Covergroup B coverage: 0% > Above confirms to one of your requirement. > > Now lets see what happens if you make the > "B.type_option.weight = 0" and > given my suggestion is used. Since weight is zero the concerned object > does not contribute in Coverage calculation and the new Coverage is > Design: 100% (Covergroup A contribution: 100% Covergroup B: None) > Covergroup A coverage: 100% Covergroup B coverage: 0% > > This one almost confirms to your other requirement. You expect > "Covergroup B coverage: 100%" but it is "0%". As a user > working in group > I think the results shown is perfect. When you are working on a new > Covergroup your first aim is to see the you do not un-intentionally > affect the Design Coverage (or get an ire from colleague) by suddenly > bringing down the Coverage. Your second aim is to keep seeing your > Covergroup's correct coverage so that you can keep an eye on > it and keep > working on it. Of course there are other uses of "weight = 0". For > example you do not want another group's Covergroup to affect your > Coverage objectives/goals. You can create a file with hierarchical > assignments of "weight = 0" and mask their Covergroup out of coverage > calculation. > > Scenario 4) > Covergroup A > A.type_option.weight = 1 (default) > A.type_option.goal = 100 Achieved = 100 > > Covergroup B : One coverpoint "cvp" > B.type_option.weight = 1 (default) > B.type_option.goal = 100 Achieved = 0 (cvp did not contribute) > B.cvp.type_option.weight = 0 (i.e. does not contribute in coverage > calculation) > B.cvp.goal = 100 Achieved = 50 > > So the coverage is > Design: 50% (Covergroup A contribution: 100% Covergroup B > contribution: > 0%) > Covergroup A coverage: 100% > Covergroup B coverage: 0% (cvp contribution : None) Coverpoint B.cvp > coverage: 50% > > Now if I make "B.type_option.weight = 0" and > "B.cvp.type_option.weight = > 0" then (lets call this CASE A) > Design: 100% (Covergroup A contribution: 100% Covergroup B > contribution: None) > Covergroup A coverage: 100% > Covergroup B coverage: 0% (cvp contribution : None) Coverpoint B.cvp > coverage: 50% > > Now if I make "B.type_option.weight = 0" and > "B.cvp.type_option.weight = > 1 (default)" (lets call this CASE B) > Design: 100% (Covergroup A contribution: 100% Covergroup B > contribution: None) > Covergroup A coverage: 100% > Covergroup B coverage: 50% > Coverpoint B.cvp coverage: 50% > > Now as a user "CASE B" fits perfectly when working in > group/multi-group > environment. > > > Scenario 5) > This is same as CASE A of the scenario 4. > > Covergroup A > A.type_option.weight = 1 (default) > A.type_option.goal = 100 Achieved = 100 > > Covergroup B : One coverpoint "cvp" > B.type_option.weight = 0 > B.type_option.goal = 100 Achieved = 0 (both cvp and B do not > contribute) > B.cvp.type_option.weight = 0 (i.e. does not contribute in coverage > calculation) > B.cvp.goal = 100 Achieved = 50 > > Design: 100% (Covergroup A contribution: 100% Covergroup B > contribution: > None) > Covergroup A coverage: 100% > Covergroup B coverage: 0% > Coverpoint B.cvp coverage: 50% > > > As you can see "CASE B (scenario 4)" is very reasonable for almost all > the occasions. As to various other flavors which we did not > discuss, the > vendor should be responsible for providing it as part of > their reporting > structure. > > Q) > > On a somewhat different topic, is there a concept of a > choice between > > hierarchical grading and flat grading provided to the user? To > > illustrate the difference, assume a covergroup with 100% grade with > > just one bin included and another covergroup with 0% grade > and 99 bins > > > included. Assuming the groups have the same weight, the > hierarchical > > grading scheme would give an overall grade of 50%, while > flat grading > > would give 1%. One way to let the user specify may be to > merge groups > > > that all have default weight as if their weight was equal to their > > number of bins while merging explicitly weighted groups in a > > hierarchical manner. > > A) If I understand your requirement correctly then answer is no. > Covergroup coverage calculation is kind of based on name. Merging of > counts/coverage data is done with name of the object as the key. With > two different Covergroups, associating names across Covergroups etc > would soon make things go out of control. > > But interestingly something similar is there within a > Covergroup. Given > your example above, B.cvp.get_coverage() actually aggregates > the bins at > coverpoint level with name of the bin as the key. Same is true for > Cross. So if your intention is to have two distinct sets of bins but > coverage calculation to be done on them in an aggregate > fashion then use > Covergroup with ref arguments and parameters. > > For example > > covergroup cvg (ref cvp_expr, input int bin_size, int left_bound, int > right_bound) > { > coverpoint cvp_expr > { > bins user_bin [bin_size] = {[left_cound:right_bound]}; > } > } > > cvg cvg_instance1 = new(a, 10, 1, 100); > cvg cvg_instance1 = new(b, 5, 10, 25); > > initial > $display("Aggregate coverage = %f", cvg.cvp.get_coverage()); > > If you have further questions/queries then please feel free to send an > email to us at support@model.com > > Regards, > Swapnil > ++ > Swapnil Dwivedi, Sr. Software Engr. > Mentor Graphics, San Jose, CA > Office : +44 (1635) 811-442 (Internal: 8210-1442) > Cell : +44 (7919) 150-796 > Home : +1 (408) 259-1817 (VOIP) > > > > -----Original Message----- > > From: Mark Strickland (mastrick) [mailto:mastrick@cisco.com] > > Sent: Thursday, November 09, 2006 9:43 PM > > To: Dwivedi, Swapnil; Scott, David; sv-ec@eda.org > > Cc: Arturo Salz; Warmke, Doug > > Subject: RE: [sv-ec] New Mantis on Coverage Calculation Corner Cases > > > > Swapnil - You could certainly define "weight=0" to mean "I > don't want > > to see this in the report" and make the algorithm simple. However, > > that eliminates a useful feature of "I want to see this in > the report > > but I don't want it to affect the overall calculation". > One place I > > find this useful is when I have a cross of two coverpoints, > and I want > > > to see the results for the points themselves (for > understanding what > > is needed for coverage closure), but not have them contribute twice > > (once themselves and once in the cross) to the overall result. > > > > Dave - I agree the rule must apply at all levels and that > > user-specified values should not be overwritten. The calculation > > could use a modified version of what the weight field > shows. However, > > > I am a user, not a tool creator, so I think I should just state the > > desired user view. > > > > Example: > > Lets say my design has two covergroups, A and B. A has a > weight of 1 > > (by the way, that is the default if I don't say anything, > right?) and > > a grade of 100%. B varies by scenario shown below: > > > > Scenario 1) B has a weight of 1 and one coverpoint with a > grade of 50% > > > and a non-zero weight. The overall grade for this design > is 75% and > > the grade of B is 50%. > > > > Scenario 2) B has a weight of 0 and one coverpoint with a > grade of 50% > > > and a non-zero weight. The overall grade is 100% and the > grade of B > > is 50%. > > > > Scenario 3) B has a weight of 1 and no coverpoints. This > is a tricky > > one. Most of the time, I would prefer the overall grade > and the grade > > > of B to be 100%, because I do not have any coverage holes. > However, > > occasionally it would be nice to see the overall grade reflect the > > fact that there is a covergroup I am intending to populate but have > > not yet done so. In this case, the overall grade would be > 50% and the > > > grade of B would be 0%. How can both modes work? > > Option a) Always show the latter grades and make the user > explicitly > > exclude B if he/she wanted the former. The user may spend time > > debugging and making this fix. > > Option b) If the weight for B was unassigned in user code (i.e. > > default value), go with the first mode. If it was assigned > (even if > > it was assigned to 1), go with the second. > > > > Scenario 4) B has a weight of 1 and one coverpoint with a > grade of 50% > > > and a weight of 0. If we go with option (a) for scenario (3), then > > the consistent behavior would be to have the overall grade > be 50%. If > > > B has a grade of 50%, we are obscuring the fact that it > contributed 0% > > > to the calculation for the overall grade. If B has a grade > of 0%, we > > are obscuring the fact that there was some coverage achievement in > > this group albeit with zero weight. If we go with option > > (b) for scenario (3), then the consistent behavior is to have the > > overall grade be 100% if B had an unassigned weight or 50% > if it was > > assigned to 1. > > > > Scenario 5) B has a weight of 0 and one coverpoint with a > grade of 50% > > > and a weight of 0. The overall grade is 100% and the grade of B is > > 50%. > > (This scenario is very like scenario 2; there is no reason that > > assigning the 0 weight to the coverpoint should obscure its > grade as > > viewed at the level of B.) > > > > In all cases of scenarios 2 through 5 in which there was a > grade that > > did not contribute to the overall grade, it would be ideal if some > > flag was set so that a GUI could highlight that fact. > > > > On a somewhat different topic, is there a concept of a > choice between > > hierarchical grading and flat grading provided to the user? To > > illustrate the difference, assume a covergroup with 100% grade with > > just one bin included and another covergroup with 0% grade > and 99 bins > > > included. Assuming the groups have the same weight, the > hiearchical > > grading scheme would give an overall grade of 50%, while > flat grading > > would give 1%. One way to let the user specify may be to > merge groups > > > that all have default weight as if their weight was equal to their > > number of bins while merging explicitly weighted groups in a > > hierarchical manner. > > > > Mark > > > > -----Original Message----- > > From: Dwivedi, Swapnil [mailto:swapnil_dwivedi@mentor.com] > > Sent: Thursday, November 09, 2006 8:12 AM > > To: Scott, David; Mark Strickland (mastrick); sv-ec@eda.org > > Cc: Arturo Salz; Warmke, Doug > > Subject: RE: [sv-ec] New Mantis on Coverage Calculation Corner Cases > > > > I have a suggestion. For the case of weight being zero we can take > > hint from Coverpoint bins. > > > > If a Coverpoint bin, after applying the ignore and illegal values, > > ends up with no values (they are called empty bins) then we > take the > > bin out of the coverage calculation. > > Continuing further if all the bins in a Coverpoint are > empty (or there > > > are no bins in Coverpoint) then effectively Coverpoint does > not have > > any bins and it is taken out of Coverage calculation. And so on. > > > > The point that user is giving a zero means he/she is not > bothered or > > concerned by the contribution of the object > > (Covergroup/Coverpoint/Cross). We can apply the same rule > as above. A > > zero weight means just take the object out of Coverage > calculation. So > > > if the all the Coverpoints and Crosses are of zero weight > then they do > > > not exist and hence Covergroup object does not (i.e. it > might exist as > > > instance but does not contribute in the Coverage calculation and a > > smart simulator might as well purge it for all purpose). > > > > Regards, > > Swapnil > > > > > > > > > -----Original Message----- > > > From: owner-sv-ec@server.eda.org > > > [mailto:owner-sv-ec@server.eda.org] On Behalf Of Scott, David > > > Sent: Thursday, November 09, 2006 2:07 AM > > > To: Mark Strickland (mastrick); sv-ec@server.eda.org > > > Cc: Arturo Salz; Warmke, Doug > > > Subject: Re: [sv-ec] New Mantis on Coverage Calculation > Corner Cases > > > > > > I had a reaction to this one that I posted internally here > > at Mentor > > > last week; I've been encouraged to post it to SV-EC ... > > > > > > > > > If I read Mark's suggestion right, I think that is saying that > > > all-zero weights propagate as zero weight upward, i.e., all > > > coverpoints/crosses weighted zero imply covergroup weight = > > 0. Is that > > > > > right? > > > > > > I'm worried about a couple of things. > > > > > > One is that while this works out OK for the coverpoint/cross to > > > covergroup level, presumably there is also weighting among > > covergroups > > > > > to form the $get_coverage() value. So now you have to answer the > > > question what $get_coverage() returns if all covergroup types are > > > weighted 0. Mark's argument can't apply at this level, I > > don't think. > > > I'm a little bothered by an algorithm not general enough to > > apply at > > > all levels. > > > > > > A more serious issue, I think, is this: > > > > > > covergroup ct; > > > type_option.weight = 1; > > > coverpoint i { type_option.weight = 0; } coverpoint j { > > > type_option.weight = 0; } endgroup ct cv = new; > > > > > > initial $display(ct::type_option.weight); > > > > > > If I have interpreted Mark's suggestion correctly, this > > will have to > > > display 0, in contradiction of the explicit assignment. > > > > > > -- Dave Scott > > > > > > > > > Mark Strickland (mastrick) wrote: > > > > Doug/Arturo, > > > > > > > > I agree that negative weights are not needed and could be > > > considered an > > > > error. However, I'm not sure about zero coverage when all > > > weights are > > > > zero. I would like to be able to have two possibilities > > > for a coverage > > > > point I did not want to participate in the overall coverage > > > grade: I can > > > > still see its grade or I don't see it at all. The weight > > > of zero is how > > > > I would achieve the first. If a group of coverage points > > > who all have > > > > weight of zero show me a grade of zero, then I am prevented > > > from seeing > > > > the actual achievement for that group. The solution that > > > allows me to > > > > see the grade for a group with all weights zero but does > > > not affect the > > > > overall grade is to calculate the grade as if all the > > > weights were one > > > > but then assign a weight of zero to the group grade. > > > > > > > > Mark > > > > > > > > -----Original Message----- > > > > From: owner-sv-ec@eda.org [mailto:owner-sv-ec@eda.org] On > > Behalf Of > > > > Arturo Salz > > > > Sent: Monday, October 30, 2006 2:45 PM > > > > To: Warmke, Doug; sv-ec@eda.org > > > > Subject: RE: [sv-ec] New Mantis on Coverage Calculation > > Corner Cases > > > > > > > > Doug, > > > > > > > > I added a bugnote expressing my opinion: > > > > > > > > 1) If the sum of all weights (Wi) is zero then the coverage > > > (Cg) should > > > > yield zero. > > > > > > > > 2) A negative weight should be an error. Unsigned weights > > > are likely to > > > > just generate garbage reports and force more work upon users. > > > > > > > > Arturo > > > > > > > > -----Original Message----- > > > > From: owner-sv-ec@eda.org [mailto:owner-sv-ec@eda.org] On > > Behalf Of > > > > Warmke, Doug > > > > Sent: Saturday, October 28, 2006 4:22 PM > > > > To: sv-ec@eda.org > > > > Subject: [sv-ec] New Mantis on Coverage Calculation Corner Cases > > > > > > > > Hi All, > > > > > > > > Some simple corner cases were identified in 18.10 on Coverage > > > > Calculations. The first is if the sum of all weights Wi in the > > > > denominator of the Cg equation is 0. > > > > The second is what to do about negative weights. > > > > > > > > Can you please read > > > > http://eda.org/svdb/bug_view_page.php?bug_id=0001655 > > > > and express any opinions on the two corner cases? > > > > > > > > Thanks, > > > > Doug > > > > > > > > > > > > > > > > >Received on Tue Nov 21 10:00:33 2006
This archive was generated by hypermail 2.1.8 : Tue Nov 21 2006 - 10:00:44 PST