abs-tudelft / abs-tudelft/tydi
Flattening when both streams have user and/or keep properties
- Vorherrschende Sprache
- Rust
- Sterne
- 15
- Forks
- 5
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
## Background
When a Stream contains another Stream as its `data`, the [Split function](https://abs-tudelft.github.io/tydi/specification/logical.html#split-function) assigns both the parent and child streams "∅" (empty name), and employs "flattening" to combine their `throughput`, `synchronicity`, `dimensionality` and `direction`.
When a Stream has no element-manipulating data (`data` is either Null or a Stream) and no `user` property, it is discarded from the result. In effect, this creates a new physical stream with the original child Stream's `data`, combined with of the parent Stream's properties.
## Issue
When `keep` (x) is true and/or `user` (T_u) is non-Null, the parent Stream must be retained.
If a parent Stream has `keep`=true and/or a non-Null `user` property, both Streams are still assigned "∅", but the parent Stream will conflict with the child Stream. Implementing the result of the Split function as a map in code, this means that either the child Stream simply replaces the parent Stream altogether (thereby losing the parent Stream's `user` property), or the Split function fails.
However, this behavior is not described in the specification, it only specifies that the names resulting from the Split function "**are** case-insensitively **unique**, emptyable strings consisting of letters, numbers, and/or underscores, not starting or ending in an underscore, and not starting with a digit" (emphasis mine).
## Assumed/Suggested Fix
Right now, on an implementation level: The Split function should fail when it encounters a situation where two physical Streams have identical names.
On a specification level: It should be illegal for nested Streams (Streams which only have another Stream type as their `data`) to have a `keep` and/or `user` property on more than one of these Streams, and "flattening" should incorporate the singular `user` property into the resulting physical stream.
Alternatively, Streams should have a non-empty `name` property, as this will avoid conflicts in the result of the Split function.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Bewertung
Dieses Issue wurde noch nicht bewertet.