anchor.diff:  `endif
          );
   
  -   for(Integer i = 0; i < top.indications.length; i=i+1) begin
  -       mkXsimSource(i, top.indications[i].src_rdy, top.indications[i].beat);
  -       rule ind_dst_rdy;
  -           top.indications[i].dst_rdy(True);
  -       endrule
  -   end
  -   for(Integer i = 0; i < top.requests.length; i=i+1) begin
  -       MsgSinkR#(4) sink <- mkXsimSink(i, top.requests[i].dst_rdy);
  -       rule req_src_rdy;
  -           top.requests[i].src_rdy(sink.src_rdy);
  -       endrule
  -       rule req_beat;
  -           top.requests[i].beat(sink.beat);
  -       endrule
  -   end
  +   mapM_(uncurry(mkXsimSource), zip(top.indications, genVector()));
  +   mapM_(uncurry(mkXsimSink), zip(top.requests, genVector()));
   endmodule
  
positive.code: endinterface
  
  import "BVI" XsimSink =
  module mkXsimSink#(Bit#(32) portal, Bool dst_rdy)(MsgSinkR#(4));
      port portal = portal;
      port dst_rdy = dst_rdy;
      method src_rdy src_rdy();
      method beat beat();
      schedule (src_rdy, beat) CF (src_rdy, beat);
  endmodule
  
  module mkXsimTop(Empty);
  
negative.code: // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  // SOFTWARE.
  import Vector            :: *;
  import Portal            :: *;
  import Top               :: *;
  import HostInterface     :: *;
  