llvm / circt

Circuit IR Compilers and Tools
https://circt.org
Other
1.64k stars 285 forks source link

[ESI] RPCServer::registerReadPort provides no way to register callback port #7239

Open mortbopet opened 3 months ago

mortbopet commented 3 months ago

RegisterReadPort currently calls the default underlying connect() function, which forces a port to be a polling port. https://github.com/llvm/circt/blob/34c73c35c89588c84f695c6021f8c74ec6337d2d/lib/Dialect/ESI/runtime/cosim/lib/RpcServer.cpp#L170-L176

There should be some way of registering a callback port, i.e. by providing an optional callback argument to registerReadPort. e.g.:

ReadChannelPort & registerReadPort(const std::string &name, const std::string &type, std::function<bool(MessageData)> callback = nullptr);

teqdruid commented 3 months ago

As part of making RpcServer "just" another backend, I'm planning on refactoring it into a Builder which produces an AcceleratorConnection.