ucb-bar / chiseltest

The batteries-included testing and formal verification library for Chisel-based RTL designs.
Other
223 stars 74 forks source link

What are the future use cases of ChiselTest if it is replaced by ChiselSim? #722

Closed rameloni closed 8 months ago

rameloni commented 8 months ago

I have seen that a post about ChiselSim has been recently published. It says that ChiselTest is not longer supported for new chisel features.

So, what are the future developments for chiseltest?

ekiwi commented 8 months ago

It says that ChiselTest is not longer supported for new chisel features.

Well, to clarify: chiseltest no longer gets first-class support from the Chisel core team, meaning that when they add features to Chisel, they won't spend time adding support for them to chiseltest. If people in the community want to try and add support for new Chisel features to chiseltest I would be happy to review your PRs.

The unfortunate reality though is that everyone contributing to chiseltest is doing so unpaid and in their free time, whereas the Chisel core team has almost 10 engineers paid by SiFive. So keeping up with them adding features to Chisel will be a loosing battle. However, if your circuits do not use these new features, then they should still work with chiseltest. Many of the new features in Chisel 6 don't really make sense with chiseltest anyways. Probes and layers are mostly targeting designers that want to verify the resulting SystemVerilog with their own UVM style testbenches. This is important for SiFives business, but not necessarily for open-source designs.

So, what are the future developments for chiseltest?

Whatever the community wants to do. For now, chiseltest has more features like formal verification and multi-threaded testbenches, but new Chisel features aren't yet supported and we are lacking behind on releases (there hasn't been a stable 6.0 release of chiseltest yet).

ekiwi commented 8 months ago

@rameloni : I saw your issue on whether GTKWave supports plugins. You might want to look into Surfer instead: https://gitlab.com/surfer-project/surfer

The code base is much newer and easier to extend. It already has special support for displaying Spade types (Spade is a new hardware language from the same author as Surfer) and I am sure they would be open to adding support for displaying Chisel and maybe also Tydi types.

rameloni commented 8 months ago

@rameloni : I saw your issue on whether GTKWave supports plugins. You might want to look into Surfer instead: https://gitlab.com/surfer-project/surfer

The code base is much newer and easier to extend. It already has special support for displaying Spade types (Spade is a new hardware language from the same author as Surfer) and I am sure they would be open to adding support for displaying Chisel and maybe also Tydi types.

@ekiwi thank you! I will take a look into that, and probably I will ask for opinions from the creator of surfers. If you read the issue on gtkwave you'll probably know what my project consists of. I'm starting now with the actual implementation for the project and the waveform visualisation is something that will come later (I guess in a month). I first need to map and elaborate chisel structures to map them to simulation values.

I also had in mind to create something that will be simulator independent and working with both chiseltest and chiselsim.

ekiwi commented 8 months ago

I also had in mind to create something that will be simulator independent and working with both chiseltest and chiselsim.

Honestly, I would just pick one. Think of your thesis as creating a prototype that demonstrates a concept. Otherwise you will get bogged down in too many engineering-y things that won't matter in the end. Feel free to send an email to my @berkeley.edu email if you want to have a chat about your project. It sounds quite interesting and I might have a lot of knowledge that could help you get started.