Specialization Oriented Programming Jim Newton, VCAD, Cadence - - PowerPoint PPT Presentation

specialization oriented programming
SMART_READER_LITE
LIVE PREVIEW

Specialization Oriented Programming Jim Newton, VCAD, Cadence - - PowerPoint PPT Presentation

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Specialization Oriented Programming Jim Newton, VCAD, Cadence Design Systems 29th July 2007 Jim Newton, Specialization Oriented Programming Overview


slide-1
SLIDE 1

Overview Generic Specializer Examples Other specializers Meta programming Conclusion

Specialization Oriented Programming

Jim Newton,

VCAD, Cadence Design Systems

29th July 2007

Jim Newton, Specialization Oriented Programming

slide-2
SLIDE 2

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Introduction Development Flow Specialization

Overview

◮ Introduction ◮ Definition of SOP ◮ Examples of generic specializer in application

programming.

◮ Developing a generic specializer, meta programming. ◮ Conclusion

Jim Newton, Specialization Oriented Programming

slide-3
SLIDE 3

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Introduction Development Flow Specialization

Background

◮ What is SKILL/SKILL++? ◮ What is VCLOS - VCAD Common Lisp-like Object

System?

Jim Newton, Specialization Oriented Programming

slide-4
SLIDE 4

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Introduction Development Flow Specialization

Development of VCLOS

◮ Multiple dispatch ◮ Meta-object protocol ◮ Method parameter precedence ◮ Method qualifiers: before, after, around ◮ Generic specializers

◮ Equivalence specializers ◮ Domain/Application specific specializers Jim Newton, Specialization Oriented Programming

slide-5
SLIDE 5

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Introduction Development Flow Specialization

Specialization

Jim Newton, Specialization Oriented Programming

slide-6
SLIDE 6

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Introduction Development Flow Specialization

Specialization in CLOS

(defmethod foo ((v1 LIST) (v2 SYMBOL)) ...) (defmethod foo ((v1 (EQL nil)) (v2 (EQL t))) ...)

Jim Newton, Specialization Oriented Programming

slide-7
SLIDE 7

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Introduction Development Flow Specialization

Domain Specific Specializers

We would like to be able to specify methods as follows:

(defmethod foo ((v1 (SPEC1 data1)) (v2 (SPEC2 data2))) ...) (defmethod foo ((v1 (eql nil)) (v2 (spec1 data1))) ...)

For example:

(defmethod foo ((v1 (EQUAL (1 2 3))) (v2 (? oddp))) ...)

Jim Newton, Specialization Oriented Programming

slide-8
SLIDE 8

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Introduction Development Flow Specialization

Problem solving with various OOP approaches:

◮ Class – classes encapsulate the problem. Objects are actors

manipulating data.

◮ Generic Function – method definitions determine:

◮ what is called? ◮ in which order?

◮ Specialization Oriented – domain specific specializers

allowing methods to elegantly specify applicability.

Jim Newton, Specialization Oriented Programming

slide-9
SLIDE 9

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Introduction Development Flow Specialization

Challenges to implementing specializers

◮ Identify syntax of a specializer name in a defmethod form. ◮ Determine which methods are applicable ◮ Determine order of specificity ◮ Provide acceptable performance (memoization)

Jim Newton, Specialization Oriented Programming

slide-10
SLIDE 10

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Code Walker Symbols QUOTE Bindings

Examples

Jim Newton, Specialization Oriented Programming

slide-11
SLIDE 11

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Code Walker Symbols QUOTE Bindings

Example Application Development

Develop a program which will walk Scheme source–warning about unused and unbound variable references.

Jim Newton, Specialization Oriented Programming

slide-12
SLIDE 12

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Code Walker Symbols QUOTE Bindings

Traversing Lists

Lists are traversed with updated call-stack.

(defmethod Walk ((expr list) env call-stack) (let ((call-stack (cons expr call-stack))) (dolist (sub expr) (Walk sub env call-stack))))

All non-lists are ignored by default.

(defmethod Walk ((expr t) env call-stack) nil)

Jim Newton, Specialization Oriented Programming

slide-13
SLIDE 13

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Code Walker Symbols QUOTE Bindings

Symbols

Symbols are treated as variable references. Unbound variables are reported.

(defmethod Walk ((var symbol) env call-stack) (if-let (binding (find-binding env var)) (push call-stack (used binding)) (format t "unbound: ~A: ~A~%" var call-stack)))

Jim Newton, Specialization Oriented Programming

slide-14
SLIDE 14

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Code Walker Symbols QUOTE Bindings

Quoted lists

CONS specializer prunes traversal into quoted lists.

(defmethod Walk ((form (CONS (eql QUOTE))) env call-stack) nil)

Jim Newton, Specialization Oriented Programming

slide-15
SLIDE 15

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Code Walker Symbols QUOTE Bindings

Syntax Examples

◮ (CONS number)

◮ list whose first element is a number

◮ (CONS (eql 42))

◮ list whose first element is 42

◮ (CONS (CONS (eql 42)))

◮ list whose first element is a list whose first element is 42 Jim Newton, Specialization Oriented Programming

slide-16
SLIDE 16

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Code Walker Symbols QUOTE Bindings

Building variable bindings

◮ CONS specializer recognizes LAMBDA expression ◮ parse LAMBDA form ◮ parse lambda-list ◮ traverse body of LAMBDA with extended environment ◮ report unused variables

Jim Newton, Specialization Oriented Programming

slide-17
SLIDE 17

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Code Walker Symbols QUOTE Bindings

Lambda expressions

(defmethod Walk ((form (CONS (eql LAMBDA))) env call-stack) ... )

Jim Newton, Specialization Oriented Programming

slide-18
SLIDE 18

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Code Walker Symbols QUOTE Bindings

Parse the lambda form and lambda-list

(defmethod Walk ((form (CONS (eql LAMBDA))) env call-stack) >> (destructuring-bind (_ lam-list &rest body) form >> (let ((bindings (derive-bindings lam-list))) ... )))

Jim Newton, Specialization Oriented Programming

slide-19
SLIDE 19

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Code Walker Symbols QUOTE Bindings

Traverse body of lambda with extended environment

(defmethod Walk ((form (CONS (eql LAMBDA))) env call-stack) (destructuring-bind (_ lam-list &rest body) form (let ((bindings (derive-bindings lam-list))) >> (let ((env (extend-env bindings env)) >> (call-stack (cons form call-stack))) >> (dolist (form body) >> (Walk form env call-stack))) ... ))))

Jim Newton, Specialization Oriented Programming

slide-20
SLIDE 20

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Code Walker Symbols QUOTE Bindings

Report unused variables

(defmethod Walk ((form (CONS (eql LAMBDA))) env call-stack) (destructuring-bind (_ lam-list &rest body) form (let ((bindings (derive-bindings lam-list))) (let ((env (extend-env bindings env)) (call-stack (cons form call-stack))) (dolist (form body) (Walk form env call-stack))) >> (dolist (bind bindings) >> (unless (used bind) >> (format t "unused: ~A: ~A~%" >> var call-stack))))))

Jim Newton, Specialization Oriented Programming

slide-21
SLIDE 21

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Extension

  • bjType

Residual class

Analogous to CONS specializers

Using the Cadence IC design software, the SKILL programmer

◮ encounters non-OO objects ◮ needs to describe their applicablity declaratively

The VCLOS system provides a variety of specializers which enable the programmer to use

◮ objType specializers ◮ residual class specializers

Jim Newton, Specialization Oriented Programming

slide-22
SLIDE 22

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Extension

  • bjType

Residual class

CDBA Schema

group < Any Instance > pin term cellView Cellview Master

cellView

signals terminals instHeaders instances mosaics shapes groups nets terminal net pin subnet net

pin

instPin instTerm fig pins

net

terminal fig net

fig

pin signals

instPin

pin net

instTerm

instTerm instPins

instHeader

variant instance master inst mosaic instanceList

mosaicInst

personality

shape

layerPurposePairs

LP

groupMember

  • bject

dbObject groupMember prop

  • bject

prop term instTerms instHeader cellView group cellView cellView cellView cellView shapes

mosaic

cellView net

signal

cellView memNets memTerms

terminal

cellView cellView groupMember

Jim Newton, Specialization Oriented Programming

slide-23
SLIDE 23

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Extension

  • bjType

Residual class

  • bjType specializers

◮ We want to declare (generic) functions that dispatch based

  • n design component: shapes, nets, terminals, etc.

◮ Cadence database (CDB) is not object oriented, but offers

introspective capabilities.

◮ The objType specializer allows method applicability

according to the types of object.

Jim Newton, Specialization Oriented Programming

slide-24
SLIDE 24

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Extension

  • bjType

Residual class

Residual class specializers

◮ Residual class specializers are useful for database objects

that have been created in the persistent CDB by object

  • riented programs.

◮ They determine applicability not on the object’s class, but

rather on the policy class that was used to create the

  • bject.

◮ This is useful because CDB cannot maintain a link to the

policy object–which might be out of scope

◮ It could have been garbage collected ◮ or live in a completely different UNIX process. Jim Newton, Specialization Oriented Programming

slide-25
SLIDE 25

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Meta Programming

Jim Newton, Specialization Oriented Programming

slide-26
SLIDE 26

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Defining the SOP generic function

To define a new type of specializer, the programmer must use the VCLOS MOP to define several things:

◮ How to recognize the syntax of a specializer in a method

declaration.

◮ How to compare (sort in order) this type of specializer to

  • ther specializers.

◮ How to compare two specializers of the same type. ◮ How to determine whether an object matches the

specializer.

Jim Newton, Specialization Oriented Programming

slide-27
SLIDE 27

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Define the specializer class

(defclass SopConsSpecializer (ClosSpecializer) ((enclosedSpecializer @initarg enclosedSpecializer @reader SopGetEnclosedSpecializer @writer SopSetEnclosedSpecializer) ...))

Jim Newton, Specialization Oriented Programming

slide-28
SLIDE 28

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Define the generic function meta-class

(defclass SopConsGenericFunction (ClosSpecGenericFunction) ())

Jim Newton, Specialization Oriented Programming

slide-29
SLIDE 29

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Establish the order of specificity

  • 1. ClosEqvSpecializer (most specific)
  • 2. SopConsSpecializer
  • 3. ClosClassSpecializer (least specific)

(defmethod ClosAvailableSpecializers ((gf SopConsGenericFunction)) ’(ClosEqvSpecializer SopConsSpecializer ClosClassSpecializer))

Jim Newton, Specialization Oriented Programming

slide-30
SLIDE 30

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Identify CONS syntax in ClosDefMethod

(ClosDefMethod foo ((v (cons number))) ...) (ClosDefMethod foo ((v (cons (eqv 42)))) ...) (foo (list 42))

Jim Newton, Specialization Oriented Programming

slide-31
SLIDE 31

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Identify CONS syntax in ClosDefMethod

Return TRUE if specializer_name is something like (cons number)

(defmethod ClosMatchesSpecializerSyntaxP ((specializer SopConsSpecializer) specializer_name) (and (listp specializer_name) (eq ’cons (car specializer_name)) (cdr specializer_name) (null (cddr specializer_name)) (ClosNameToSpecializer (ClosGetGenericFunction specializer) (cadr specializer_name))))

Jim Newton, Specialization Oriented Programming

slide-32
SLIDE 32

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Determining applicablity of CONS specializer

(ClosDefMethod foo ((v (cons number))) ...) (ClosDefMethod foo ((v (cons (eqv 42)))) ...) (foo (list 42))

Jim Newton, Specialization Oriented Programming

slide-33
SLIDE 33

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Determining applicablity of CONS specializer

(defmethod ClosArgMatchesSpecializerP ((spec SopConsSpecializer) arg) (and (dtpr arg) (ClosArgMatchesSpecializerP (SopGetEnclosedSpecializer spec) (car arg))))

Jim Newton, Specialization Oriented Programming

slide-34
SLIDE 34

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Comparing two CONS specializers

(ClosDefMethod foo ((v (cons number))) ...) (ClosDefMethod foo ((v (cons (eqv 42)))) ...) (foo (list 42))

Jim Newton, Specialization Oriented Programming

slide-35
SLIDE 35

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Comparing two CONS specializers

(defmethod ClosCmpLikeSpecializers ((spec1 SopConsSpecializer) spec2 gf param spec) ... (ClosCmpSpecializers gf (SopGetEnclosedSpecializer spec1) (SopGetEnclosedSpecializer spec2) param spec))

Jim Newton, Specialization Oriented Programming

slide-36
SLIDE 36

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Specializer Comparitors

Skipping lots of details, comparitors are needed to aid in memoization.

Jim Newton, Specialization Oriented Programming

slide-37
SLIDE 37

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

Example Comparator

Application:

(foo (list 1))

Most specific:

(ClosDefMethod foo ((bar (eqv (1)))) ...)

Applicable?

(ClosDefMethod foo ((bar (cons number))) ...)

Jim Newton, Specialization Oriented Programming

slide-38
SLIDE 38

Overview Generic Specializer Examples Other specializers Meta programming Conclusion SOP Flow Specializer Class Generic Function Methods Comparators

ClosDefComparator

(ClosDefComparator ((meth_spec SopConsSpecializer) (arg_spec ClosEqvSpecializer)) (and (dtpr (ClosGetData arg_spec)) (ClosArgMatchesSpecializerP (SopGetEnclosedSpecializer meth_spec) (car (ClosGetData arg_spec)))))

Jim Newton, Specialization Oriented Programming

slide-39
SLIDE 39

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Goals Summary

Goals of VCLOS

SKILL should include an object system which:

◮ provides features of CLOS, ◮ interfaces to existing SKILL++ programs ◮ enables OO techniques on pre-existing non-OO systems ◮ is extensible for IC application programming

Jim Newton, Specialization Oriented Programming

slide-40
SLIDE 40

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Goals Summary

Dual Approaches

Complicated problems are simplified by making appropriate abstractions.

◮ Mountain to Mohammad approach

◮ Make domain data conform to the computer language

model.

◮ Mohammad to the mountain approach

◮ Enable the language to express truths about the data. Jim Newton, Specialization Oriented Programming

slide-41
SLIDE 41

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Goals Summary

Summary

SOP in the form of extensible specializers allows programmers to use object oriented techniques on data that does not fit traditional object oriented views.

Jim Newton, Specialization Oriented Programming

slide-42
SLIDE 42

Overview Generic Specializer Examples Other specializers Meta programming Conclusion Goals Summary

Questions

Questions? Suggestions? Complaints?

Jim Newton, Specialization Oriented Programming