
Welcome and Congratulations for joining this course.
If you know the basic SystemVerilog Constructs and exploring the possibilities of learning advanced concepts of Randomization then you have chosen the right course.
Following are the course outcomes expected after successful completion of this course:
Outcome 1: Ability to justify the need of randomization
Outcome 2: Ability to write code for constrained randomization using various constructs of SystemVerilog
Outcome 3: Ability to improve your verification skills by incorporating facilities of randomization and IPC available in SystemVerilog
Outcome 4: Ability to justify the need for various techniques of IPC and write SystemVerilog code for the same
Outcome 5: Ability to use inter-process communication concepts like Semaphores and Mailboxes
Outcome 6: Ability to simulate SystemVerilog code for randomization and IPC with simulation tool and interpret simulation log
Primary reference book for this course: Chris Spear, “System Verilog for Verification: A guide to learning the testbench language features”, Springer, 2nd Edition
Other references:
1. Stuart Sutherland, Simon Davidmann, and Peter Flake, “System Verilog for Design: A guide to using system verilog for hardware design and modeling”, Springer, 2nd Edition.
2. Ben Cohen, Srinivasan Venkataramanan, Ajeetha Kumari and Lisa Piper, “SystemVerilog Assertions Handbook”, VhdlCohen Publishing, 3rd edition
3. System Verilog Language Reference manual
4. S Prakash Rashinkar, Peter Paterson and Leena Singh, “System on Chip Verification Methodologies and Techniques”, Kluwer Academic, 1st Edition.
Let us start learning.
In this session you have learned what is the difference between directed and random testing.
You can learn more in the following manner:
Consider any design of your choice, for example ethernet switch, MP3 player etc and try to write specifications for the same
For the above design and its specifications try an attempt to write verification plan
If you have successfully solved quiz and above mentioned tasks then confidently you can move to next session
Let's get started next session. Best of luck.
In this session you have learned how to randomize variables in a class. What can be randomize and what can not be randomize is also covered in this section.
You can learn more in the following manner:
Simulate the SystemVerilog codes described in this section in EDA playground
Solve the attached assignments. Write SystemVerilog Code where ever possible and simulate it in EDA Playground.
If you have successfully solved quiz and above mentioned tasks then confidently you can move to next session
Let's get started next session. Best of luck.
In this session you have learned various constraints used for constrained randomization. Concepts like valid constraints, illegal constraints and turning constraints on and off are covered in this section.
You can learn more in the following manner:
Simulate the SystemVerilog codes described in this section in EDA playground
Solve the attached assignments. Write SystemVerilog Code where ever possible and simulate it in EDA Playground.
If you have successfully solved quiz and above mentioned tasks then confidently you can move to next session
Let's get started next session. Best of luck.
In this session you have learned what are various issues in executing threads in Verilog and how control of these threads is enhanced in SystemVerilog by introducing new statements for joining the threads. You also learned how to disable or kill threads in this section.
You can learn more in the following manner:
Simulate the SystemVerilog codes described in this section in EDA playground
Solve the attached assignments. Write SystemVerilog Code where ever possible and simulate it in EDA Playground.
If you have successfully solved quiz and above mentioned tasks then confidently you can move to next session
Let's get started next session. Best of luck.
In this session you have learned how to use 'Event' for Inter-Process Communication.
You can learn more in the following manner:
Simulate the SystemVerilog codes described in this section in EDA playground
Solve the attached assignments. Write SystemVerilog Code where ever possible and simulate it in EDA Playground.
If you have successfully solved quiz and above mentioned tasks then confidently you can move to next session
Let's get started next session. Best of luck.
In this session you have learned what are semaphores and how to use them to avoid resource access contention or deadlocks.
You can learn more in the following manner:
Simulate the SystemVerilog codes described in this section in EDA playground
Solve the attached assignments. Write SystemVerilog Code where ever possible and simulate it in EDA Playground.
If you have successfully solved quiz and above mentioned tasks then confidently you can move to next session
Let's get started next session. Best of luck.
In this session you have learned what are mailboxes and how to use them for data synchronization. Various blocks in testbench generally transfer data between them using mailbox for better synchronisation.
You can learn more in the following manner:
Simulate the SystemVerilog codes described in this section in EDA playground
Solve the attached assignments. Write SystemVerilog Code where ever possible and simulate it in EDA Playground.
If you have successfully solved quiz and above mentioned tasks then confidently you can move to next session
Let's get started next session. Best of luck.
In this session you have learned how to use various IPC techniques to build testbench.
You can learn more in the following manner:
Simulate the SystemVerilog codes described in this section in EDA playground
Solve the attached assignments. Write SystemVerilog Code where ever possible and simulate it in EDA Playground.
If you have successfully solved quiz then confidently you can move to next session
Let's get started next session. Best of luck.
Popular questions generally asked in interviews related to topics covered in this course can be found int resource.
Hope you have enriched your knowledge and enjoyed the course.
Feedback is the valuable source to improve the quality of courses.
Do reach out for any questions/feedback or other learning needs.
I kindly request you to complete the Course Improvement Survey and offer me valuable information for further improvements.
This will help me in addressing needs of learners in a better manner.
Follow this link and it will just take a couple of minutes Course Improvement Survey
Wishing you good luck and all the best
Thanks
VLSI industry requires more verification engineers and less design engineers. Roughly this ratio is around 70 to 30 percent respectively. Because todays designs are not only very complex but also challenging to verify due to technological advancements at all the levels of design. There are many techniques that are required to be known to today's verification engineers. How to design powerful and flexible test bench is always a challenge for verification engineers. SystemVerilog provides various constructs which can ease the job of verification engineer. However one should have basic knowledge about those constructs.
This course is introduced for learners who wants to learn advanced verification techniques of randomization and inter-process communication (IPC) in SystemVerilog. It is assumed that learner is aware of the basic constructs of SystemVerilog and object oriented programming. In this course, students will learn when to do randomization, how to do constraint randomization, what are various inter-process communication techniques etc. Various IPC techniques like events, semaphores and mailboxes will be introduced. Course is being taught with various examples and learner can monitor self-progress by attempting quiz in each section. Students can try to simulate all the examples discussed in the course in EDA Playground and verify the theoretical concepts. After learning this course, students will be able to apply randomization and IPC techniques while designing test bench.