Declarative Language for Geometric Pattern Matching in in VLSI - - PowerPoint PPT Presentation

declarative language for geometric pattern
SMART_READER_LITE
LIVE PREVIEW

Declarative Language for Geometric Pattern Matching in in VLSI - - PowerPoint PPT Presentation

Declarative Language for Geometric Pattern Matching in in VLSI Process Rule le Modeling 2019 International Symposium on Physical Design San Francisco, CA Gyuszi Suto, Geoff S. Greenleaf, Phanindra Bhagavatula, Heinrich R. Fischer Sanjay K.


slide-1
SLIDE 1

Declarative Language for Geometric Pattern Matching in in VLSI Process Rule le Modeling

Gyuszi Suto, Geoff S. Greenleaf, Phanindra Bhagavatula, Heinrich R. Fischer Sanjay K. Soni, Brian H. Miller, Renato F. Hentschke Intel Corporation

2019 International Symposium on Physical Design San Francisco, CA

1

slide-2
SLIDE 2

Regular Expressions

2

[Aa][ie]ro?plane << pattern of interest Airplane aeroplane aerooplane

Which one of these words will match the regular expression?

slide-3
SLIDE 3

Regular Expressions

3

[Aa][ie]ro?plane << pattern of interest Airplane << match aeroplane << match aerooplane << no match A a OR i e OR AND r

  • NULL

OR plane AND OR A a OR i e r OR

  • NULL

plane

assumed spatial adjacency

slide-4
SLIDE 4

Regular Expressions

4

([Aa][ie]ro?plane ){2} << pattern of interest I'm just a aeroplane poor boy and nobody loves me, He's just a poor boy from a poor family, Spare him his life from this monstrosity, Easy come easy go will you let me go, Bismillah, Airplane aeroplane no we will aiirplane not let you go, let him go, Bismillah, we will not let you go, Airplane let him go, Bismillah, we will not airpplan let you go, let me go, (Will not let you go) let me go (never, never let you go) let me Airplane Aeroplane go (never let me go), Oh oh no, no, no, no, no, no, no, Oh mama mia, mama mia, mama mia let me go, Beelzebub has a devil put aside for me for me for me for me aeroplane Airplane for me airplane for you Airplane for them aeroplane.

slide-5
SLIDE 5

Regular Expressions

5

([Aa][ie]ro?plane ){2} << pattern of interest

  • Formal
  • Non-ambiguous
  • Expressive
  • Compact
  • Can be typed in by non-programmers
  • Wouldn’t it be nice to have to a similar language for VLSI layout patterns?

I'm just a aeroplane poor boy and nobody loves me, He's just a poor boy from a poor family, Spare him his life from this monstrosity, Easy come easy go will you let me go, Bismillah, Airplane aeroplane no we will aiirplane not let you go, let him go, Bismillah, we will not let you go, Airplane let him go, Bismillah, we will not airpplan let you go, let me go, (Will not let you go) let me go (never, never let you go) let me Airplane Aeroplane go (never let me go), Oh oh no, no, no, no, no, no, no, Oh mama mia, mama mia, mama mia let me go, Beelzebub has a devil put aside for me for me for me for me aeroplane Airplane for me airplane for you Airplane for them aeroplane.

slide-6
SLIDE 6

Simple Example

6

Type Fuselage Wire layer=metal2 orient=H dy=10 Pattern Airplane AND f Fuselage ; there exists a fuselage match match match match match match

slide-7
SLIDE 7

Simple Example

7

Type Fuselage Wire layer=metal2 orient=H dy=10 Pattern Airplane AND f Fuselage | f.delta(H) in {70, [100, 120], 140} match match match match match no match, does not satisfy the delta(H) constraint guard expression such-that horizontal dimension is in the given interval set 90

slide-8
SLIDE 8

Simple Example

8

Type Wing Wire layer=metal1 orient=V Pattern Airplane AND f Fuselage | f.delta(H) in {70, [100, 120], 140} w Wing | w.delta(V) in [70, 110] w.yc == f.yc f.contains(w, H) match match match match match no match

slide-9
SLIDE 9

Simple Example

9

Type Cockpit Via layer=via2 Pattern Airplane AND f Fuselage | f.delta(H) in {70, [100, 120], 140} w Wing | w.delta(V) in [70, 110] w.yc == f.yc f.contains(w, H) p Cockpit | f.contains(p) NOT w.intersects(p) match match match match match

slide-10
SLIDE 10

Example of a Complete Airplane

10

Type Tail Wire layer=metal3 orient=V Pattern Airplane AND f Fuselage | f.delta(H) in {70, [100, 120], 140} w Wing | w.delta(V) in [70, 110] w.yc == f.yc f.contains(w, H) p Cockpit | f.contains(p) NOT w.intersects(p) t Tail | t.yc == f.yc f.contains(t, H) match match match match match

slide-11
SLIDE 11

Wing With Engines Pattern

11

Type Engine Wire layer=metal4 orient=H Pattern WingWithEngines AND w Wing e1, e2 Engine | w.contains(this, V) this.contains(w, H) e1.generalized_intersection(e2).yc == w.yc match match match

slide-12
SLIDE 12

Glider Pattern

12

Pattern Glider AND a Airplane ; there does not exist a WingWithEngines ; such-that its wing is identical ; with a’s wing NOT w WingWithEngines | w.w == a.w match match

slide-13
SLIDE 13

Jet Pattern

13

Pattern Jet AND a Airplane ; there does exist a WingWithEngines ; such-that its wing is identical ; with a’s wing w WingWithEngines | w.w == a.w match match match

slide-14
SLIDE 14

Jet Pattern, with Windows

14

Type Window Via layer=via1 Pattern Jet AND a Airplane ; there does exist a WingWithEngines ; such-that its wing is identical ; with a’s wing w WingWithEngines | w.w == a.w let windows = Set {Window} | a.f.contains(this) windows.count in [3, 5] match match match

slide-15
SLIDE 15

Jet Pattern, with Windows on Grid

15

Grid g offset=0 period=10 orient=V Pattern Jet AND a Airplane ; there does exist a WingWithEngines ; such-that its wing is identical ; with a’s wing w WingWithEngines | w.w == a.w let windows = Set {Window} | a.f.contains(this) this.xc on g windows.count in [3, 5] match match match

slide-16
SLIDE 16

Formation Pattern

16

Pattern Formation AND a1 Jet a2 {Jet, Glider} ; a2 is Jet or Glider a1.a.p.euclidean_distance(a2.a.p) < 60 match match 55 42

slide-17
SLIDE 17

a.bbox f2.bbox f1.bbox

CloseFormations Pattern

17

Rule CloseFormations AND f1, f2 Formation f1.bbox.intersects(f2.bbox) ; there does not exist an airplane a NOT a Airplane | OR a.bbox.spacing(f1.bbox,V)< 20 a.bbox.spacing(f2.bbox,V)< 20 40 false false false false true true match

slide-18
SLIDE 18

CloseFormations Pattern

18

Rule CloseFormations AND f1, f2 Formation f1.bbox.intersects(f2.bbox) ; there does not exist an airplane a NOT a Airplane | OR a.bbox.spacing(f1.bbox,V)< 20 a.bbox.spacing(f2.bbox,V)< 20 f1.bbox f2.bbox a.bbox false true true true false false no match 18

slide-19
SLIDE 19

Automatic Test Layout Generation

19

Pattern Formation AND a1 Jet a2 Glider a1.a.p.euclidean_distance(a2.a.p) < 60 Rule CloseFormationsSimplified AND f1, f2 Formation f1.bbox.spacing(f2.bbox, V) in [150, 300]

Test Layout Automatically Generated from the rule above

slide-20
SLIDE 20

More Auto-generated Test Layouts

20

slide-21
SLIDE 21

More Auto-generated Test Layouts, cont’d

21

All these test layouts were automatically generated from the rule CloseFormationsSimplified, using mathematical solvers. The number of tests to be generated is an input parameter, can be in the thousands or higher.

slide-22
SLIDE 22

Why?

22

Rule Expert Constraints Rules Written In English Runset Code Not formal Not complete Formal Complete Imperative Not human consumable May not encode

  • riginal intent

Test Layout SAT Solver PD Tool Tech Model

Ambiguous Labor intensive Error-prone

slide-23
SLIDE 23

Future, with the Declarative Language

23

Rule Expert Rule CloseFormationsSimplified AND f1, f2 Formation f1.bbox.intersects(f2.bbox) Runset Code Formal, Complete, Declarative Formal Complete Imperative Encodes

  • riginal intent

Test Layout SAT Solver PD Tool Tech Model

Unambiguous Automated Rigurous

Online Checker

slide-24
SLIDE 24

What

  • A declarative language (think math, expressions, no state-change)
  • Formal (computer readable)
  • Compact, expressive
  • Easy to teach, easy to write, easy to understand
  • Support rules of any complexity, w/o need to modify language
  • Aims to be the de-facto language for rule communication
  • Human to human, human to machine, machine to machine
  • Expansive geometric function set
  • Polygon Set support
  • Advanced features: Patterns, Nested Patterns, Exceptions, Custom

Functions, Grids, Sets, etc.

24

slide-25
SLIDE 25
  • Status. Future Work.
  • Language productized
  • Online checker productized
  • Automatic Test Layout Generator in Alpha release
  • Automatic conversion to PD tool model – proof of concept
  • Language open sourced to Si2 under OPAL name, older version

25

slide-26
SLIDE 26

BACKUP

26

slide-27
SLIDE 27

27

Actual layout used in unit testing patterns presented in this document