Skip to content

SerialAdapter should require minLatency > 0 #88

@mwachs5

Description

@mwachs5

There is a state machine in the Serial Adapter that seems to assume that d_valid will not be asserted on the same cycle as a_valid when writing. It can't accept the ack on the same cycle that the data is being written. The state machine won't advance if this is the case, even though that is valid Tile Link behavior.

There should be a require(outer.node.minLatency > 0) e.g. here to detect this case, or the state machine should be corrected to handle it:

This is my understanding, the state machine won't accept the write ack (by asserting d_ready) unless it's in write ack state:

mem.d.ready := state.isOneOf(s_write_ack, s_read_data)

But it won't go into write-ack state unless the write is actually accepted:

when (state === s_write_data && mem.a.ready) {

But in tile link it is legal to have a_ready = d_ready.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions