abs-tudelft / abs-tudelft/tydi

Flattening when both streams have user and/or keep properties

オープン
#221 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
🐬 specification
主要言語
Rust
スター
15
フォーク
5
PR マージ指標
30日以内にマージされた PR はありません

説明

## 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.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。