Apply the 80/20 principle to efficiently learn SystemVerilog
Milos Mirosavljevic
Head of Engineering and Leadership Development @Vtool | I help engineers become better leaders
I vividly remember my career start as a verification engineer: it was in late 2011, in the cold November (this reminds me of one of my favorite songs by Guns N' Roses), in a pretty office in Belgrade. Pleasant colleagues welcomed me and showed me my office. It was very exciting for me to start the journey of becoming a verification engineer!
Soon after learning basic Linux commands - which at the time made me feel like a hacker with superpowers - and going through basic Specman training, I embarked on the journey to learn System Verilog (SV).
I opened a language manual, and after reading about 20 pages, I was overwhelmed by the amount of information and was thinking to myself, "It will take ages to read and understand this."
Of course, this kind of self-talk is not really helpful, but that's another topic. ??. Eventually, I learned SV, of course, but now, looking back, I would have it much easier if I simply knew what topics to focus on and which ones to simply ignore in the beginning.
Fast forward to today, I can easily identify 20% of the SV language manual that will allow any verification engineer to do 80% of the work. This is the Pareto principle at work, about which I wrote some time ago, and if you are interested, you can read it here.
Below are topics that, in my opinion, are crucial for understanding most of the SV. My experience shows that any junior starting their verification career should focus on these, as understanding them will bring the most value.
After these, I will list "advanced" topics, which can be left aside initially. In other words, reading the System Verilog language manual will become much faster and easier if you follow these steps.
Disclaimer: This is my opinion, of course, and based on my experience in the industry. Somebody else may have different views on how to learn SV most efficiently.
Core concepts to cover 80% of your needs
1. Basic Syntax & Semantics:
2. Procedural Statements:
3. Interfaces and Modports:
4. Testbench Constructs:
5. Object-Oriented Features:
6. Randomization:
7. Assertions:
8. Functional Coverage:
9. Inter-process Communication:
10. File I/O:
These topics encompass the core concepts that are widely used in SV for both design and verification. By focusing on these areas, you can understand and interact with most SV codebases.
领英推荐
Advanced topics needed in 20% of the cases
These encompass more specialized or advanced topics that may not be used as frequently in everyday design or verification but can be crucial in specific scenarios.
1.DPI (Direct Programming Interface):
2. Virtual Interfaces and Classes:
3. Mailboxes and Semaphores:
4. Program Blocks:
5. Gate-Level Simulations:
6. Configurations and Parameterization:
7. Multi-Dimensional Arrays & Queues:
8. Analog Mixed Signal (AMS) Constructs:
9. Property Specification Language (PSL):
10. Specialized System Tasks/Functions:
11. Advanced Synchronization Mechanisms:
These topics, while advanced, can be invaluable in specialized cases. As you grow and interact with various parts of the language or dive deep into certain areas of design or verification, you might encounter and need to understand some of these. However, for a foundational understanding of SystemVerilog, the initial 80% should serve well.
Conclusion
Junior engineers might feel overwhelmed by the vast scope of SystemVerilog, wondering how to learn it best.
The Pareto Principle suggests a satisfying truth: not all aspects of the SV language are created equal in terms of practical utility. In fact, you don't need to know most of it to be able to do the job well.
A focused dive into just 20% of the language's constructs can enable you to navigate and manage a substantial 80% of typical verification tasks.
I know one thing: I wish I had known this when I began my verification journey, as it would have made my learning much easier and straightforward. ??
Senior Staff Design Verification Engineer at Qualcomm
1 年Thats a golden list. I’d put aggregate data types and semaphores higher on the list, and maybe put assertions for later. But more inportantly i’d get a domain specific mentor (aka boss ??) to refine the list so i can quickly practice concepts i learn “on the job”
Recruiting Lead at ContactLoop | Fostering Careers in AI & Tech
1 年Milos Mirosavljevic ?? Awesome!