‘sdf’ Dialect¶
Transient normalized IEEE 1800 Clause 32 data
sdf is a frontend-only interchange form for parsed Standard
Delay Format. It deliberately has no executable semantics or lowering to
Simulation IR: the SystemVerilog frontend must resolve every record into
elaborated Clause 30/31 metadata and erase this dialect before semantic
simulation IR is returned.
Operations¶
sdf.cell (::talos::sdf::SDFCellOp)¶
One CELL and its ordered annotation records
Syntax:
operation ::= `sdf.cell` $cell_type (`instance` $instance^)? (`wildcard` $wildcard^)?
attr-dict-with-keyword $body
Traits: HasParent<SDFDelayFileOp>, NoTerminator, SingleBlock
Attributes:¶
| Attribute | MLIR Type | Description |
|---|---|---|
cell_type | ::mlir::StringAttr | string attribute |
instance | ::mlir::StringAttr | string attribute |
wildcard | ::mlir::UnitAttr | unit attribute |
sdf.delay_file (::talos::sdf::SDFDelayFileOp)¶
One normalized IEEE 1800-2017 Clause 32 delay file
Syntax:
operation ::= `sdf.delay_file` $source `version` $sdf_version attr-dict-with-keyword $body
Traits: IsolatedFromAbove, NoTerminator, SingleBlock
Attributes:¶
| Attribute | MLIR Type | Description |
|---|---|---|
source | ::mlir::StringAttr | string attribute |
sdf_version | ::mlir::StringAttr | string attribute |
design | ::mlir::StringAttr | string attribute |
date | ::mlir::StringAttr | string attribute |
vendor | ::mlir::StringAttr | string attribute |
program | ::mlir::StringAttr | string attribute |
program_version | ::mlir::StringAttr | string attribute |
divider | ::mlir::StringAttr | string attribute |
voltage | ::talos::sdf::DelayValueAttr | empty, scalar, or min:typ:max exact decimal delay value |
process | ::mlir::StringAttr | string attribute |
temperature | ::talos::sdf::DelayValueAttr | empty, scalar, or min:typ:max exact decimal delay value |
timescale | ::talos::sdf::TimeScaleAttr | exact SDF TIMESCALE amount and unit |
sdf.interconnect_delay (::talos::sdf::SDFInterconnectDelayOp)¶
Syntax:
operation ::= `sdf.interconnect_delay` $mode qualified($source_port) `to` qualified($destination_port)
`delays` $delays attr-dict
Traits: HasParent<SDFCellOp>
Attributes:¶
| Attribute | MLIR Type | Description |
|---|---|---|
mode | ::talos::sdf::DelayModeAttr | SDF delay annotation mode |
source_port | ::talos::sdf::PortAttr | one fixed SDF port specification |
destination_port | ::talos::sdf::PortAttr | one fixed SDF port specification |
delays | ::mlir::ArrayAttr | SDF delay-value array |
sdf.label (::talos::sdf::SDFLabelOp)¶
Syntax:
operation ::= `sdf.label` $mode $name `=` qualified($value) attr-dict
Traits: HasParent<SDFCellOp>
Attributes:¶
| Attribute | MLIR Type | Description |
|---|---|---|
mode | ::talos::sdf::DelayModeAttr | SDF delay annotation mode |
name | ::mlir::StringAttr | string attribute |
value | ::talos::sdf::DelayValueAttr | empty, scalar, or min:typ:max exact decimal delay value |
sdf.path_delay (::talos::sdf::SDFPathDelayOp)¶
Syntax:
operation ::= `sdf.path_delay` $mode $kind qualified($input) `to` qualified($output)
(`when` qualified($condition)^)? `delays` $delays attr-dict
Traits: HasParent<SDFCellOp>
Attributes:¶
| Attribute | MLIR Type | Description |
|---|---|---|
mode | ::talos::sdf::DelayModeAttr | SDF delay annotation mode |
kind | ::talos::sdf::PathKindAttr | SDF module-path record kind |
input | ::talos::sdf::PortAttr | one fixed SDF port specification |
output | ::talos::sdf::PortAttr | one fixed SDF port specification |
condition | ::talos::sdf::ConditionAttr | bounded typed postfix SDF conditional expression |
delays | ::mlir::ArrayAttr | SDF delay-value array |
sdf.pulse (::talos::sdf::SDFPulseOp)¶
Syntax:
operation ::= `sdf.pulse` $kind (`from` qualified($input)^)? (`to` qualified($output)^)?
`reject` qualified($reject) `error` qualified($error) attr-dict
Traits: HasParent<SDFCellOp>
Attributes:¶
| Attribute | MLIR Type | Description |
|---|---|---|
kind | ::talos::sdf::PulseKindAttr | path pulse limit kind |
input | ::talos::sdf::PortAttr | one fixed SDF port specification |
output | ::talos::sdf::PortAttr | one fixed SDF port specification |
reject | ::talos::sdf::DelayValueAttr | empty, scalar, or min:typ:max exact decimal delay value |
error | ::talos::sdf::DelayValueAttr | empty, scalar, or min:typ:max exact decimal delay value |
sdf.terminal_delay (::talos::sdf::SDFTerminalDelayOp)¶
Syntax:
operation ::= `sdf.terminal_delay` $mode $kind (qualified($terminal)^)? `delays` $delays attr-dict
Traits: HasParent<SDFCellOp>
Attributes:¶
| Attribute | MLIR Type | Description |
|---|---|---|
mode | ::talos::sdf::DelayModeAttr | SDF delay annotation mode |
kind | ::talos::sdf::TerminalDelayKindAttr | terminal delay record kind |
terminal | ::talos::sdf::PortAttr | one fixed SDF port specification |
delays | ::mlir::ArrayAttr | SDF delay-value array |
sdf.timing_check (::talos::sdf::SDFTimingCheckOp)¶
Syntax:
operation ::= `sdf.timing_check` $kind $events `limits` $limits attr-dict
Traits: HasParent<SDFCellOp>
Attributes:¶
| Attribute | MLIR Type | Description |
|---|---|---|
kind | ::talos::sdf::TimingCheckKindAttr | SDF timing-check record kind |
events | ::mlir::ArrayAttr | SDF timing-event array |
limits | ::mlir::ArrayAttr | SDF delay-value array |
Attributes¶
ConditionAttr¶
Bounded typed postfix SDF conditional expression
Syntax:
#sdf.condition<
::mlir::ArrayAttr, # tokens
bool # inverted
>
Parameters:¶
Parameter |
C++ type |
Description |
|---|---|---|
tokens |
|
|
inverted |
|
ConditionTokenAttr¶
One operand or operator in a postfix SDF condition
Syntax:
#sdf.condition_token<
::talos::sdf::ConditionOpcode, # opcode
::talos::sdf::PortAttr, # port
::mlir::IntegerAttr # constant
>
Parameters:¶
Parameter |
C++ type |
Description |
|---|---|---|
opcode |
|
an enum of type ConditionOpcode |
port |
|
|
constant |
|
DecimalAttr¶
One exact signed decimal spelling
Syntax:
#sdf.decimal<
::mlir::StringAttr # spelling
>
Parameters:¶
Parameter |
C++ type |
Description |
|---|---|---|
spelling |
|
DelayValueAttr¶
Empty, scalar, or min:typ:max exact decimal delay value
Syntax:
#sdf.delay_value<
::talos::sdf::DelayValueForm, # form
::talos::sdf::DecimalAttr, # min
::talos::sdf::DecimalAttr, # typ
::talos::sdf::DecimalAttr # max
>
Parameters:¶
Parameter |
C++ type |
Description |
|---|---|---|
form |
|
an enum of type DelayValueForm |
min |
|
|
typ |
|
|
max |
|
PortAttr¶
One fixed SDF port specification
Syntax:
#sdf.port<
::mlir::StringAttr, # name
bool, # hasIndex
int64_t, # index
::talos::sdf::Edge # edge
>
Parameters:¶
Parameter |
C++ type |
Description |
|---|---|---|
name |
|
|
hasIndex |
|
|
index |
|
|
edge |
|
an enum of type Edge |
TimeScaleAttr¶
Exact SDF TIMESCALE amount and unit
Syntax:
#sdf.timescale<
::talos::sdf::DecimalAttr, # amount
::talos::sdf::TimeUnit # unit
>
Parameters:¶
Parameter |
C++ type |
Description |
|---|---|---|
amount |
|
one exact signed decimal spelling |
unit |
|
an enum of type TimeUnit |
TimingEventAttr¶
One timing-check port event and optional condition
Syntax:
#sdf.timing_event<
::talos::sdf::PortAttr, # port
::talos::sdf::ConditionAttr # condition
>
Parameters:¶
Parameter |
C++ type |
Description |
|---|---|---|
port |
|
one fixed SDF port specification |
condition |
|
Enums¶
ConditionOpcode¶
Postfix SDF condition opcode
Cases:¶
Symbol |
Value |
String |
|---|---|---|
Port |
|
port |
Constant |
|
constant |
Not |
|
not |
And |
|
and |
Or |
|
or |
Xor |
|
xor |
Eq |
|
eq |
Ne |
|
ne |
CaseEq |
|
caseeq |
CaseNe |
|
casene |
DelayMode¶
SDF delay annotation mode
Cases:¶
Symbol |
Value |
String |
|---|---|---|
Absolute |
|
absolute |
Increment |
|
increment |
DelayValueForm¶
Delay value surface form
Cases:¶
Symbol |
Value |
String |
|---|---|---|
Empty |
|
empty |
Scalar |
|
scalar |
Triple |
|
triple |
Edge¶
SDF port edge identifier
Cases:¶
Symbol |
Value |
String |
|---|---|---|
None |
|
none |
Posedge |
|
posedge |
Negedge |
|
negedge |
ZeroOne |
|
01 |
OneZero |
|
10 |
ZeroZ |
|
0z |
ZOne |
|
z1 |
OneZ |
|
1z |
ZZero |
|
z0 |
PathKind¶
SDF module-path record kind
Cases:¶
Symbol |
Value |
String |
|---|---|---|
IOPath |
|
iopath |
Cond |
|
cond |
CondElse |
|
condelse |
PulseKind¶
Path pulse limit kind
Cases:¶
Symbol |
Value |
String |
|---|---|---|
Absolute |
|
pathpulse |
Percent |
|
pathpulsepercent |
TerminalDelayKind¶
Terminal delay record kind
Cases:¶
Symbol |
Value |
String |
|---|---|---|
Port |
|
port |
NetDelay |
|
netdelay |
Device |
|
device |
TimeUnit¶
SDF TIMESCALE unit
Cases:¶
Symbol |
Value |
String |
|---|---|---|
Seconds |
|
s |
Milliseconds |
|
ms |
Microseconds |
|
us |
Nanoseconds |
|
ns |
Picoseconds |
|
ps |
Femtoseconds |
|
fs |
TimingCheckKind¶
SDF timing-check record kind
Cases:¶
Symbol |
Value |
String |
|---|---|---|
Setup |
|
setup |
Hold |
|
hold |
SetupHold |
|
setuphold |
Recovery |
|
recovery |
Removal |
|
removal |
Recrem |
|
recrem |
Skew |
|
skew |
BidirectSkew |
|
bidirectskew |
Period |
|
period |
Width |
|
width |
NoChange |
|
nochange |