Skip to content
XS-MLVPPublic

About

Pick your favorite language to verify your chip.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

97 stars

Watchers

2 watching

Forks

Picker

PyPI Python PR CI License Docs GitHub Stars

English | 中文

Picker exports Verilog/SystemVerilog designs as Python, C++, Java, Scala, Go, or Lua modules, so you can write hardware tests in a familiar language. Tests can read and write signals, advance clocks, check results, and save waveforms. Picker also generates transaction bridges between Python and UVM.

The Python distribution is uc-picker; the command remains picker. It depends on uc-xcomm and SWIG.

Get started

Install Picker, then follow the adder tutorial to run your first test. From the repository root, export a Python module:

picker export example/Adder/Adder.v --sname Adder --lang python \
    --sim verilator --tdir build/docs-adder/Adder --autobuild false
make -C build/docs-adder/Adder -j4

Create a test in the generated package's parent directory to assign inputs by port name and check outputs. The tutorial includes a complete script and expected results.

VCS integration

Generated Python DUT classes expose SIMULATOR (for example, DUTAdder.SIMULATOR == "vcs") and GetSimulator(). This identifies the export backend, not a runtime backend switch.

VCS waveform paths must use .fsdb; use --verdi-mode modern with current Verdi releases. VCS source builds enable -kdb by default so the generated .daidir database can be opened in Verdi. Imported precompiled libraries must supply their own matching debug database. Finish() finalizes simulation and coverage in a forked child and waits for it, allowing Python to continue pytest teardown and report generation.

Coverage-enabled VCS exports include coverage/coverage, a standalone UCAPI query executable using schema version 1, without xcomm coverage-client bindings. GetCoveragePath() returns the actual VDB; SetCoverage() selects a testdata name. Finalization uses a database lock before the snapshot can be queried. Regenerate and rebuild existing DUT packages after upgrading; installing Picker or updating only the Python reporter does not update their compiled libraries.

Documentation

English documentation · 完整中文文档

Community

Report issues and suggestions through GitHub Issues. The community QQ group is 600480230. More verification resources are available in the MLVP documentation.

Code of conduct · Security reports · License

About

Pick your favorite language to verify your chip.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

97 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages