pyralgen
is a lightweight Python-based UVM-RAL code generator. It leverages the
SystemRDL standard to describe
the register specifications and extends the PeakRDL-uvm
framework to include build-in register coverage support.
- UVM-RAL code generation with automatic coverage model insertion
- Template-driven: easily extend or override code templates
- Industry best practices: idiomatic, maintainable SystemVerilog output
- Configurable: enable or disable coverage, factory usage, and more via CLI options
- Python 3.9.21 or later.
Note: pyralgen
is still under active development.
Clone the repository and set up the Python environment :
# Clone project
git clone https://github.com/cirofabianbermudez/pyralgen.git
cd pyralgen
# Bootstrap Python venv and install deps
./scripts/setup/setup_python_env.sh
source .venv/bin/activate
# Verify installation
pyuvcgen -h
The easiest way to use pyralgen
is via the command line tool:
# Generate UVM-RAL
pyralgen -c registers.rdl -o ral_regs_pkg.sv
Inside the top_env.sv
make sure to enable coverage models for register model before
creating the register model and enable sampling of coverage after building the register
model.
class top_env extends uvm_env;
`uvm_component_utils(top_env)
function void top_env::build_phase(uvm_phase phase);
...
if (regmodel == null) begin
// Enable Coverage models for register model <- Add this
uvm_reg::include_coverage("*", UVM_CVR_ALL);
// Create and build the register model
regmodel = ral_reg_block::type_id::create("regmodel", this);
uvm_config_db #(ral_reg_block)::set(this, "", "regmodel", regmodel);
regmodel.build();
// Enable sampling of coverage <- Add this
if (m_config.coverage_enable) begin
regmodel.set_coverage(UVM_CVR_ALL);
end
// Lock and reset
regmodel.lock_model();
regmodel.reset()
end
-
Clone de repository and navigate to its root directory:
git clone https://github.com/cirofabianbermudez/pyralgen.git cd pyuvcgen
-
Create a Python virtual environment and install dependencies:
./script/setup/setup_python_env.sh source .venv/bin/activate
-
Verify installation:
pyuvcgen -h
Contributions, issues, and feature requests are welcome! Feel free to check issues or submit a pull request.