abs-tudelft / abs-tudelft/tydi

Requirements for "last" signalling conflict for Streams with lower complexities and multiple element lanes

Đang mở
#222 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
🐬 specification
Ngôn ngữ chính
Rust
Star
15
Fork
5
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

## Background

Using https://abs-tudelft.github.io/tydi/specification/physical.html#signals

For N lanes, indexed 0 through N-1:
C < 8: [All `last` bits for lanes 0 to N−2 inclusive must be driven low by the source, and may be ignored by the sink.](https://abs-tudelft.github.io/tydi/specification/physical.html#last-signal-description)
C < 8: [All `strb` bits must be driven to the same value by the source. The sink only needs to interpret one of the bits.](https://abs-tudelft.github.io/tydi/specification/physical.html#strb-signal-description) (`strb` effectively doesn't exist, except to indicate empty sequences)
C < 6: [`stai` must always be driven to 0 by the source, and may be ignored by the sink.](https://abs-tudelft.github.io/tydi/specification/physical.html#stai-signal-description) (Elements are aligned to lane 0.)
C < 5: [`endi` must be driven to N−1 by the source when `last` is zero, and may be ignored by the sink in this case.](https://abs-tudelft.github.io/tydi/specification/physical.html#endi-signal-description) (Effectively, all lanes must be used, except when transferring the end of a sequence.)
C < 4: [It is illegal to assert the `last` bit for dimension 0 when the respective data lane is inactive, except for empty sequences.](https://abs-tudelft.github.io/tydi/specification/physical.html#last-signal-description) (Effectively, `last` may not be postponed.)

## Issue

Taking a sequence of 7 elements with dimensionality D = 1 over a physical stream with 4 element lanes and complexity C < 4:

Transfer 1:
`[active, active, active, active`
All lanes must be used, because stai must be 0, and endi must be N-1. (Because C < 5 and C < 6)

Transfer 2:
`active, active, active], inactive` ?
The `data` must be aligned to lane 0 (C < 6: stai must be 0)
The `last` of dimension 0 must be asserted on the third lane. (C < 4: It is illegal to assert the last bit for dimension 0 when the `data` of that lane is inactive.)
But also, the last of any dimension must actually be asserted on the fourth lane? (C < 8: last of lanes 0 through N-2 must be driven low. strb effectively doesn’t exist.)

## Assumed/Suggested Fix

The key inconsistency is derived from:

> C < 4 It is illegal to assert the `last` bit for dimension 0 when the **respective data lane** is inactive, except for empty sequences.

At C < 8, the `last` signal does not refer to specific data lanes, but operates on a per-transfer level. The intent of this rule is to prevent postponing the `last` signal, not to establish requirements for data lanes with respect to the `last` signal. Hence, the rule should probably be changed to say:

> C < 4 It is illegal to assert the `last` bit for dimension 0 when the **transfer data** is inactive, except for empty sequences.

or

> C < 4 It is illegal to assert any last bit when the **transfer** data is inactive, except for empty sequences.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Review the Tydi physical specification sections on signals, focusing on 'last', 'strb', 'stai', and 'endi' for complexities C < 4, C < 5, C < 6, and C < 8. Examine the example with 7 elements, 4 lanes, and D=1 to understand the conflict. The fix involves clarifying the rule about asserting 'last' when data is inactive, likely in the specification document itself.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
rust
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.