Presentation is loading. Please wait.

Presentation is loading. Please wait.

Cs7120 (Prasad)L23-1-Applications1 Applications

Similar presentations

Presentation on theme: "Cs7120 (Prasad)L23-1-Applications1 Applications"— Presentation transcript:

1 cs7120 (Prasad)L23-1-Applications1 Applications

2 cs7120 (Prasad)L23-1-Applications2 VHDL-Parser Pretty-Printer System

3 URLs Online Parser Documentation – DL-AMS/START.html DL-AMS/START.html Public Distribution – DL-AMS.zip cs7120 (Prasad)L23-1-Applications3

4 cs7120 (Prasad)L23-1-Applications4 A Meta-Interpreter for circuit Extraction

5 Outline Formal Description of Digital Circuits Design Verification Motivation for Applying Meta- programming Techniques Implementation and Correctness Considerations Conclusions cs7120 (Prasad)L23-1-Applications5

6 Hierarchical Description of Circuit Design cs7120 (Prasad)L23-1-Applications6 Component Sub-Components Gate-level Description Transistor Netlist Abstraction Full-Adder Half-Adder AND-OR-NAND Gates CMOS Transistors

7 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-Applications7 GND

8 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-Applications8

9 Circuit Extraction cs7120 (Prasad)L23-1-Applications9 MAGIC (CAD Tool) Layout Netlist : Prolog Facts Higher-level Components TRANSLATE EXTRACT

10 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-Applications10

11 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-Applications11

12 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-Applications12

13 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-Applications13

14 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-Applications14

15 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-Applications15

16 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-Applications16

17 (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-Applications17

18 Example invZ(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-Applications18

19 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-Applications19

20 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-Applications20

21 cs7120 (Prasad)L23-1-Applications21 Meta-Interpreters Ref: Yoav Shoham’s AI Techniques in Prolog

22 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-Applications22

23 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-Applications23

24 Membership in and -list amember(X, (A,B)) :- !, ( X = A; amember(X,B)). amember(A,A). Recall op(_, xfy, ‘,’). cs7120 (Prasad)L23-1-Applications24

25 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-Applications25

26 Propagating the effects of facts update(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-Applications26

27 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-Applications27

28 cs7120 (Prasad)L23-1-Applications28 Pooling of Evidence : The Mycin approach Ref: Yoav Shoham’s AI Techniques in Prolog

29 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-Applications29

30 Mycin Interpreter cert(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-Applications30

31 Other Static Analysis Tools Type Checking/Inference append(list(X), list(X), list(X)). fact(int, int). Mode Inference append(+,+,_) cs7120 (Prasad)L23-1-Applications31

Download ppt "Cs7120 (Prasad)L23-1-Applications1 Applications"

Similar presentations

Ads by Google