abs-tudelft / abs-tudelft/tydi

Flattening when both streams have user and/or keep properties

未关闭
#221 1 条评论 0 个 reaction 已指派 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 摘要。