Hello and welcome to lecture number five. In this lecture, we will learn about one of the most important features of the language called cross coverage. Unless and until you cross certain conditions meaning you, you make sure that those conditions occur together, you may not be able to find some of the key critical and corner case bugs. So let's look at cross coverage. Let me just start with the example and then I'll go through some of the rules. So here I have two variables of setting address which are both too big Why?
And I'm basically creating a cover group called CG one sampling it cause edge of clock. I'm creating two power points. One is the power point for offset variable. And inside this code point, I'm creating a bins ofs bin with these two brackets, which means create explicitly as many beans as you need for the number of values on the right hand side, on the right hand side you have 012 and three, four different values of offset that we want to cover. Basically, all the values have offset because offset is a Tobit variable, create four bins to cover four values of offset. Similarly, I'm saying that they create a cover point called ADR and in that create a bins address bin and create four of those four bins explicitly to cover four values of address.
Now what I'm doing is I'm creating a cross between AR and offset and I will explain to you exactly what that means. But first of all, what is how many beans will across or how many cover points will across create AR has four main areas Here has four bins, offset or FST has four bins. So, cross ADR and offset gives 16 power points, basically four core parts of offset and four core points of air. Now, note that the cross is always between two cover points, only between two core points is allowed within the same cover group you cannot have a cross between a PowerPoint defined in one cover group with a cover point defined in another cover group. So, it the core points has to be in the same cover group and weak expirations cannot be used directly in a cross. It has to be only between two PowerPoints, and then you instantiate it.
And that's that's pretty much what you need to do to create a cross. Now let's see what does cross really mean. So let's say As ADR equal to zero has been covered, and that will be covered here, in this particular bid. And let's say offset equal to zero also has been covered, which will be covered in this particular bands. But what if it is equal to zero an offset equal to zero never happened together. And let me make sure I explained what together means together does not mean necessarily at the same clock.
It's not a simultaneous occurrence of address equal to zero and offset equal to zero is what we are looking for. What we're looking for is there let's say it is equal to zero at some time, it stays at zero. And when it says zero, that offset should also go to zero. Now they're both zero at the same time. When that happens, then we know the Cross has been achieved. That will show you a simulation log file from one or the populists.
Simulators and your simulator may show you different way of showing the coverage report. So here for explicit means of offset were created because we just as a simulated create those and all four have been covered. Then you address a call point AR. CG one is the name of the cover group here is the name of the cover point. We also asked the simulator to create four explicit beds and all four of them have been covered. Now let's look at the CG one as I told you it will create 16 different ways because of the cross between four bins of offset and four bins of AR.
Now you see that all the four bins of AR and all the forms of offset were covered by the cross for example return address being two and offset been zero was not covered. Cross was done. Covered individually they were covered. And as you can see, the coverage report will say that these crosses have not been covered. And this is very important because for example, as I said in an earlier lecture, if you have a tag error in one particular cache line read and then you have data error in some other cache line read, you want to make sure that the for example, the the design state machine does not freeze design does not choke. And unless and until you make sure that you have done covered the cross or tagger and data error that such a design flaw can be found.
And this is where code coverage completely fails. So, let me show you one more example. Here what I'm doing is I have an enum called color RGB address of four bit wide and offset two bit wide. Again, I'm creating a cover group named CG one sampling at pauses of clock. I'm creating a counterpoint for the variable offset called FST and Nemo the core point and then I'm covering grading another tower point for ADR variable. And in this cover point, I'm creating two bins.
Note that I am not specifying any brackets here that this is just one thing. Whenever the value of ADR is 0123456 or seven, whenever you reach any of these eight value, this base AR one will be considered covered. So I just want to make sure that you don't think there are eight beans that are covered or created here. They are only there's only one way because there are there is there are No brackets here. So similarly a second beans is created to cover the values eight to 15. Now what I'm doing is I'm creating two crosses.
First I'm creating a cross between color the enum, and the address AR. And then I'm grading across between AR and offset. So, as I said here in the in this particular case, we're not because I'm not specifying any means at all. Then the simulator will create four bins because offset is to be applied. Here like I just said, ar one covers at FL zero to seven and here to cover it set as well as a 215 to two bins are created. So the cross of color and yellow color is basically a three bit enum three values.
And AR. AR here has two bins. So basically You're going to create total cross cover point six, three of color into address. And similarly, we are going to create a cross between AR and offset AR has two bins and offset at explicit four bins. So, the total crossover points are equal to eight photo for offset cross we do have address. And this is just to make a point that you can have a counterpoint for variable.
Go color. As you can see, I've created the core pen only for offset. And only for ADR, I have not created a counterpoint for color. And still I'm doing a cross with it. So explicitly for enum types you don't need to explicitly create a core point. Even though I haven't shown it here.
I personally will create a PowerPoint explicitly because I'm concerned that one simulator may accept it and other won't even though the LRM says that you don't need to explicitly create a PowerPoint for the end of time, that's just a side point. So, you can see how clauses can be created and how different types of gore points can be created which can be crossed and how many power points or bins will be created based on the number of bins that exist in each color point. And here's the simulation log file. And here pretty much the photo automatically created means of offset and two bins that were created in the address like I just showed you. These AR one and year two these are II have is a single bin they have been covered to the color has been covered to cross of CLR address which is basically Cross of color AR has been covered until here, where the auto been G, which is this guy here, which has been covered.
But it's cross with AR two which is this vein, which also has been covered by the Cross has not been covered. And so that simulator will tell you that it has not been covered, everything else has been coded the crosses of address and offset at all code. So you will have a very clear indication of their crosses, do not get covered. And as I say, Grace is an extremely important part of the language and you're just seeing how it works. And that's pretty much it for the cross. I'm keeping the lectures short and simple.
You know fundamentally how to use cross and the importance of it. And believe me, this is something you'll have to keep in mind when they create your cover point. And covered groups when you create your functional coverage plan, thank you and I'll see you in the next lectures.