A commonly-used, asynchronous, simplex protocol, with flow control.
putbyte(char d) { wait_until(!ack); data = d; settle(); req = 1; wait_until(ack); req = 0; } | char getbyte() { wait_until(req); char r = data; ack = 1; wait_until(!req); ack = 0; return r; } |
Example, untimed, blocking transactor: converts from transaction to pin-level modelling.
See working SystemC versions in the 'Toy ESL' practical material.