Directory structure for non-dialect code

Hi All-

I’ve got some code (C++ and RTL) which isn’t part of any dialect. It does, however, support the ESI dialect. Specifically, the co-simulation feature. (Actually, it’s not ESI specific.) Where should this code live? I’m assuming along with the ESI dialect code? It just feels strange intermixing non-MLIR code in with all the MLIR includes and libs. Maybe it should live under a new “support/ESI” directory? That feels more appropriate since it is separable.

I could have it live in another repo completely but given that it’s necessary to build a complete ESI product, I would like it to live in the CIRCT repo just to reduce fragmentation. I’d probably have to make a CIRCT submodule in an ESI product repo. That may or may not be appropriate depending on what the goal of CIRCT repo is: to build full products out of or just to host the core MLIR code and tests. I prefer monorepos, but this is a policy which I think warrants discussion.

For reference, this is the cosim code about which I’m talking.

I think it’s completely appropriate for cosim code to live in the repo. I have no concerns with checking this in after review. I would probably check it in under the dialect directory myself.