KO
|
EN
gitlite — search
Search
#python
#java
#python3
#arduino
#golang
#machine-learning
#rust
#html
#flask
#javascript
#seismology
#nodejs
pyuvm_primer
★ 23
Open GitHub ↗
Examples for using pyuvm
Download README (.md)
Explore Similar Repositories
sms_forwarder_mmcli
:
A simple sms forwarder, forward sms in ModemManager OpenStick随身WIFI的短信转发脚本
OBD-KLINE
:
--ISO14230
frontend
:
No description available.
Tencent_wsdm_cup2023
:
No description available.
MatsubaraFunctions.jl
:
Toolbox for Green's functions on Matsubara grids
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
pyuvm_primer
?
Download (.md)
# Translations - [Russian](README.ru.md) - [English](README.md) # Example of using PyUVM for digital design verification The tested digital RTL design is an isolator (LPI q-channel based) for the AMBA APB3 protocol bus (rtl/apb_isolator_top.sv). **The composition of the PyUVM verification environment:** -apb_iso_base_test - basic test -apb_iso_env_cfg - environment configuration -apb_iso_env - environment -dut_reset_agent - agent for the DUT process -uvm_sequencer -reset_driver -reset_monitor -slv_reset_agent - agent for resetting the slave APB3 -uvm_sequencer -reset_driver -reset_monitor -mst_reset_agent - agent for resetting master APB3 -uvm_sequencer -reset_driver -reset_monitor -lpi_master_agent - LPI_Q channel interface management agent -uvm_sequencer -lpi_master_driver -lpi_monitor -apb_master_agent - APB3 Master bus management agent -uvm_sequencer -apb_master_driver -apb_monitor -apb_slave_agent - APB3 slave bus management agent -apb_slave_sequencer - non-standard sequencer, memory support is implemented -apb_slave_driver -uvm_tlm_fifo -apb_monitor -apb_iso_scoreboard - golden model -apb_iso_cov_collector - functional coverage collector (using cocotb-coverage) **Verification environment scheme on PyUVM:**  Each agent of the verification environment is assigned its own signals in the RTL wrapper (rtl/apb_isolator_top_wrapper.sv). This allows you to instantiate many identical agents in an environment. The names of the signals comparable to them are indexed by the serial number of the agent creation. **Used frameworks in the environment:** | Framework | Link | | ------------- | ------------- | | cocotb | https://github.com/cocotb/cocotb | | PyUVM | https://github.com/pyuvm/pyuvm | | pyvsc (constraint, randomize) | https://github.com/fvutils/pyvsc | | cocotb_coverage (functional coverage) | https://cocotb-coverage.readthedocs.io/en/latest/ | | debugpy (Python debugger in vscode) |https://github.com/microsoft/debugpy | Setup this frameworks using python venv: ```bash [user@pc /../pyuvm_primer]$ python -m venv venv [user@pc /../pyuvm_primer]$ source ./venv/bin/activate [user@pc /../pyuvm_primer]$ pip install -r ./requirements.txt ``` **Documentation of the standarts:** | Standart | Link | | ------------- | ------------- | | APB3 | https://web.eecs.umich.edu/~prabal/teaching/eecs373-f12/readings/ARM_AMBA3_APB.pdf | | LPI q-channel | https://developer.arm.com/documentation/ihi0068/latest/| **Start testing:** ```bash [user@pc /../pyuvm_primer]$ make ``` Available Makefile Options: | Option | Description | | ------------- | ------------- | | SIM | Default - icarus. Support Synopsys, Cadence. With Verilator don't work in this env, because X-state checking. | | TEST_NAME | Default - apb_iso_all_random_reset_test. Available variant - apb_iso_server_test | | PLUSARGS | +APB_ISO_ADDR_WIDTH=32 (APB address width) +APB_ISO_DATA_WIDTH=32 (APB data width) +num_pkts=1000 (iterations in apb_iso_all_random_reset_test) +has_cov=0 (coverage enable) +loglvl=DEBUG(log level) +pydebug=0 (python debug enable ) | | WAVES | Default - 1. Support dump timing diagrams in vcd format | | COCOTB_HDL_TIMEUNIT | Default 1ns| | COCOTB_HDL_TIMEPRECISION | Default 1ps| **Using client-server testing:**  In the test apb_iso_server_test.py the server is instantiated in run_phase. The server is waiting for the client to connect (apb_uart_client.py ) and commands from him. Simple commands such as starting a coroutine reset, random transaction on the master bus, and completing the simulation are implemented. 