I regularly hear that part of why designers don’t have time for unit testing RTL is because they’re under extreme pressure to deliver RTL to PD. I have very little experience in this direction but I think it’s so PD can get on with floorplanning and <whatever it is they do>. The thing about the early RTL drops is that they almost always happen before any meaningful verification is done. They tend to be very buggy, sometimes borderline non-functional, but they must be useful otherwise the pressure wouldn’t exist.
While I don’t totally understand the reasoning, I do understand the pressure. When a design engineer says there’s no time for unit testing, I shrug my shoulders and sympathize as best I can.
Then I get thinking… what if there’s a way we could relieve the pressure by giving designers a way to deliver buggy, non-functional RTL faster than ever to PD? With the added breathing room, they could add a few unit tests as they code.
This is where Poser comes in.
Poser has been in my mind a while but I haven’t had the time to build it until recently. Using a verilog module declaration and size/flop count estimates, designers can use Poser to generate verilog modules for PD to use in place of real RTL. The idea is the poser modules would be enough for early PD. Then as real RTL modules are built and tested, the poser modules would be removed and replaced by the real thing. There’s an advantage for PD in that an entire poser design could be done just minutes after the skeleton architecture, module IO and connectivity are complete. As I said, there’s also the advantage for RTL designers in that the initial RTL drops are taken care of with much less effort.
That’s the theory. But frankly, I don’t know if this is a good idea or a completely ridiculous idea. With my almost non-existent design/PD experience I figure the only way to find out is to build a tool that does it, then wait and see what people that know what they’re doing decide for me ;).
Poser is real as of about an hour ago. You can find it on github at: https://github.com/nosnhojn/poser (the README is pasted in below). Though it’s basic and likely inadequate, it does work. Put a module in with size and flop estimates and you’ll get a poser module out. If you’ve got a few minutes, please try it and/or forward this post on to anyone else you think may be interested.
More than anything I’ve done in the past, I will need some feedback to decide whether I carry on with this or can it. If you have an opinion – any opinion – please leave it in the comments. Thanks!