Conversation
…archy A design is emitted flat, so a base class and a mixed-in trait have no construct of their own to hold an annotation. `@timing.clock` on a base was therefore dropped outright: the design was built at the default clock rate, and the annotation was missing from the elaborated code string. Two independent gaps, neither of which alone fixes the reported case: - core: `Design.initOwner` and `Interface.initOwner` read only the head of the `__clsMeta` chain, dropping every base class's annotations. They now fold the whole chain through `ir.Meta.foldClsChain`. Same-kind signal constraints merge field by field with the most-derived class taking priority, rather than concatenating: every consumer reads them with `collectFirst`, so a duplicate would silently drop the base's fields instead of inheriting them. - plugin: `transformTypeDef` injects `__clsMeta` into classes only, so a trait contributes no entry at all. `clsChainAnnotations` folds into a class's own entry the annotations of the traits it introduces relative to its superclass, keeping each trait's contribution to exactly one entry of the chain, in linearization order. Injecting into traits was rejected: the phase runs after SuperAccessors, and traits in the chain would change `chain.last`, which names a vendor IP's type and a foreign IP's resource path. Caching is unaffected in the unsafe direction and more correct in the other. `dclMeta` carries the annotations and is part of the design load key, so entries stored before this change miss rather than false-hit, and the key only gained information. Code digests hash the compilation unit's source text plus the dep closure, so editing a base's annotation now invalidates the entries that depend on it, same file or not. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The spec looked for `ips/VivadoCounter.tcl`, so it only ever passed where
the file separator is `/`; on Windows it failed with a bare `None.get`.
A `SourceFile.path` is a filesystem path relative to the commit folder and
carries the platform separator: the two IP printers build it with
`Paths.get("ips").resolve(...)`, and `GowinDesigner`, `VivadoSim` and `NVC`
use `separatorChar`. Normalization to `/` belongs at the point a path is
written into a generated script, where it already happens
(`hdlFiles.forceWindowsToLinuxPath`, the literal `source ips/X.tcl` the
project tcl emits). So the printers are right and the expectation was not.
The lookup now builds the path the same way the printer does, and reports
the candidate paths instead of throwing `None.get` when it misses.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ces the script The version banner casing differs between releases: 2023.1 prints "Vivado v2023.1" while 2024.1 prints "vivado v2024.1". The pattern was lowercase-only, so every release before 2024.1 was reported as not installed. Matching case-insensitively covers both, and the same drift is guarded on the xvlog/xvhdl banner. The batch invocation used `-script`, which is undocumented in every Vivado release and absent from the 2023.1 command-line parser. `-source` is the documented option throughout, and the two are behaviorally identical where both exist (same output, same exit codes). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.