31
cs7120 (Prasad) L23-1-Applications 1 Applications [email protected] http://www.knoesis.org/ tkprasad/

Cs7120 (Prasad)L23-1-Applications1 Applications [email protected]

Embed Size (px)

Citation preview

Page 1: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

cs7120 (Prasad) L23-1-Applications 1

Applications

[email protected]

http://www.knoesis.org/tkprasad/

Page 2: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

cs7120 (Prasad) L23-1-Applications 2

VHDL-Parser Pretty-Printer System

[email protected]

http://www.knoesis.org/tkprasad/

Page 3: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

URLs

• Online Parser Documentation– http://www.cs.wright.edu/~tkprasad/VHDL/VH

DL-AMS/START.html

• Public Distribution– http://www.cs.wright.edu/~tkprasad/VHDL/VH

DL-AMS.zip

cs7120 (Prasad) L23-1-Applications 3

Page 4: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

cs7120 (Prasad) L23-1-Applications 4

A Meta-Interpreter for circuit Extraction

[email protected]

http://www.knoesis.org/tkprasad/

Page 5: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Outline

• Formal Description of Digital Circuits

• Design Verification

• Motivation for Applying Meta-programming Techniques

• Implementation and Correctness Considerations

• Conclusions

cs7120 (Prasad) L23-1-Applications 5

Page 6: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Hierarchical Description of Circuit Design

cs7120 (Prasad) L23-1-Applications 6

Component

Sub-Components

Gate-level Description

Transistor Netlist

Abstraction

Full-Adder

Half-Adder

AND-OR-NANDGates

CMOS Transistors

Page 7: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Declarative Specification of the Structure: Inverter and Netlist

Single Inverter:

inv(In,Out,X,Y) :-

pt(In,vdd,Out,X,Y),

nt(In,gnd,Out,_,_).

Netlist:

pt(in1,vdd,out1,50,50).

nt(in1,gnd,out1,50,40).

pt(out1,vdd,out2,100,50).

nt(out1,gnd,out2,100,40).

cs7120 (Prasad) L23-1-Applications 7

GND

Page 8: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Problem and Solution Strategy

• Verify structural correctness of a component layout by reverse engineering the top-level design.

• Use automatically generated Prolog extraction rules – Prolog specifications are executable and can be

used to simulate the circuit or check for faults by designing suitable queries

cs7120 (Prasad) L23-1-Applications 8

Page 9: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Circuit Extraction

cs7120 (Prasad) L23-1-Applications 9

MAGIC (CAD Tool) LayoutMAGIC (CAD Tool) Layout

Netlist : Prolog FactsNetlist : Prolog Facts

Higher-level ComponentsHigher-level Components

TRANSLATE

EXTRACT

Page 10: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Extraction Rules in Prolog

extract_inverter :-

pt(In,vdd,Out,X,Y),

nt(In,gnd,Out,_,_),

remove_pt(In,vdd,Out),

remove_nt(In,gnd,Out),

asserta(inverter(In,Out,X,Y)).

cs7120 (Prasad) L23-1-Applications 10

Page 11: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Finer Points

• Retracts not undone on backtracking =>

Identify complete component before retracting

• Retract all occurrences of a component =>

Use “fail” appropriately.

cs7120 (Prasad) L23-1-Applications 11

Page 12: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Spec vs Extraction Template

component :-

subcomponent_1

subcomponent_2.

extract_component :-

subcomponent_1

subcomponent_2,

retract(subcomponent_1),

retract(subcomponent_2),

assert(component),

fail.

cs7120 (Prasad) L23-1-Applications 12

Page 13: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Problem and Our Solution

• Requires generation of customized extraction rules (for each component) explicitly (which causes duplication of information).

• Use meta-programming techniques to perform extraction “on-the-fly” using declarative specification of the structure of the component.

cs7120 (Prasad) L23-1-Applications 13

Page 14: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

• Advantage: Avoids explicit creation and storing of extraction rules

• Disadvantage: Meta-interpretation is slower than using customized extraction rules

• Pragmatically: Explicit rules are good for extracting low-level components, while meta-interpreter is good for extracting high-level component extraction

cs7120 (Prasad) L23-1-Applications 14

Page 15: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Meta-Rule

extract(Comp) :-

clause(Comp, Sub_Comps),

Sub_Comps \== true,

call(Sub_Comps),

remove_primitive(Sub_Comps),

asserta(Comp), fail.

extract(_).

cs7120 (Prasad) L23-1-Applications 15

Page 16: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

remove_primitive((C1,C2)) :-

!, remove_primitive(C1),

remove_primitive(C2).

remove_primitive(C) :-

clause(C,true), !, retract(C).

remove_primitive(C) :-

clause(C,S_Cs),

remove_primitive(S_Cs).

cs7120 (Prasad) L23-1-Applications 16

Page 17: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

(cont’d)

• The interpreter does not work properly if the definition also contains ordinary predicates, written to capture connectivity constraints, position calculations, etc.

• Introduce special meta-predicate constraint as follows:

constraint(Test) : - call(Test).remove_primitive(constraint(_)):-!.

cs7120 (Prasad) L23-1-Applications 17

Page 18: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

ExampleinvZ(P,N,I,O,X,Y) :- pt(I,vdd,Q,X1,Y1), pt(P,Q,O,X2,Y2),

nt(N,O,R,X3,Y3), nt(I,R,gnd,X4,Y4),

constraint( \+

connected([Q,R,vdd,gnd])

),

constraint( X is (X1+X2+X3+X4)/4, Y is (Y1+Y2+Y3+Y4)/4

).cs7120 (Prasad) L23-1-Applications 18

Page 19: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Correctness Issue

• Facts and rule-heads are disjoint. The lowest-level is represented as facts. Retraction of facts is sufficient.

• Each fact contributes to just one rule. Subcomponents are not shared.

Retraction of a fact does not interfere with the extraction of other components.

(Stratification of sorts)

cs7120 (Prasad) L23-1-Applications 19

Page 20: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Conclusion

• Meta-interpreter approach uses the declarative specification of a design directly to perform extraction.

• This approach is flexible for higher-level components. The trade-off is that it is inefficient for lower-level components.

cs7120 (Prasad) L23-1-Applications 20

Page 21: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

cs7120 (Prasad) L23-1-Applications 21

Meta-Interpreters

Ref: Yoav Shoham’s AI Techniques in Prolog

Page 22: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Types

• Backward Chaining (Top-down)– Depth-first

• Prolog

– Breadth-first

• Forward Chaining (Bottom-up)

• Production Systems

Extensions

• Expert systems • Mycin

• Abductive Reasoning• Diagnosis

• Annotated Logic Programming

cs7120 (Prasad) L23-1-Applications 22

Page 23: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Representing forward chaining rules

op(1000, xfy, ‘,’).

op(1150, xfx, ‘-:’).

p -: q.

r,s -: p.

q -: t.• Forward chaining adds new conclusions

using rules in response to facts of the database and the newly asserted conclusions.

cs7120 (Prasad) L23-1-Applications 23

Page 24: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Membership in and-list

amember(X, (A,B)) :-

!, ( X = A; amember(X,B)).

amember(A,A).

• Recall

op(_, xfy, ‘,’).

cs7120 (Prasad) L23-1-Applications 24

Page 25: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Propagating the effect of facts• Forward chaining interpreter recursively

determines the conclusions forced by the facts and the rules, and asserts them explicitly. – Given the set of rules, each fact is asserted one

by one (using the code shown on the next slide) and the conclusions implied by them are determined.

• Specifically, the head of a rule is asserted after all the literals in the body of the rule have been asserted.

cs7120 (Prasad) L23-1-Applications 25

Page 26: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Propagating the effects of factsupdate(X) :- clause(X, true),!.

update(X) :-

assert(X),

( If -: Then ),

amember(X, If),

\+ ((amember(Y, If),

\+(clause(Y, true)))),

update(Then), fail.

cs7120 (Prasad) L23-1-Applications 26

Page 27: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Propagating the effect of facts• Complexity of update()

• O( number of rules * number of body literals)

• Can be optimized and extended to include negative literals, deletion, and maintaining justifications.

• Reference: Chapter 4 of Yoav Shoham’s AI Techniques in Prolog

cs7120 (Prasad) L23-1-Applications 27

Page 28: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

cs7120 (Prasad) L23-1-Applications 28

Pooling of Evidence : The Mycin approach

Ref: Yoav Shoham’s AI Techniques in Prolog

Page 29: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Introducing Certainty Factor

• Facts => CF = 1

• Rules => CF in [0,1]

high_fever. (1)

malaria :- high_fever, recently_in_jungle. (0.8)

malaria :- …

cs7120 (Prasad) L23-1-Applications 29

Page 30: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Mycin Interpretercert(true, 1).

cert( (A,B), C) :- !,

cert(A , C1), cert(B, C2),

comb_fn_serial(C1, C2, C).

cert( A, C) :- !,

findall(CR,

(clause(A,B,CF),

cert(B , CC),

comb_fn_rule(CF,CC,CR)),

CLst),

comb_fn_parallel(CLst, C).

cs7120 (Prasad) L23-1-Applications 30

Page 31: Cs7120 (Prasad)L23-1-Applications1 Applications t.k.prasad@wright.edu

Other Static Analysis Tools

• Type Checking/Inferenceappend(list(X), list(X), list(X)).

fact(int, int).

• Mode Inference

append(+,+,_)

cs7120 (Prasad) L23-1-Applications 31