PyVSC
12 posts
PyVSC Meets Dataclasses
The last post ended with a number that a solver can't explain. Switching PyVSC to dv-solve took riscv-dv's Python generator from 128 to 474 instructions a second, without changing pygen. Porting pygen's instruction classes to a new front-end took it to 6,553, …
DV-Solve: A Random-First Solver
len 8 -- feeds two front-ends, PyVSC 1.0 (Python, in-process) and Verilator 5.054 (SV randomize()). Both lead to a dark card: dv-solve, same packet both ways: about 140 times the draws per second of Boolector in PyVSC, about 6 times the bundled Bitwuzla in Ve…
Revisiting PyVSC: Where we Stand
PyVSC started in 2019 with a simple goal: make SystemVerilog-style constrained-random stimulus and functional coverage feel as natural in Python as they do in SystemVerilog. I wrote about it in early 2020, in a series that started with [Modeling Random Stimulu…
Re-Evaluating EDA DSLs in the AI Era
I've been looking for a new hardware-centric design language for the last couple of years. Or, more precisely, I've been looking for a hardware-centric design language that would allow me to realize my ideal silicon design flow. - Must support using the same…
PyVSC: Working with Coverage Data
[](/legacy-img/pyvsccoverage-2.png) I’ve been investing some time in documentation updates this weekend, after a couple of [PyVSC](https://github.com/fvutils/pyvsc) users pointed out some under-described aspects of the PyVSC coverage flow. Given that th…
2020: Nights and Weekends Projects in Review
[](/legacy-img/splash-2.png) 2020 in Review Last year was my first year-end blog post looking back at the prior year's projects, and I thought I'd continue the (now) tradition this year. 2020 has definitely been a different year for me, and not just bec…
Arrays, Dynamic Arrays, Queues: One List to Rule them All
[](/legacy-img/splash-13.png) Randomizable lists are, of course, very important in modeling more-complex stimulus, and I've been working to support these within PyVSC recently. Thus far, PyVSC has attempted to stay as close as possible to both the feature…
Python Verification Stimulus and Coverage: Constraints
[](/legacy-img/splashconstraints.png) Over the past few blog posts, we've looked at: - [The fundamentals of modeling stimulus and functional coverage in Python](/blog/modeling-random-stimulus-and-functional-coverage-in-python/) - [Modeling verificati…
Python Verification: Working with Coverage Data
[](/legacy-img/splash-4.png) Before jumping into this week's post, I wanted to offer a bit of an apology to my readers. I recently realized that, despite being a Google property, Blogger only notifies authors of comments for moderation if the author h…
Python Verification Stimulus and Coverage: Functional Coverage
[](/legacy-img/pyvsccoverage.png) In my last two posts ([here](/blog/modeling-random-stimulus-and-functional-coverage-in-python/) and [here](/blog/python-verification-stimulus-and-coverage-data-types/)), I've been talking about modeling random stimulus, …
Python Verification Stimulus and Coverage: Data Types
[](/legacy-img/ModelingRandomStimulusSplash-2.png) In my last post, [Modeling Random Stimulus and Functional Coverage in Python](/blog/modeling-random-stimulus-and-functional-coverage-in-python/), I introduced a Python library for modeling random vari…
Modeling Random Stimulus and Functional Coverage in Python
[](/legacy-img/ModelingRandomStimulusSplash.png) If you've been following the blog over the last year, you've probably noticed that I've spent quite a bit of time over the last year learning and using Python. For several reasons, it's become my new favor…