-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pack pattern specification behaves incorrectly #85
Comments
I think the bug is that pack pattern's (excluding the special case of carry chains) should only appear on "internal" nets inside a device. It should not be generated for the connections to the top level ports? |
That is one thing which can probably be fixed by adding a port attribute that would allow/disallow annotating the "outward" connection with a pack pattern. However, the second issue is that you assign these attributes not to wires but to nets. A net can span multiple cells making it impossible to explicitly specify a pack pattern on individual cell-to-cell connections. Here is an example:
Its a LUT that drives 2 FFs. The three wires We either need to come up with another way of specifying pack patterns or generate them automatically on all cell-to-cell connections as you have suggested in #75 (comment). Although it is still unclear for me whether the latter approach would be always feasible. |
It seems like the net should be decoded into |
@mithro There is one exception for that which is a carry-chain pack-pattern that actually has to include top-level port. I'd like the auto-detection of pack-patterns to be more controlled hence I suggest that we do that only for nets that have the By default pack-pattern annotation would not include top-level ports unless a port has the There is one issue with the proposed cell-to-cell pack-pattern generation: It won't allow to propagate the pack pattern through different levels of pb_type hierarchy. The propagation would require parsing included XMLs as V2X includes XMLs for child cells. |
@mkurc-ant -- v2x already separates out the carry-chain pack-patterns from the other pack-patterns. For a carry-chain you use the |
@mithro I've just realized that the problem is more complicated than that. Restricting Another thing is that automatic pack-pattern generation for An example case when a pack-pattern must include pb_types from different locations in the hierarchy is model of the QuickLogic EOS-S3
|
@mithro I have an idea how to solve pack-patterns for nets with multiple sinks but it would require more work: In Yosys you can use the |
Rather than putting the |
So Yosys accepts attribute on cell port connection but unfortunately it discards it. This gets parsed but the attribute content isn't stored anywhere:
|
Did you have a patch for adding surelog support for this type of thing? |
I used surelog to get parameters from attributes. I have to check how hard would it be to get attributes from port connections. |
Consider the following module definition:
The pack pattern is intended to be attached only to the
LUT
-FF
connection. But in the end it is also attached to theLUT
and the top-levellut_out
port connection.The problem is that by assigning the
(* PACK *)
attribute to a wire it is effectively assigned to the whole net.The text was updated successfully, but these errors were encountered: