Local Variable Usage with 'and' and 'or' of Sequences

SystemVerilog Assertions and Functional Coverage From Scratch Local Variables and Endpoint Sequence Methods
7 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$39.95
List Price:  $149.95
You save:  $110
₹1,480
List Price:  ₹9,995
You save:  ₹8,515
€37.07
List Price:  €139.15
You save:  €102.07
£31.72
List Price:  £119.07
You save:  £87.35
CA$54.38
List Price:  CA$204.11
You save:  CA$149.73
A$61.58
List Price:  A$231.14
You save:  A$169.56
S$53.97
List Price:  S$202.58
You save:  S$148.60
HK$312.55
List Price:  HK$1,173.15
You save:  HK$860.60
CHF 36.20
List Price:  CHF 135.88
You save:  CHF 99.68
NOK kr433.59
List Price:  NOK kr1,627.47
You save:  NOK kr1,193.87
DKK kr276.48
List Price:  DKK kr1,037.77
You save:  DKK kr761.29
NZ$67.04
List Price:  NZ$251.65
You save:  NZ$184.60
د.إ146.70
List Price:  د.إ550.66
You save:  د.إ403.95
৳4,385.38
List Price:  ৳16,460.29
You save:  ৳12,074.90
RM189.08
List Price:  RM709.71
You save:  RM520.63
₦56,671.87
List Price:  ₦212,714.57
You save:  ₦156,042.70
₨11,111.22
List Price:  ₨41,705.33
You save:  ₨30,594.11
฿1,457.40
List Price:  ฿5,470.27
You save:  ฿4,012.87
₺1,291.36
List Price:  ₺4,847.06
You save:  ₺3,555.69
B$199.45
List Price:  B$748.64
You save:  B$549.18
R762.54
List Price:  R2,862.15
You save:  R2,099.61
Лв72.17
List Price:  Лв270.91
You save:  Лв198.74
₩54,016.88
List Price:  ₩202,749.24
You save:  ₩148,732.35
₪147.28
List Price:  ₪552.82
You save:  ₪405.54
₱2,250.97
List Price:  ₱8,448.90
You save:  ₱6,197.93
¥6,050.82
List Price:  ¥22,711.40
You save:  ¥16,660.58
MX$662.99
List Price:  MX$2,488.52
You save:  MX$1,825.52
QR145.55
List Price:  QR546.33
You save:  QR400.78
P547.73
List Price:  P2,055.89
You save:  P1,508.15
KSh5,253.42
List Price:  KSh19,718.42
You save:  KSh14,465
E£1,889.63
List Price:  E£7,092.63
You save:  E£5,203
ብር2,269.64
List Price:  ብር8,518.96
You save:  ብር6,249.32
Kz33,406.63
List Price:  Kz125,389.84
You save:  Kz91,983.21
CLP$39,146.20
List Price:  CLP$146,933
You save:  CLP$107,786.80
CN¥288.85
List Price:  CN¥1,084.18
You save:  CN¥795.33
RD$2,365.87
List Price:  RD$8,880.18
You save:  RD$6,514.30
DA5,390.12
List Price:  DA20,231.52
You save:  DA14,841.39
FJ$90.34
List Price:  FJ$339.11
You save:  FJ$248.76
Q311.58
List Price:  Q1,169.51
You save:  Q857.93
GY$8,359.78
List Price:  GY$31,377.95
You save:  GY$23,018.17
ISK kr5,572.22
List Price:  ISK kr20,915.02
You save:  ISK kr15,342.80
DH404.81
List Price:  DH1,519.44
You save:  DH1,114.63
L704.52
List Price:  L2,644.40
You save:  L1,939.87
ден2,278.22
List Price:  ден8,551.17
You save:  ден6,272.95
MOP$321.98
List Price:  MOP$1,208.56
You save:  MOP$886.57
N$756.50
List Price:  N$2,839.51
You save:  N$2,083
C$1,470.76
List Price:  C$5,520.43
You save:  C$4,049.67
रु5,328.11
List Price:  रु19,998.78
You save:  रु14,670.66
S/148.16
List Price:  S/556.13
You save:  S/407.97
K152.91
List Price:  K573.94
You save:  K421.03
SAR149.82
List Price:  SAR562.37
You save:  SAR412.54
ZK1,007.94
List Price:  ZK3,783.26
You save:  ZK2,775.31
L184.36
List Price:  L691.98
You save:  L507.62
Kč939.22
List Price:  Kč3,525.31
You save:  Kč2,586.09
Ft14,674.71
List Price:  Ft55,080.68
You save:  Ft40,405.97
SEK kr428.02
List Price:  SEK kr1,606.57
You save:  SEK kr1,178.54
ARS$34,267.27
List Price:  ARS$128,620.21
You save:  ARS$94,352.94
Bs276.09
List Price:  Bs1,036.32
You save:  Bs760.22
COP$154,855.16
List Price:  COP$581,239.86
You save:  COP$426,384.69
₡20,309.55
List Price:  ₡76,230.72
You save:  ₡55,921.17
L986.37
List Price:  L3,702.31
You save:  L2,715.93
₲294,782.87
List Price:  ₲1,106,450.34
You save:  ₲811,667.47
$U1,511.02
List Price:  $U5,671.53
You save:  $U4,160.51
zł160.11
List Price:  zł600.96
You save:  zł440.85
Subscription
$149.95
$39.95
per week
Payment Plan
$149.96
$39.95
per week
4 payments
Already have an account? Log In

Transcript

Hello, and welcome to this lecture in this lecture, I will describe some obscure error messages that you may get. And these are related to the end and or of sequences where you use local variable. So let's start with a simple example. I have a sequence as one, but I have declared a local variable x. And then I'm doing an order of two sequences. This is sequence number one, and this is sequence number two.

In this sequence, I'm assigning some data part of your design or test bench to the local variable x. Then I'm ordering the sequence with another sequence where I'm not assigning any data or anything to the local variable x. When you do and then I will take the local data x and assign it to some other data If you go this particular order of sequences This way you will get an error. And the error will tell you this is from mentors question same that local variable accurate x reference in expression where it does not flow. I am not sure if this error message is understandable. And the alarm say that data does not flow out of the competent sequence, again a big obstacle.

So, let me explain what's going on here. In this sequence, we are assigning data to x. And this is an order of two sequences. So, let's say this sequence and, and first and then we assign data to x. Because this is an order as soon as one of the two sequences finishes, the control flows out of here, and then you assign the local variable to which you apply data to data one So, So far, so good, there is absolutely nothing wrong with it. But what if this sequence ends first, and then because this is an all again, the control will flow out.

And now when you try to assign X to data X has not been initialized, it is still in unknown state. So you cannot apply an unknown local data to any other variable. So, this is the reason why you get an error because of the order of two sequences where x is assigned only in one of the two sequences. So, this makes sense, and that's what the error message means. So, what's the solution? The simplest solution is that before you enter the order of sequences, you assign the data.

So, that way it does not matter which of the two sequences and first X has known data and then when you assign it to some other data It is okay. So this will pass. The other solution which I am not recommending it is not a clean solution, but it works. So for the sake of completeness I am showing it here. Here, basically what you do is in both sequences you apply, you apply the data to x, so that any again doesn't matter which sequence ends First, you will still have known data on x and then x will be assigned to another data. So, that's also fine and this works.

But more than often what you really need to do is what is shown here. In this sequence, I'm assigning at the end of this sequence, I'm saying x equal to data. And then I'm saying or at the end of this sequence x equal to beta two is a different data and in real life, the reason you Assign data in such a sequence is because at the end of a given sequence, you want to assign different data. So since this is an R, again, doesn't matter, the sequence ends First, there is some known data that is assigned to x. And so that when you assign X to data, one of the biggest wine, so the order of two sequences, where either the data is the same, all the data is different. The order of sequences with this kind of assignment or local data works.

Now we are going to look at and have two sequences. So I'm taking this particular example and I'm only changing or to end, like shown here. Now when you do this, you will get an error because this is an ad. So let's see what's going on here. Since this is an end of two sequences, both sequences must add. Let's say the sequence is first and then sequence ends.

So since this sequence ended later, x will be equal to data to, or but now let's say this sequence ends first, and, and this sequence and later than x to be equal to data. So once these two sequences are over and control flows out, you're going to say data when equal to x, but which x? Is it the data that was assigned or is it the data to assign? So that's an error. And again, the error message is obscure. So when you do an end of two sequences, and you assign two different data's, that's an error.

So again, the solution here is the same as the one for all is the same sequence and I'm assigning a data, same data. And then it doesn't matter which of the two sequences and first as soon as both and control throws out. And then you assign the data or manipulate the data and then assign it to something else. So the point here is that if you do need two different data to be assigned based on two different sequences, and n simply won't work, you'll have to call this in a totally different way. But this this kind of assignment of different data with an end does not work. And to complete the story, what I'm showing here is that this is the same sequence that I showed in the very first slide whether or not we replace or with an ad, and you're applying data in just one of the two sequences.

But in this case, because this is an end, war sequences must end. So as long as you assign data to x in one of the two sequences that will be unknown data, when the control flows out of sequence. Note that when we had a Or here, then this will give an error as I explained in the very first slide. So, these are some detailed nuances that will come in handy when you deep dive deep into usage of local variables. So, that's all thank you for attending the lecture.

Sign Up

Share

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.