Kuree / pysv

Running Python code in SystemVerilog
BSD 2-Clause "Simplified" License
61 stars 12 forks source link

pysv for python testcases #31

Open mpriestleyidex opened 1 month ago

mpriestleyidex commented 1 month ago

It's a fairly well trodden path to write testcases in C. The simulator calls the C testcase, which in turn interacts with the simulation via various DPI export callbacks. A trivial example is https://www.edaplayground.com/x/4D3t

But of course we'd like to do that in Python, and hide all the C away. pysv looks like it could make this happen, but:

FWIW I've already achieved this using CFFI, but there's a lot of boilerplate and it wasn't easy to work out what to do.

Kuree commented 1 month ago

How do I make a DPI import a context import?

Currently all import statements are hardcoded to non-context import, since I don't have plan to expose svScope to the python land. That being said, I will add a context keyword to enable context keyword code generation.

How do I call my DPI exports from python?

This is not supported in the library yet. I'm working on that branch right now. Will let you know once I'm done with the implementation.

mpriestleyidex commented 1 month ago

I think svScope manipulation would also be necessary. Not all exports would be in the same scope as the context import.

Maybe there's a distinction here between calling exports created by your code generation, and calling pre-existing exports?

Anyway, do what you're planning to do with exports, and we'll go from there.