Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
PyUVM Series Part 3 : Python OOPS fundamentals
Rating: 3.8 out of 5(2 ratings)
97 students

PyUVM Series Part 3 : Python OOPS fundamentals

Step by Step Guide from Scratch
Created byKumar Khandagle
Last updated 5/2024
English
English

What you'll learn

  • Fundamentals of Classes
  • Class Methods
  • Inter-process communication
  • Randomization
  • Building verification environment in Python

Course content

6 sections74 lectures3h 12m total length
  • Fundamentals of Class6:46

    Explore the fundamentals of class-based verification in Python, building generator, driver, monitor, and scoreboard components, and design transaction classes to apply random stimuli and verify DUT responses.

  • Creating class p15:35

    Develop object-oriented fundamentals in Python for PyUVM by creating independent Generator, Driver, and comparator classes, using class blueprints and instances to manage stimuli, responses, and golden data comparisons.

  • Code0:03
  • Creating class p24:08

    See how each class instance has a unique memory location, then create independent 4-bit input and output data members, and access or update them with the dot operator.

  • Code0:05
  • Creating Class p36:26

    Learn how to initialize class data members using the __init__ dunder method, access them with self, and provide required or default arguments to create flexible Python objects.

  • Code0:08
  • Understanding self p15:30

    Understand how self identifies a class instance and enables per-instance data access and methods, demonstrated by a First class with a constructor and print methods for F1 and F2.

  • Understanding self p23:40

    Explore how self stores the instance address in Python, enabling unique access to data members and methods, and why the first argument self is mandatory in method definitions.

  • Code0:11
  • Double Underscore Methods6:44

    Define and implement the __eq__ double underscore method to compare class instances, using isinstance and data member equality, with examples of Temp instances T1 and T2.

  • Code0:13
  • User defined methods in Class5:05

    Learn to add user-defined methods to a class, update data members with set_a and set_b, and access values with get_a and get_b using self attributes.

  • Code0:21
  • Deleting Class0:48

    Delete an instance of a class with the del keyword, then verify the deletion by encountering a 'T1' is not defined error when calling its methods.

  • Code0:21
  • A11
  • A12
  • A13
  • A14

Requirements

  • Fundamentals of Digital Electronics and Verilog
  • Completion of Python for VLSI Engineer P1, and P2 Course or Basics of Python & COCOTB

Description

This comprehensive course is designed to empower software engineers, developers, and verification engineers with advanced Python programming skills for effective Object-Oriented Programming (OOP) and hardware verification tasks. Participants will delve into the fundamentals of Python and explore advanced concepts, including classes, inheritance, copy mechanisms, randomization, inter-process communication with queues, and task synchronization with events. The course will also provide hands-on experience in building a verification environment, encompassing generators, drivers, monitors, and scoreboards for robust Design Under Test (DUT) verification.

Key Topics Covered:

  1. Object-Oriented Programming (OOP) in Python:

    • Understanding classes and objects

    • Encapsulation, inheritance, and polymorphism

    • Method overriding and operator overloading

  2. Copy Mechanisms:

    • Shallow and deep copy in Python

    • Best practices for efficient copying

    • Copying complex data structures

  3. Randomization Techniques:

    • Utilizing the 'random' module for pseudo-random number generation

    • Randomizing data for diverse test scenarios

    • Seed management for reproducibility

  4. Inter-Process Communication:

    • Introduction to Python multiprocessing

    • Communication using queues

    • Synchronization and data exchange between processes

  5. Task Synchronization:

    • Implementation of event-driven synchronization

    • Coordinating tasks with events

    • Avoiding race conditions and deadlocks

  6. Verification Environment:

    • Designing a verification environment for a Design Under Test (DUT)

    • Developing generators for stimulus creation

    • Building robust drivers for interfacing with the DUT

    • Monitoring and analyzing DUT behavior with monitors

    • Scoreboarding techniques for result verification

  7. Hands-On Projects:

    • Participants will engage in practical exercises and projects throughout the course, applying the learned concepts to real-world scenarios. This will include creating a complete verification environment for a sample DUT, incorporating OOP principles, copy mechanisms, randomization, and inter-process communication.

By the end of this course, participants will possess advanced Python skills, enabling them to design and implement efficient and scalable verification environments for hardware designs, while incorporating best practices in OOP and software development. This course is ideal for professionals working in fields such as hardware verification who want to enhance their Python proficiency for building Class based Verification environment in Python.

Who this course is for:

  • If you're excited about Python and DUT verification with Python, this is the place for you.