TestSinix.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 6, 1987 11:15:40 pm PDT
Install Extract CDCMosA
Run -a SinixCMosA
CDRead TestSinixA
CDRead TestSinixB
← CoreProperties.StoreProperties[$CMosBObject, CoreProperties.PutProp[CoreProperties.FetchProperties[$CMosBObject], CoreProperties.propPrint, NIL]]
← CoreProperties.StoreProperties[$CMosBPins, CoreProperties.PutProp[CoreProperties.FetchProperties[$CMosBPins], CoreProperties.propPrint, NIL]]
← CoreProperties.StoreProperties[$CMosBGeometry, CoreProperties.PutProp[CoreProperties.FetchProperties[$CMosBGeometry], CoreProperties.propPrint, NIL]]
← CoreProperties.StoreProperties[$CMosBTrans, CoreProperties.PutProp[CoreProperties.FetchProperties[$CMosBTrans], CoreProperties.propPrint, NIL]]
We now check the extraction of abuts
← &design ← PW.OpenDesign["TestSinixB"]
← &obj ← PW.Get[&design, "Test"]
← &abut ← PW.AbutX[PW.CreateRotation[&obj, mirrorX], &obj]
← &ct ← Sinix.Extract[&abut, SinixCMosB.mode].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"]
← &obj ← TestPW.TestRoutingCellP[&design, NIL, NIL, NIL]
← &ct ← Sinix.Extract[&obj, SinixCMosB.mode].result
IF &ct.public.size=3 THEN NIL ELSE ERROR
← &obj ← TestPW.TestRoutingCellN[&design, NIL, NIL, NIL]
← &ct ← Sinix.Extract[&obj, SinixCMosB.mode].result
IF &ct.public.size=2 THEN NIL ELSE ERROR
PW.Draw[&obj]
We check Shells for pins
← &design ← PW.OpenDesign["TestSinixB"]
← &obj ← PW.Get[&design, "TestPinCheckpoint"]
← &ct ← Sinix.Extract[&obj, SinixCMosB.mode].result
IF CoreGeometry.GetPins[SinixCMosB.mode.decoration, &ct.public[0]].first.obj=CoreGeometry.GetPins[SinixCMosB.mode.decoration, &ct.public[1]].first.obj THEN ERROR ELSE NIL
← &shell ← CoreGeometry.CreateShell[SinixCMosB.mode.decoration, &ct, TRUE]
← &shellCT ← Sinix.Extract[&shell, SinixCMosB.mode].result
IF &shellCT.public.size=2 THEN NIL ELSE ERROR
IF CoreGeometry.GetPins[SinixCMosB.mode.decoration, &shellCT.public[0]].first.obj=CoreGeometry.GetPins[SinixCMosB.mode.decoration, &shellCT.public[1]].first.obj THEN ERROR ELSE NIL
← &shellDesign ← CDOps.CreateDesign[CD.FetchTechnology[$cmosB]]
← CDOps.IncludeObjectI[&shellDesign, &shell, [0, 0], original]
CDIO.WriteDesign[&shellDesign, "TestPinCheckpoint"]
← &shellDesign ← PW.OpenDesign["TestPinCheckpoint.dale"]
← &shell ← &shellDesign.actual.first.dummyCell.ob.specific.contents.first.ob
← &shellCT ← Sinix.Extract[&shell, SinixCMosB.mode].result
IF &shellCT.public.size=2 THEN NIL ELSE ERROR
IF CoreGeometry.GetPins[SinixCMosB.mode.decoration, &shellCT.public[0]].first.obj=CoreGeometry.GetPins[SinixCMosB.mode.decoration, &shellCT.public[1]].first.obj THEN ERROR ELSE NIL
And the writing of decorations on file
← &design ← PW.OpenDesign["TestSinixB"]
← &obj ← PW.Get[&design, "TestIO"]
← &ct ← Sinix.Extract[&obj, SinixCMosB.mode].result
← CoreIO.ReportSaveCellType[&ct]
← &rct ← CoreIO.RestoreCellType["TestIO"]
← &rrct ← CoreOps.Recast[&rct]
← &robj ← CoreGeometry.GetObject[SinixCMosB.mode.decoration, &rrct]
PW.Draw[&robj]
← &design ← PW.OpenDesign["TestSinixB"]
← &obj ← PW.Get[&design, "TestPinCheckpoint"]
← &ct ← Sinix.Extract[&obj, SinixCMosB.mode].result
← CoreIO.ReportSaveCellType[&ct]
← &rct ← CoreIO.RestoreCellType["TestPinCheckpoint"]
← &rrct ← CoreOps.Recast[&rct]
← &robj ← CoreGeometry.GetObject[SinixCMosB.mode.decoration, &rrct]
PW.Draw[&robj]