Add Clash.Annotations.SynthesisAttributes.markDebug
(plus an unfortunate amount of baggage)
#2547
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.
I was playing around with constraint files and thought it would be nice if we could have a term level way of annotating signals with synthesis attributes. That is, the
markDebug
proposed in this PR. Unfortunately, I ran into quite a number of things I needed (and "needed") to fix before being able to add the function:shouldwork/
that weren't part ofclash-testsuite
bool
attribute, while onlyboolean
is recognizedTermLiteral (Vec n a)
coreToAttrs
/coreToAttr
. The old implementation tried to be helpful with its error messages, but I didn't feel they helped out very much. Reading the code wasn't as nice as it could be either so...Attr
to work overSymbol
(type level) andString
(term level)annotate
Attr'
now thatAttr
is generalizedannotate
: a way of adding synthesis attributes to signalsmarkDebug
: a convenience function that emits all keep/debug pragmas needed for synthesis tooling (currently verified for Vivado and Quartus)Each of these points correspond to a commit. This PR can be split up into multiple smaller ones if desired.
Still TODO: