#pragma once #include #include #include "infra/sim.h" namespace infra { template struct shared_bus : public sim { std::array, peers> peerp; port *outp = nullptr; void clock() { for (unsigned int i = 0; i < peers; ++i) { if (peerp[i].can_read()) { assert(outp->can_write()); outp->write(peerp[i].read()); } } } }; }