Pyuvm

Latest version: v2.9.1

Safety actively analyzes 623677 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

3.0.0.dev0

The UVM Register Access Layer (RAL) comes to pyuvm

**pyuvm** as I originally wrote it did not support the UVM Register Access Layer. Fortunately our wonderful contributors especially EngRaff92 and crteja took a leadership role in bringing RAL to **pyuvm**. This dev release is the first release of that work.

**pyuvm*** 3.0.0 will be the first RAL release. Before we make the release official, I am releasing this dev release so that people can try out the new technology.

Thank you to everyone who contributed to **pyuvm** 3.0.0.dev0!

Details and names are below.

What's Changed
* Automatic string conversion for log messages by timothyscherer in https://github.com/pyuvm/pyuvm/pull/148
* Update example TinyALY to work with Verilator 5 by teja-91 in https://github.com/pyuvm/pyuvm/pull/145
* Add support for uvm_transaction simulation time recording by teja-91 in https://github.com/pyuvm/pyuvm/pull/153
* Replace fork with start_soon in example by crteja in https://github.com/pyuvm/pyuvm/pull/155
* Add implementation for chapter 17 by crteja in https://github.com/pyuvm/pyuvm/pull/154
* Update uvm_reg_map implementation by crteja in https://github.com/pyuvm/pyuvm/pull/157
* Rationalized testing using tox by raysalemi in https://github.com/pyuvm/pyuvm/pull/159
* Use 1800.2 naming convention for all base classes by crteja in https://github.com/pyuvm/pyuvm/pull/162
* Enable CI for ral_dev by crteja in https://github.com/pyuvm/pyuvm/pull/164
* TinyALU reg block implementation by crteja in https://github.com/pyuvm/pyuvm/pull/166
* PR branch to main shared ral_dev branch push by EngRaff92 in https://github.com/pyuvm/pyuvm/pull/168
* Ral dev by EngRaff92 in https://github.com/pyuvm/pyuvm/pull/169
* Add the changes from PR 170 by raysalemi in https://github.com/pyuvm/pyuvm/pull/171
* Generate passthrough interface by crteja in https://github.com/pyuvm/pyuvm/pull/172
* Regenerate reg block using peakrdl-verilog by crteja in https://github.com/pyuvm/pyuvm/pull/173
* Fix pyuvm160, replace all cocotb.fork() with cocotb.start_soon() in all tests by MehanathanS in https://github.com/pyuvm/pyuvm/pull/175
* Fix Typo mentioned in pyuvm121 by MehanathanS in https://github.com/pyuvm/pyuvm/pull/176
* Add default argument to ConfigDB().get() by timothyscherer in https://github.com/pyuvm/pyuvm/pull/178
* Latest ral_dev update by EngRaff92 in https://github.com/pyuvm/pyuvm/pull/186
* Add RAL to pyuvm. This is the primary 3.0 feature by raysalemi in https://github.com/pyuvm/pyuvm/pull/194

New Contributors
* timothyscherer made their first contribution in https://github.com/pyuvm/pyuvm/pull/148
* teja-91 made their first contribution in https://github.com/pyuvm/pyuvm/pull/145
* crteja made their first contribution in https://github.com/pyuvm/pyuvm/pull/155
* EngRaff92 made their first contribution in https://github.com/pyuvm/pyuvm/pull/168
* MehanathanS made their first contribution in https://github.com/pyuvm/pyuvm/pull/175

**Full Changelog**: https://github.com/pyuvm/pyuvm/compare/2.9.1...3.0.0.dev0

2.9.1

Some users want to run with the cocotb 1.8.0.dev0 version. This string caused a `ValueError` in **pyuvm**. Now **pyuvm** ignores the string. `1.8.0.dev0` becomes `1.8.0` when testing the version number in the `pyuvm.test()` decorator.

What's Changed
* Minor edit to tox.ini to support Python 3.6/3.9 by svenka3 in https://github.com/pyuvm/pyuvm/pull/123
* Fix environment variable definition in TinyALU Makefile by miserva in https://github.com/pyuvm/pyuvm/pull/127
* Replace logger name with pathname+lineno in logging messages by miserva in https://github.com/pyuvm/pyuvm/pull/131
* Fix colored output when COCOTB_ANSI_OUTPUT is set 0 by viewtifulRafa in https://github.com/pyuvm/pyuvm/pull/132
* Change "UVMNotImplemented" error to "UsePythonMethod" error when applicable by hzisman in https://github.com/pyuvm/pyuvm/pull/133
* Fix markdown lint errors in main README.md by hzisman in https://github.com/pyuvm/pyuvm/pull/135
* Fix bug regarding cocotb versions that contain a string by raysalemi in https://github.com/pyuvm/pyuvm/pull/142

New Contributors
* viewtifulRafa made their first contribution in https://github.com/pyuvm/pyuvm/pull/132
* hzisman made their first contribution in https://github.com/pyuvm/pyuvm/pull/133

**Full Changelog**: https://github.com/pyuvm/pyuvm/compare/2.9.0...2.9.1

2.9.0

This release supports the new cocotb 1.7.1 release manager. However, the decorator `pyuvm.test()` no longer supports the `TESTCASE` command line argument in cocotb.

`TESTCASE` problem with `pyuvm.test()`

** Thanks to ktbarrett for fixing this**

The `pyuvm.test()` decorator wraps the `cocotb.test()` decorator, but changes to the cocotb regression manager make this approach incompatible with the `TESTCASE` command line argument. There is an easy workaround (which was actually the original conception of using **pyuvm** with **cocotb**.

Typically, one might make a **pyuvm** test like this:


pyuvm.test()
class MyTest(uvm_test):
all the test things


This would create a test object that cocotb would recognize and launch as a test. However, you can no longer put `TESTCASE=MyTest` on the command line in **cocotb** 1.7. Instead, you do the following:


class MyTest(uvm_test):
all the test things

cocotb.test()
async test_run_MyTest(_):
uvm_root().run_test(MyTest)


This will run `MyTest` as you would expect and will work with `TESTCASE=test_run_MyTest`

Fixed bug in objections.

mkorbel1 noticed that **pyuvm** did not handle the case where multiple components had raised and lowered objections to ending the test. **pyuvm** was ending when one `run_phase()` dropped all its objections but not all. He fixed the problem.

Thanks, mkorbel1!

2.8.0

uvm_sequence.get_response()` was searching the response queue using the response ID instead of the transaction ID. Also, the signature was incorrect. This corrects that problem. Also fixed issues in the README.md file with regards to `pyuvm.testI()`

2.7.0

The `pyuvm.test()` decorator

Now you can define a `uvm_test` to be a cocotb test using the `pyuvm.test()` decorator. You no longer need to create a **cocotb** test that calls `uvm_root().run_test(<test class>)`


Now the ALUTest code looks like this:


import pyuvm To use the decorator

pyuvm.test()
class AluTest(uvm_test):
"""Test ALU with random and max values"""

def build_phase(self):
self.env = AluEnv("env", self)

def end_of_elaboration_phase(self):
self.test_all = TestAllSeq.create("test_all")

async def run_phase(self):
self.raise_objection()
await self.test_all.start()
self.drop_objection()



VHDL Example

You can now run the VHDL version of the TinyALU example. Set TOPLEVEL_LANG=VHDL

Bug Fixes

Fixed a bug in `drop_objection()` that would exit prematurely if the same object called `raise_objection()` twice.

2.6.1

This release fixes minor bugs and adds expected UVM functionality:

* Now `do_copy()` works as expected in a `uvm_object` and you can use it to enable `copy()` and `clone()`. **However I recommend using the Python copy module instead**
* `run_test()` did not clear out the singletons properly and was losing the `uvm_root()` singleton
* `run_test()` now sets the default logging level to INFO unless you pass `keep_singletons=True`
* The example had a bug where it did not catch errors. Now it does and demonstrates errors.

Page 1 of 2

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.