// output /////////////////////////////////////////////////////////////////// #expect 14 #expect 13 #expect 12 #expect 11 // program ////////////////////////////////////////////////////////////////// #ship debug : Debug #ship memory : Memory #ship fifo : Fifo // dumb configurations debug.in: set ilc=*; recv, deliver; memory.inAddrRead: set ilc=*; recv, deliver; // send write-completion tokens to the fifo output memory.out: set ilc=4; collect, send token to fifo.out; set ilc=*; collect, send to debug.in; memory.inAddrWrite: set word= 1; deliver; memory.inDataWrite: set word= 11; deliver; memory.inAddrWrite: set word= 2; deliver; memory.inDataWrite: set word= 12; deliver; memory.inAddrWrite: set word= 3; deliver; memory.inDataWrite: set word= 13; deliver; memory.inAddrWrite: set word= 4; deliver; memory.inDataWrite: set word= 14; deliver; // when the write-completion tokens accumulate, unleash // the read addresses fifo.out: set ilc=4; recv token; set ilc=4; collect, send to memory.inAddrRead; fifo.in: set word= 4; deliver; set word= 3; deliver; set word= 2; deliver; set word= 1; deliver;