lowRISC / lowRISC/opentitan

[usbdev] Packet reception logic is unaware of Resume Signaling

Open
#24,072 0 comments 0 reactions 1 assignee Claimed by @alees24 View on GitHub
Type:Enhancement Type:FutureRelease
Dominant language
SystemVerilog
Stars
3.6k
Forks
1.1k
Avg merge
2d 22h
Merged PRs (30d)
141

Description

### Description

The packet reception logic in `usb_fs_rx` is unaware of Resume Signaling and in consequence `pkt_start_o` becomes asserted at the start of Resume Signaling (J->K transition), and `pkt_end_o` becomes asserted at the end of the signaling upon entering SE0 for a number of bit intervals.

This also happens when (as in one DV sequence) the USB transitions from a Bus Reset state to Resume Signaling (not something that should happen on a physical USB connection). In this case since the DV sequence has never previously transmitted any valid data, the `full_pid` data in the reception logic holds an invalid PID and leads to a spurious assertion of `rx_pid_err` interrupt state bit/line.

The possible ramifications of this should be considered.

Current assessment: Minor.

It should not cause any issues beyond producing spurious diagnostic reports since `packet_valid_(d|q)` assertion never occurs, so none of the state machines should ever receive an indication of packet reception. It would be worth tidying this up along with the other packet reception changes.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.