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.
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 -j4Create 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.
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.
English documentation · 完整中文文档
- Use Picker: export RTL, clocks and waveforms, internal signals, languages, UVM.
- Look up an interface: CLI, DUT API, troubleshooting.
- Develop Picker: how it works, contributing and tests, documentation and Wiki.
Report issues and suggestions through GitHub Issues. The community QQ group is 600480230. More verification resources are available in the MLVP documentation.