I’m thinking of putting my logic synthesis and optimization knowledge to good use by integrating some techniques in CIRCT. I believe that adding such capabilities are very much in scope with the project—giving the willingness to use ABC as a library to map and optimize the
I see two possible paths to get this project going:
Using mockturtle as a library, implement a translations between CIRCT
combdialect and mockturtle’s logic network, in-memory, format. (I’m extremely biased to use mockturtle instead of ABC because I was deeply involved with the development—but I have done my share of contributions to ABC as well)
Implement the techniques to work directly with CIRCT IR. (I’m quite curious to see how these would compare against using the libraries, which have highly specialized data structures)
Either way, I think that the first step requires the ability to isolate the combinational parts in a
hw.module and bit blasting them. Then we can either pass it to a library or apply the techniques directly.
So, I wanted to know if there are people already working on something in these directions. If yes, I can help. Otherwise, I can kickstart this, in which case, I would like to know if there is someone who is willing to guide me a bit. (Basically, I would need someone to help me aligning my design decisions with how things are done in CIRCT and point me to right directions wrt the codebase)