My general advice would be not to start with macros.
1. Start with data - what are the entities (bits? gates?), and how do you
represent them? It's ok (actually better) for these to be verbose. Plan for
extension (maps are open, which is why they're so common in representing
data in Clojure).
...which sounds a LOT more complex than it is. I don't care about
simulation--there are great Python-based packages for that. I don't even
care about verification or optimization yet; I just want to generate a data
structure that's exportable in, say, EDN that I can write a parser for in
Pyth