TestPipalSinix.cm
Copyright Ó 1985, 1987 by Xerox Corporation. All rights reversed.
Created by Bertrand Serlet August 30, 1985 11:55:01 am PDT
Bertrand Serlet April 15, 1988 2:03:58 pm PDT
Install PipalExtract
Run -a PipalExtractPackage
Run -a TestPipalSinix
CDRead TestSinixB
← CoreProperties.StoreProperties[$LayoutObject, CoreProperties.PutProp[CoreProperties.FetchProperties[$LayoutObject], CoreProperties.propPrint, NIL]]
← CoreProperties.StoreProperties[$LayoutPort, CoreProperties.PutProp[CoreProperties.FetchProperties[$LayoutPort], CoreProperties.propPrint, NIL]]
← CoreProperties.StoreProperties[$LayoutGeometry, CoreProperties.PutProp[CoreProperties.FetchProperties[$LayoutGeometry], CoreProperties.propPrint, NIL]]
← CoreProperties.StoreProperties[$LayoutTrans, CoreProperties.PutProp[CoreProperties.FetchProperties[$LayoutTrans], CoreProperties.propPrint, NIL]]
← &box1 ← PipalMos.CreateBox[[20, 32], $Pol]
← PipalSinix.Extract[&box1, PipalSinix.layoutMode]
← &box2 ← PipalInt.TransformObject[[[40, 48]], PipalMos.CreateBox[[48, 20], $Met]]
← PipalSinix.Extract[&box2, PipalSinix.layoutMode]
← &ov ← Pipal.CreateOverlay[LIST[&box1, &box2]]
← PipalSinix.Extract[&ov, PipalSinix.layoutMode]
← &cdcontact ← CDSimpleRules.Contact[CMosB.cmosB, CMosB.pol, CMosB.met]
← &contact ← PipalCD.CDToPObject[&cdcontact]
← PipalSinix.Extract[&contact, PipalSinix.layoutMode]
← &cdtrans ← CMosBObjects.CreateTransistor[[56, 52], CMosB.ndif]
← &trans ← PipalCD.CDToPObject[&cdtrans]
← &ct ← PipalSinix.Extract[&trans, PipalSinix.layoutMode].result
← &cdtrans ← CMosBObjects.CreateAngleTransistor[[40, 32], CMosB.wpdif]
← &trans ← PipalCD.CDToPObject[&cdtrans]
← &ct ← PipalSinix.Extract[&trans, PipalSinix.layoutMode].result
← &font ← Imager.FindFontScaled["Xerox/XC1-2-2/Modern", 20.0]
← &star ← PipalMos.CreateStar[&contact, LIST [PipalMos.CreateText["Name", &font]]]
← PipalSinix.Extract[&star, PipalSinix.layoutMode]
← &overlay ← Pipal.CreateOverlay[LIST [&star]]
← &ct ← PipalSinix.Extract[&overlay, PipalSinix.layoutMode].result
IF CoreOps.FindWire[&ct.public, "Name"]=NIL THEN ERROR ELSE NIL
← &marker ← PipalInt.TransformObject[[[40, 48]], PipalMos.CreateBox[[48, 20], $Met]]
← PipalSinix.Extract[&marker, PipalSinix.layoutMode]
← &design ← PW.OpenDesign["TestSinixB"]
← &cdobj ← PW.Get[&design, "Test"]
← &obj ← PipalCD.CDToPObject[&cdobj]
← &ct ← PipalSinix.Extract[&obj, PipalSinix.layoutMode].result
← &cdrot ← PW.CreateRotation[&cdobj, mirrorX]
← &rot ← PipalCD.CDToPObject[&cdrot]
← &ct ← PipalSinix.Extract[&rot, PipalSinix.layoutMode].result
We now check the extraction of abuts
← &cdabut ← PW.AbutX[&cdrot, &cdobj]
← &abut ← PipalCD.CDToPObject[&cdabut]
← &ct ← PipalSinix.Extract[&abut, PipalSinix.layoutMode].result
← CoreOps.Print[&ct]
IF CoreOps.FindWire[&ct.public, "Gate"]=NIL THEN ERROR ELSE NIL
We check the routing class extraction
Run TestPW
← &design ← PW.OpenDesign["TestPW"]
← &cdrout ← TestPW.TestRoutingCellN[&design, NIL, NIL, NIL]
← &rout ← PipalCD.CDToPObject[&cdrout]
← &ct ← PipalSinix.Extract[&rout, PipalSinix.layoutMode].result
IF &ct.public.size=2 THEN NIL ELSE ERROR
← &cdrout ← TestPW.TestRoutingCellP[&design, NIL, NIL, NIL]
← &rout ← PipalCD.CDToPObject[&cdrout]
← &ct ← PipalSinix.Extract[&rout, PipalSinix.layoutMode].result
IF &ct.public.size=3 THEN NIL ELSE ERROR
A larger circuit
← &design ← PW.OpenDesign["DynabusPads"]
← &cdobj ← PW.Get[&design, "PadAll.mask"]
PW.Draw[&cdobj]
← &obj ← PipalCD.CDToPObject[&cdobj]
date
← &ct ← PipalSinix.Extract[&obj, PipalSinix.layoutMode].result
date
← TestPipalSinix.DrawShell[&ct]
Paste buffer
← CoreOps.Print[&ct]
← PipalConnectImpl.debugCache ← TRUE
← PipalSinixImpl.debugCache ← TRUE
← PipalConnectImpl.SetComposite[PipalInt.abutClass, PipalConnectImpl.EnumerationComposer]
← TestPipalSinix.Draw[&abut]
← TestPipalSinix.DrawShell[&ct]