![]() We’ll see these changes as we work through the testbench. Python, with its lack of typing and dynamic nature, is easier to write than SystemVerilog, and so I refactored much of the UVM to take advantage of Python’s features. ![]() It will use an example testbench for the TinyALU as a path through a UVM testbench written in Python. This article assumes that the reader is familiar with the SystemVerilog version of the UVM. We’ll examine pyuvm 2.0 in this blog post. However, once cocotb released coroutine versions of Python Queues, it became clear that a cocotb-based pyuvm would be much easier to use. The initial release, pyuvm 1.0 implemented the UVM using Python threads. Refactoring the UVM in Python allowed me to simplify the code and take advantage of Python features such as multiple inheritance that made, for example, the _imp classes unnecessary. I use the IEEE UVM standard to create pyuvm, a clean-sheet reimplementation of the UVM from the standard. The standard describes the UVM’s classes and functions and also describes some of the detail of how it has been implemented in SystemVerilog. ![]() ![]() The UVM is completely described in the IEEE 1800.2-2020 standard. Now we are going to look at the next step, the Universal Verification Methodology (UVM) implemented in Python. In our previous two posts in this series on Python as a verification language, we examined Python coroutines and using coroutines to create cocotb bus functional models. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |