First I have (run) as the last line of the JESS file. Second reqest info is attached.
Jeff Ruff Jess Version 6.0 12/7/2001 JESS startup rule set to load JDB content TRUE ==> f-42 (MAIN::capture-rules) MAIN::circle-pad-with-tolerance: +1+1+1+1+1+1+1+1+1+1+2+2+t ==> Activation: MAIN::circle-pad-without-tolerance : f-10, f-9, MAIN::circle-pad-without-tolerance: =1=1=1=1=1=1=1=1+1=1=2+2+t MAIN::rect-pad-without-tolerance: =1=1=1=1+1=1=1=1+1+2+2+t MAIN::smt-bga: =1=1+1+1+1+1+1+1+1+1+1+1+2+2+2+2+t MAIN::padstack-name: +1+1+1+t ==> Activation: MAIN::capture-rules-jdb : f-42 MAIN::capture-rules-jdb: +1+1+1+t MAIN::add-pad-to-jdb: +1+1+1+t FIRE 1 MAIN::capture-rules-jdb f-42 Setting rules in group rules using code th pkgShape circle mask 0.1 FIRE 2 MAIN::circle-pad-without-tolerance f-10, f-9, f-13 Circular pad that is not a bga found ==> f-43 (MAIN::drill-dia 580000.0) Drill Diameter is 580000.0 ==> f-44 (MAIN::top-pad 1620000.0) Top Pad Diameter is 1620000.0 ==> f-45 (MAIN::top-mask 1820000.0) Top Mask Diameter is 1820000.0 ==> f-46 (MAIN::int-pad 1620000.0) Internal Pad Diameter is 1620000.0 ==> f-47 (MAIN::int-clr 1820000.0) Internal Clearance Diameter is 1820000.0 ==> f-48 (MAIN::bot-pad 1620000.0) Bottom Pad Diameter is 1620000.0 ==> f-49 (MAIN::bot-clr 1720000.0) Bottom Clearance Diameter is 1720000.0 ==> f-50 (MAIN::create-padstack-name) ==> Activation: MAIN::padstack-name : f-50 FIRE 3 MAIN::padstack-name f-50 Creating Padstack Name Derived padstack name tpm1620d1 ==> f-51 (MAIN::capture-padstack) ==> Activation: MAIN::add-pad-to-jdb : f-51 Done Opening Jess Engine to calculate pad geometries "tpm1620d1" tpm1620d1 Requested View name is com.chipdata.jdb.JDBView@2f1b1a Found View dip_test Requested View name is com.chipdata.jdb.JDBView@2f1b1a Found View dip_test -----Original Message----- From: [EMAIL PROTECTED] [mailto:ejfried@;ca.sandia.gov] Sent: Tuesday, November 05, 2002 2:28 PM To: [EMAIL PROTECTED] Subject: Re: JESS: Variable not being asserted Hmmm, I can't find any problems with this. Maybe if you used "(watch all)" and then let us see the program output? You're not using "(run n)" with a numeric argument, are you? I think Ruff, Jeff wrote: [Charset iso-8859-1 unsupported, filtering to ASCII...] > I have the requested information in the following text. I have > indicated where each rule is called from using "<<<<<<<<<" > I appreciate all your help with this. > Jeff Ruff > > > > Rule 1 > > (defrule circle-pad-without-tolerance > (pkgtype ?p &:(neq ?p bga)) > (PkgShape ?ps &:(eq ?ps circle)) > (UseTol ?ut &:(eq ?ut false)) > => > (printout t "Circular pad that is not a bga found" crlf) > (if (eq ?code smd) > then > (printout t "Surface mount part found" crlf) > ;;Calculate Top copper pad > (assert (top-pad (* (- 1 ?ToeToPad) ?CirclePadDiameter))) > (bind ?top-pad (* (- 1 ?ToeToPad) ?CirclePadDiameter)) > (store TopPad ?top-pad) > (printout t "Top Pad Diameter is " ?top-pad crlf) > ;;Calculate Top mask pad > (assert (top-mask (+ ?top-pad (* (* 2 ?PadToMaskX) > ?RuleMultiplier)))) > (bind ?top-mask (+ ?top-pad (* (* 2 ?PadToMaskX) > ?RuleMultiplier))) > (store TopMask ?top-mask) > (printout t "Top Mask Diameter is " ?top-mask crlf) > ;;Calculate Top paste pad > (assert (top-paste (+ ?top-pad (* (* 2 ?PadToPasteX) > ?RuleMultiplier)))) > (bind ?top-paste (+ ?top-pad (* (* 2 ?PadToPasteX) > ?RuleMultiplier))) > (store TopPaste ?top-paste) > (printout t "Top Paste Diameter is " ?top-paste crlf) > (assert (create-padstack-name)) > else > ;; Calculate drill > (assert (drill-dia (+ ?CirclePadDiameter (* 2 (* ?pinTodrill > ?RuleMultiplier))))) > (bind ?drill-dia (+ ?CirclePadDiameter (* 2 (* ?pinTodrill > ?RuleMultiplier)))) > (printout t "Drill Diameter is "?drill-dia crlf) > ;;Calculate Top copper pad > (assert (top-pad (+ ?drill-dia (* 2 (* ?padTodrill > ?RuleMultiplier))))) > (bind ?top-pad (+ ?drill-dia (* 2 (* ?padTodrill > ?RuleMultiplier)))) > (store TopPad ?top-pad) > (printout t "Top Pad Diameter is " ?top-pad crlf) > ;;Calculate Top Mask pad > (assert (top-mask (+ ?top-pad (* 2 (* ?PadToMaskX > ?RuleMultiplier))))) > (bind ?top-mask (+ ?top-pad (* 2 (* ?PadToMaskX > ?RuleMultiplier)))) > (store TopMask ?top-mask) > (printout t "Top Mask Diameter is " ?top-mask crlf) > ;;Calculate Internal copper pad > (assert (int-pad (+ ?top-pad (* 2 (* ?intPadoffX > ?RuleMultiplier))))) > (bind ?int-pad (+ ?top-pad (* 2 (* ?intPadoffX > ?RuleMultiplier)))) > (store IntPad ?int-pad) > (printout t "Internal Pad Diameter is " ?int-pad crlf) > ;;Calculate Internal mask clearance > (assert (int-clr (+ ?top-pad (* 2 (* ?intClroffX > ?RuleMultiplier))))) > (bind ?int-clr (+ ?top-pad (* 2 (* ?intClroffX > ?RuleMultiplier)))) > (store IntClr ?int-clr) > (printout t "Internal Clearance Diameter is " ?int-clr crlf) > ;;Calculate Bottom copper pad > (assert (bot-pad (+ ?top-pad (* 2 (* ?botPadoffX > ?RuleMultiplier))))) > (bind ?bot-pad (+ ?top-pad (* 2 (* ?botPadoffX > ?RuleMultiplier)))) > (store BotPad ?bot-pad) > (printout t "Bottom Pad Diameter is " ?bot-pad crlf) > ;;Calculate Bottom Mask pad > (assert (bot-clr (+ ?top-pad (* 2 (* ?botClroffX > ?RuleMultiplier))))) > (bind ?bot-clr (+ ?top-pad (* 2 (* ?botClroffX > ?RuleMultiplier)))) > (store BotClr ?bot-clr) > (printout t "Bottom Clearance Diameter is " ?bot-clr crlf) > ;;Set flag to create padstack name > (assert (create-padstack-name))<<<<<<<<<<<<<<<<<Rule2 > ) > );;Close smt-circle-pad rule without tolerances > > Rule 2 > > ;;Create padstack name > (defrule padstack-name > (create-padstack-name) > => > (printout t "Creating Padstack Name" crlf) > (if (eq ?code smd) > then > (bind ?pos1 s) > else > (bind ?pos1 t) > ) > (bind ?pos2 p) > (if (or (eq ?unit mm) (eq ?unit micron)) > then > (bind ?pos3 m) > else > (bind ?pos3 i) > ) > (if (eq (fetch pkgShape) circle) > then > (bind ?pos4-11 (format nil "%04d" (* (fetch TopPad) 0.001))) > else > (bind ?pos4-8 (format nil "%04d" (* (fetch TopPadWidth) > 0.001))) > (bind ?pos9-11 (format nil "%04d" (* (fetch TopPadHeight) > 0.001))) > ) > (if (eq (fetch pkgType) bga) > then > (bind ?pos12 b) > ) > (if (eq (fetch pkgType) pga) > then > (bind ?pos12 p) > ) > (if (eq (fetch pkgType) plcc) > then > (bind ?pos12 c) > ) > (if (eq (fetch pkgType) qfp) > then > (bind ?pos12 q) > ) > (if (eq (fetch pkgType) soic) > then > (bind ?pos12 s) > ) > (if (eq (fetch pkgType) dip) > then > (bind ?pos12 d) > ) > (if (eq (fetch pkgType) zip) > then > (bind ?pos12 z) > ) > (if (eq (fetch pkgType) sip) > then > (bind ?pos12 n) > ) > (if (eq (fetch pkgType) smd_discrete) > then > (bind ?pos12 m) > ) > (if (eq (fetch pkgType) th_discrete) > then > (bind ?pos12 t) > ) > (if (eq (fetch pkgType) soj) > then > (bind ?pos12 j) > ) > > (bind ?pos13 1) > (if(eq (fetch pkgShape) circle) > then > (assert (capture-padstack)) <<<<<<<<<<<<<<Rule3 > (bind ?padstack-name (str-cat ?pos1 ?pos2 ?pos3 ?pos4-11 ?pos12 > ?pos13)) > else > (assert (capture-padstack)) > (bind ?padstack-name (str-cat ?pos1 ?pos2 ?pos3 ?pos4-8 ?pos9-11 > ?pos12 ?pos13)) > ) > (store PadStackName ?padstack-name) > (printout t "Derived padstack name " (fetch PadStackName) crlf) > > ;;Add PhysPort to pin element and assign padstack name as MasterViewName > (set ?pView viewType (get-member JDBViewType > VIEWTYPE_IS_PHYSICAL_PACKAGE)) > (bind ?pGroup (?pView findGroup "body")) > ;;(printout t "The Group is " (get ?pGroup groupId) crlf) > (bind ?q (?pView pinElements)) > (while (?q hasMoreElements) > (bind ?pPin (?q nextElement)) > (bind ?pPhysPort (?pPin createPhysPort)) > (?pPhysPort setMasterViewName ?padstack-name) > ;;(printout t "The Pin found is " (get ?pPin pinName) crlf) > ) > > (JDBViewFact ?pView) > );;Close name padstack > > Rule 3 > (defrule add-pad-to-jdb > (capture-padstack) > => > (printout t "Updating JDB for PadStack Information" crlf) > ) > > > Output from program > > Jess Version 6.0 12/7/2001 > JESS startup rule set to load JDB content > f-0 (MAIN::pkgWidth 6600000.0) > f-1 (MAIN::pkgWidthTol 5080000.0) > f-2 (MAIN::pkgLength 3.188E7) > f-3 (MAIN::pkgLengthTol 640000.0) > f-4 (MAIN::pkgHeight nil) > f-5 (MAIN::pkgHeightTol 0.0) > f-6 (MAIN::Ypitch 7620000.0) > f-7 (MAIN::Xpitch 2540000.0) > f-8 (MAIN::pindir 0) > f-9 (MAIN::PkgShape circle) > f-10 (MAIN::pkgtype dip) > f-11 (MAIN::code th) > f-12 (MAIN::units mm) > f-13 (MAIN::UseTol false) > f-14 (MAIN::pinloctol 1420000.0) > f-15 (MAIN::pinSizeTol 0.0) > f-16 (MAIN::pkgpitch std) > f-17 (MAIN::ruleSet two) > f-18 (MAIN::diaCircle 530000.0) > f-19 (MAIN::dimRectangleWidth nil) > f-20 (MAIN::dimRectangleHeight nil) > f-21 (MAIN::RuleMulti 1000000.0) > f-22 (MAIN::silkscreen 0.2) > f-23 (MAIN::toeTopad 0.8) > f-24 (MAIN::heelTopad 0.8) > f-25 (MAIN::padTomaskX 0.1) > f-26 (MAIN::padTomaskY 0.1) > f-27 (MAIN::padTopasteX 0.0) > f-28 (MAIN::padTopasteY 0.0) > f-29 (MAIN::padTodrill 0.52) > f-30 (MAIN::intPadoffX 0.0) > f-31 (MAIN::intPadoffY 0.0) > f-32 (MAIN::intClroffX 0.1) > f-33 (MAIN::intClroffY 0.1) > f-34 (MAIN::botPadoffX 0.0) > f-35 (MAIN::botPadoffY 0.0) > f-36 (MAIN::botClroffX 0.05) > f-37 (MAIN::botClroffY 0.05) > f-38 (MAIN::side 0.05) > f-39 (MAIN::courtYardexcess 0.25) > f-40 (MAIN::roundOfffactor 0.05) > f-41 (MAIN::pinTodrill 0.025) > For a total of 42 facts. > Setting rules in group rules > using code th pkgShape circle mask 0.1 > Circular pad that is not a bga found > Drill Diameter is 580000.0 > Top Pad Diameter is 1620000.0 > Top Mask Diameter is 1820000.0 > Internal Pad Diameter is 1620000.0 > Internal Clearance Diameter is 1820000.0 > Bottom Pad Diameter is 1620000.0 > Bottom Clearance Diameter is 1720000.0 > Creating Padstack Name > Derived padstack name tpm1620d1 <<<<<<<<Rule 3 > should fire here > Done Opening Jess Engine to calculate pad geometries > "tpm1620d1" tpm1620d1 > Requested View name is com.chipdata.jdb.JDBView@b4bc1e > Found View dip_test > Requested View name is com.chipdata.jdb.JDBView@b4bc1e > Found View dip_test > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:ejfried@;ca.sandia.gov] > Sent: Tuesday, November 05, 2002 1:33 PM > To: [EMAIL PROTECTED] > Subject: Re: JESS: Variable not being asserted > > > I think Ruff, Jeff wrote: > [Charset iso-8859-1 unsupported, filtering to ASCII...] > > In further investigation, it appears that I cannot assert within a > rule > > called by a previous assert. I was trying to assert the value on the > RHS > > of a rule which is fired from a previous assertion within another > rule. > > Is this a problem for 6.0? > > Nope, no such restriction. > > > > > I can provide more of the code and/or output if required. > > Seeing rules 1, 2, and 3, together with the output of (facts) at the > point when rule3 should fire but doesn't, would probably be enough for > us to help. > > > > --------------------------------------------------------- > Ernest Friedman-Hill > Distributed Systems Research Phone: (925) 294-2154 > Sandia National Labs FAX: (925) 294-2234 > Org. 8920, MS 9012 [EMAIL PROTECTED] > PO Box 969 http://herzberg.ca.sandia.gov > Livermore, CA 94550 > > -------------------------------------------------------------------- > To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]' > in the BODY of a message to [EMAIL PROTECTED], NOT to the list > (use your own address!) List problems? Notify > [EMAIL PROTECTED] > -------------------------------------------------------------------- > > -------------------------------------------------------------------- > To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]' > in the BODY of a message to [EMAIL PROTECTED], NOT to the list > (use your own address!) List problems? Notify [EMAIL PROTECTED] > -------------------------------------------------------------------- > --------------------------------------------------------- Ernest Friedman-Hill Distributed Systems Research Phone: (925) 294-2154 Sandia National Labs FAX: (925) 294-2234 Org. 8920, MS 9012 [EMAIL PROTECTED] PO Box 969 http://herzberg.ca.sandia.gov Livermore, CA 94550 -------------------------------------------------------------------- To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]' in the BODY of a message to [EMAIL PROTECTED], NOT to the list (use your own address!) List problems? Notify [EMAIL PROTECTED] -------------------------------------------------------------------- -------------------------------------------------------------------- To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]' in the BODY of a message to [EMAIL PROTECTED], NOT to the list (use your own address!) List problems? Notify [EMAIL PROTECTED] --------------------------------------------------------------------
