Introduce IEEE Std 1497-2001 Standard Delay Format (SDF) parsing #1083
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.
Good day everyone! In order to be able to support restrictions from 32 LRM section and annotate the
SystemVerilog
code using SDF (the last and only standard isIEEE Std 1497-2001
) constructs I implemented theLL(2)
parser using theslang
infrastructure.I encourage testing on individual
SDF
files for feedback, as the current implementation has been tested on various open-sourceSDF
files.The new
--sdf
option in the slang infrastructure allows for feeding slang one or moreSDF
files and also directory withSDF
files. The implementation supports the fullSDF
grammar (including the syntax of conditional and timing checkSDF
expressions which is significantly differs fromSystemVerilog
expressions), handling all possible syntax errors efficiently. Example of usage:What has not been done at the moment:
SystemVerilog
nodes of theslang
AST - but it questionable)SDF DELAY
s constructs - is it necessary to directly put values from SDF toSystemVerilog specify
AST? or it should be done in simulation (possibly using some pseudoSDF
annotator - which defined at LRM 32.3 section), and nothing should be changed in AST? LRM specifies no possible restrictions withSDF DELAY
sSDF TIMINGCHECK
s constructs -slang
timing check system tasks currently are not annotated - it is future workSDF LABEL
s constructs - same questions asSDF DELAY
section - is it need to propagate it's values directly in AST?$sdf_annotate
processing - is required or not?I suppose
SDF TIMINGENV
constructs should be ignored byslang
as it said at LRM 32.3 section:An opened question pertains to annotating unique delays between source/load pairs using the
INTERCONNECT
construct. How this warning should be processed, either by slang or theSDF
annotator, remains unclear: