‘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:

AttributeMLIR TypeDescription
cell_type::mlir::StringAttrstring attribute
instance::mlir::StringAttrstring attribute
wildcard::mlir::UnitAttrunit 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:

AttributeMLIR TypeDescription
source::mlir::StringAttrstring attribute
sdf_version::mlir::StringAttrstring attribute
design::mlir::StringAttrstring attribute
date::mlir::StringAttrstring attribute
vendor::mlir::StringAttrstring attribute
program::mlir::StringAttrstring attribute
program_version::mlir::StringAttrstring attribute
divider::mlir::StringAttrstring attribute
voltage::talos::sdf::DelayValueAttrempty, scalar, or min:typ:max exact decimal delay value
process::mlir::StringAttrstring attribute
temperature::talos::sdf::DelayValueAttrempty, scalar, or min:typ:max exact decimal delay value
timescale::talos::sdf::TimeScaleAttrexact 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:

AttributeMLIR TypeDescription
mode::talos::sdf::DelayModeAttrSDF delay annotation mode
source_port::talos::sdf::PortAttrone fixed SDF port specification
destination_port::talos::sdf::PortAttrone fixed SDF port specification
delays::mlir::ArrayAttrSDF delay-value array

sdf.label (::talos::sdf::SDFLabelOp)

Syntax:

operation ::= `sdf.label` $mode $name `=` qualified($value) attr-dict

Traits: HasParent<SDFCellOp>

Attributes:

AttributeMLIR TypeDescription
mode::talos::sdf::DelayModeAttrSDF delay annotation mode
name::mlir::StringAttrstring attribute
value::talos::sdf::DelayValueAttrempty, 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:

AttributeMLIR TypeDescription
mode::talos::sdf::DelayModeAttrSDF delay annotation mode
kind::talos::sdf::PathKindAttrSDF module-path record kind
input::talos::sdf::PortAttrone fixed SDF port specification
output::talos::sdf::PortAttrone fixed SDF port specification
condition::talos::sdf::ConditionAttrbounded typed postfix SDF conditional expression
delays::mlir::ArrayAttrSDF 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:

AttributeMLIR TypeDescription
kind::talos::sdf::PulseKindAttrpath pulse limit kind
input::talos::sdf::PortAttrone fixed SDF port specification
output::talos::sdf::PortAttrone fixed SDF port specification
reject::talos::sdf::DelayValueAttrempty, scalar, or min:typ:max exact decimal delay value
error::talos::sdf::DelayValueAttrempty, 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:

AttributeMLIR TypeDescription
mode::talos::sdf::DelayModeAttrSDF delay annotation mode
kind::talos::sdf::TerminalDelayKindAttrterminal delay record kind
terminal::talos::sdf::PortAttrone fixed SDF port specification
delays::mlir::ArrayAttrSDF delay-value array

sdf.timing_check (::talos::sdf::SDFTimingCheckOp)

Syntax:

operation ::= `sdf.timing_check` $kind $events `limits` $limits attr-dict

Traits: HasParent<SDFCellOp>

Attributes:

AttributeMLIR TypeDescription
kind::talos::sdf::TimingCheckKindAttrSDF timing-check record kind
events::mlir::ArrayAttrSDF timing-event array
limits::mlir::ArrayAttrSDF 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

::mlir::ArrayAttr

inverted

bool

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

::talos::sdf::ConditionOpcode

an enum of type ConditionOpcode

port

::talos::sdf::PortAttr

constant

::mlir::IntegerAttr

DecimalAttr

One exact signed decimal spelling

Syntax:

#sdf.decimal<
  ::mlir::StringAttr   # spelling
>

Parameters:

Parameter

C++ type

Description

spelling

::mlir::StringAttr

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

::talos::sdf::DelayValueForm

an enum of type DelayValueForm

min

::talos::sdf::DecimalAttr

typ

::talos::sdf::DecimalAttr

max

::talos::sdf::DecimalAttr

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

::mlir::StringAttr

hasIndex

bool

index

int64_t

edge

::talos::sdf::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

::talos::sdf::DecimalAttr

one exact signed decimal spelling

unit

::talos::sdf::TimeUnit

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

::talos::sdf::PortAttr

one fixed SDF port specification

condition

::talos::sdf::ConditionAttr

Enums

ConditionOpcode

Postfix SDF condition opcode

Cases:

Symbol

Value

String

Port

0

port

Constant

1

constant

Not

2

not

And

3

and

Or

4

or

Xor

5

xor

Eq

6

eq

Ne

7

ne

CaseEq

8

caseeq

CaseNe

9

casene

DelayMode

SDF delay annotation mode

Cases:

Symbol

Value

String

Absolute

0

absolute

Increment

1

increment

DelayValueForm

Delay value surface form

Cases:

Symbol

Value

String

Empty

0

empty

Scalar

1

scalar

Triple

2

triple

Edge

SDF port edge identifier

Cases:

Symbol

Value

String

None

0

none

Posedge

1

posedge

Negedge

2

negedge

ZeroOne

3

01

OneZero

4

10

ZeroZ

5

0z

ZOne

6

z1

OneZ

7

1z

ZZero

8

z0

PathKind

SDF module-path record kind

Cases:

Symbol

Value

String

IOPath

0

iopath

Cond

1

cond

CondElse

2

condelse

PulseKind

Path pulse limit kind

Cases:

Symbol

Value

String

Absolute

0

pathpulse

Percent

1

pathpulsepercent

TerminalDelayKind

Terminal delay record kind

Cases:

Symbol

Value

String

Port

0

port

NetDelay

1

netdelay

Device

2

device

TimeUnit

SDF TIMESCALE unit

Cases:

Symbol

Value

String

Seconds

0

s

Milliseconds

1

ms

Microseconds

2

us

Nanoseconds

3

ns

Picoseconds

4

ps

Femtoseconds

5

fs

TimingCheckKind

SDF timing-check record kind

Cases:

Symbol

Value

String

Setup

0

setup

Hold

1

hold

SetupHold

2

setuphold

Recovery

3

recovery

Removal

4

removal

Recrem

5

recrem

Skew

6

skew

BidirectSkew

7

bidirectskew

Period

8

period

Width

9

width

NoChange

10

nochange