SystemVerilog Assertions and Functional Coverage From Scratch SystemVerilog Functional Coverage Language Features
10 minutes
Share the link to this page
You need to have access to the item to view this lesson.
One-time Fee
List Price:  $149.95
You save:  $110
List Price:  ₹9,995
You save:  ₹8,515
List Price:  €137.98
You save:  €101.22
List Price:  £117.55
You save:  £86.23
List Price:  CA$204.73
You save:  CA$150.19
List Price:  A$225.67
You save:  A$165.54
List Price:  S$202.27
You save:  S$148.38
List Price:  HK$1,170.71
You save:  HK$858.81
CHF 36.49
List Price:  CHF 136.98
You save:  CHF 100.48
NOK kr420.44
List Price:  NOK kr1,578.10
You save:  NOK kr1,157.66
DKK kr274.31
List Price:  DKK kr1,029.63
You save:  DKK kr755.31
List Price:  NZ$244.19
You save:  NZ$179.13
List Price:  د.إ550.76
You save:  د.إ404.02
List Price:  ৳17,575.64
You save:  ৳12,893.10
List Price:  RM704.46
You save:  RM516.78
List Price:  ₦220,945.32
You save:  ₦162,080.60
List Price:  ₨41,684.82
You save:  ₨30,579.06
List Price:  ฿5,492.24
You save:  ฿4,028.98
List Price:  ₺4,825.84
You save:  ₺3,540.13
List Price:  B$775.42
You save:  B$568.83
List Price:  R2,754.89
You save:  R2,020.93
List Price:  Лв270.34
You save:  Лв198.31
List Price:  ₩204,052.76
You save:  ₩149,688.58
List Price:  ₪552.05
You save:  ₪404.97
List Price:  ₱8,719.66
You save:  ₱6,396.55
List Price:  ¥23,526.50
You save:  ¥17,258.52
List Price:  MX$2,502.30
You save:  MX$1,835.63
List Price:  QR546.39
You save:  QR400.82
List Price:  P2,035.86
You save:  P1,493.46
List Price:  KSh19,943.35
You save:  KSh14,630
List Price:  E£7,069.34
You save:  E£5,185.91
List Price:  ብር8,609.67
You save:  ብር6,315.86
List Price:  Kz127,368.42
You save:  Kz93,434.66
List Price:  CLP$135,090.09
You save:  CLP$99,099.09
List Price:  CN¥1,086.25
You save:  CN¥796.85
List Price:  RD$8,824.08
You save:  RD$6,473.15
List Price:  DA20,184.20
You save:  DA14,806.68
List Price:  FJ$334.11
You save:  FJ$245.10
List Price:  Q1,163.96
You save:  Q853.85
List Price:  GY$31,349.08
You save:  GY$22,996.99
ISK kr5,511.10
List Price:  ISK kr20,685.60
You save:  ISK kr15,174.50
List Price:  DH1,494.60
You save:  DH1,096.41
List Price:  L2,657.05
You save:  L1,949.15
List Price:  ден8,494.38
You save:  ден6,231.29
List Price:  MOP$1,205.79
You save:  MOP$884.54
List Price:  N$2,753.81
You save:  N$2,020.13
List Price:  C$5,515.05
You save:  C$4,045.72
List Price:  रु19,927.17
You save:  रु14,618.13
List Price:  S/560.16
You save:  S/410.92
List Price:  K582.32
You save:  K427.18
List Price:  SAR562.40
You save:  SAR412.56
List Price:  ZK3,999.31
You save:  ZK2,933.80
List Price:  L686.75
You save:  L503.78
List Price:  Kč3,413.76
You save:  Kč2,504.26
List Price:  Ft53,074.75
You save:  Ft38,934.46
SEK kr424.47
List Price:  SEK kr1,593.24
You save:  SEK kr1,168.76
List Price:  ARS$133,567.96
You save:  ARS$97,982.50
List Price:  Bs1,035.38
You save:  Bs759.53
List Price:  COP$578,816.40
You save:  COP$424,606.89
List Price:  ₡76,823.72
You save:  ₡56,356.18
List Price:  L3,702.96
You save:  L2,716.41
List Price:  ₲1,127,056.51
You save:  ₲826,783.70
List Price:  $U5,772.73
You save:  $U4,234.75
List Price:  zł586.80
You save:  zł430.46
per week
Payment Plan
per week
4 payments
Already have an account? Log In


Welcome to lecture number four. This is where we will cover the bins that I've been referring to in previous lectures. So, I will go through the basics of the bins. So to start with what is a bin, think of a bin as a bucket, in the sense that let's say for example, in this particular example, you have a DR address is of a bit wide, that means it has 256 different values that you need to cover. Now, if you just let the simulator create the bends, so called bins or buckets, it will create 256 of those, which is what you really don't need. So bins is something where you can bucket eyes or you can say hey, if the values are from zero to 10 in a day get covered, put that in this bin with this name on it and I will show you in a example which will which is example I'm carrying forward from previous lecture on PCI how it becomes useful.

So, let me not go ahead of myself. So our goal point will include a set of explicit, like I showed you in some examples before or implicit bends that will allow you to organize the cover point sample. And we haven't seen transition or transition values or cross values for that matter. So let's look at this example. I have an eight bit wide address and I created a cover group called Jeevan. And I want to sample the core group it pauses of clock, so it pauses a clock all these discover point in all these bits will be evaluated.

Now inside discover group I'm going to cover with the PowerPoint, this ADR and I evaluated only a preset is low if we are not in the reset mode. Now if you recall those To squiggly brackets. Now in the earlier example, I had nothing inside the squiggly brackets and everything was automatically generated for you. What I'm doing now is I'm going to define a bunch of bins. And since as I said, ADR has 256 different values, I'm going to show you how to put those 256 values in different bins. So let's look at the first bit.

Bins is a key word. And I'll give it a name, address bin one equal to in the squiggly bracket, zero colon three. What this number one, do not confuse zero colon three to mean that is a four bit register or anything like that, which is what you're used to. In the functional language, syntax and semantics. Zero colon three means four values. 012 and three.

So, what this is saying is that whenever address this government address has a value either zero or one or two or three, if you reach any of these four values, then you have covered address being bought. Again, do not confuse this with the register zero colon three, it literally means 012 and three and whenever it's a single big single been here and you I will show you how can you create multiple bands, but this is a single Ben took our all as well as 012 and three, anytime you reach any of these values, this bins address min one will be covered. In the second line, you'll see that these address mean two I put this bracket here and then I'm saying values four and five. What this means is that Individual beans will be created automatically generated by system our live audio simulator for that record I'm not telling it anything, it's it sees that there are two values on the right hand side so it's going to automatically create two bins.

So as you can see our individual bins address been to one these are the names given by the simulator and address been to two for each of the added value for call caller comma five. Again to contrast this with the previous line here there is a single bin to cover all the address values. Here there are two bins to cover two different values. So there is a big difference here. When address equal to four has been reached, then address been to one will be covered. And when address value five has been raised at has been to two will be covered.

Now in this line, I'm explicitly saying create two bits But I have three values six, seven and eight on the right hand side. So, what is going to do is add this value six isn't been addressed when three one and address bin two there are only two bins and three values seven and eight will be put in the second bin. What that means is, if six had been reached, if we if your test bench exercises ADR equal to six, then the then the address been three one will be considered covered and whenever the ATR it is either value seven or eight address when three two will be covered this names are given explicitly by the the simulator. This is slightly reverse of the previous line here I'm saying create three bins, but I have only two values. So, the first bin will cover very Nine second bean will cover value 10 and the third one will simply remain empty it the simulator will tell you that it's an empty bed meaning it'll never be covered.

There's nothing to cover there. Similarly, if you look at this particular line, you will see that in the address mean five again, I'm doing what I did with it trust me do. I'm basically saying create explicitly number of beans required based on the values that I want to cover on the right hand side. But what I've got on the right hand side is I have two different brackets one is took our values 910 1112 and the second is to go over 1112 1314 1516. The point I'm making here is that you have 11 and 12 and 11 and 12. In both these brackets are all overlapping and that's perfectly okay.

That's perfectly okay. What the simulator will do is it will remove the riddle Then see and basically go from nine to 16. And because I'm saying similar, you create the bins. Here, we'll create eight bins explicitly for the eight values on the right hand side. And here, we are saying that cover all the values of the ADR that are between 31. And Forever Forever means in this case is 256.

So any address value, you read that as value anywhere from 31 to 256, it's considered covered. And these bins here Greg will tell you that those values have been covered. Any of those value covered will be considered. We'll consider this beans here too, and to be covered. There, it's important to note and here I have covered all the values but in case you did not cover all the values, then you can just put a default here. So anything That's not been covered in the previous bins.

But all of those anything that you reach by I consider that as a default and put that in the bins, others. So these are the different ways you can create vents and again, a Benyus value bucket guys, you basically say, Hey, listen, I have a 32 bit wide bus. And I don't want I want less than the first eight bits to be. If they get covered, put them in this bin, so it's easier for me to see my coverage report and so on and so forth. Now, let me show you an example. Which will solidify this concept.

So this is the same example I showed you in the previous lecture. There is an enum which is 12 different cycle types of the PCI bus and the enum is called PCI commands. I have created a power group RPC commands under scope cover just like in the previous lecture, and I'm sampling it at the age of four. Now, earlier I simply said cover point PCA commands. And then I left it up to the similar to create 12 bins for the 12 nm types add for further total enum values. Here, what I'm doing is I'm going to create a bins are being called PCI reads.

And what I'm telling the simulator is create all the bases necessary to cover all the right hand side values. And in the PCI rates, I want to cover all the read type cycles that the PCI come at the PCI bus issues in the PCI writes when I want to cover all the memory, sorry, all the right commands, and whatever that is left I want to put that in the beans called PCM miscellaneous misc. So as you can see beans Live you now when you look at the coverage reports, and if you see beans PCI reads have been covered, then you know that all the read cycles have been covered. If you did not classify them into READ WRITE and miscellaneous, for example, then you have to look at individual beans of all the 12 beans that are explicitly created for you and see a harmony. If all the reads have been covered.

This makes it a lot easier. And so this is one of the main reasons for creating veins. And you will see how it affects even further when we go to the transition and cross coverage. So that's all folks. I just wanted to introduce you to Ben's, how to create ways what are the different type of vents and again, being is simply a way to organize all the different values of the PowerPoint that you're trying to cover. Thank you very much for your time and I will see you in the next class.

Sign Up


Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.