digraph rom_sd { Reset [shape = doublecircle, label = "RESET\nbuffer_half = 0\nrom_address = 0\nrom_enable = 1\nbuf.addr=0\nready=0"]; node [shape = circle]; Delay [label="DELAY\nrom_address++"]; WriteBuf [label="WRITEBUF\nbuf.ena=1\nbuf.data=rom_data\nbuf.addr++\nrom_addr++"]; EndWrite [label="ENDWRITE\nbuf.ena=1\nbuf.data=rom_data\nbuf.addr++\nready=1"]; Wait [label = "WAIT\nbuf.ena=0"]; Reset -> Reset [label="reset"]; Reset -> Delay [label="!reset"]; Delay -> WriteBuf; WriteBuf -> WriteBuf [label="buf.addr < 1023"] WriteBuf -> EndWrite [label="buf.addr == 1023"] EndWrite -> Wait; Wait -> Wait [label = "buffer_half == buf.address_half"] Wait -> Delay [label = "buffer_half != buf.address_half"] }