<> <> <> <> <<>> Install PipalCD <> Run -a TestPipalCD _ &cdobj _ CDCurves.CreateLine[LIST [[0, 0], [100, 64]], 4, CMosB.pol].ob _ &ob _ PipalCD.CDToPObject[&cdobj] <<_ &ov _ Pipal.CreateOverlay[LIST [&ob]]>> <<_ PipalOverlayEditorImpl.Test[PipalOverlayMutant.Create[&ov]]>> <<_ TestPipalCD.Draw[&ob]>> _ &ob2 _ TestPipalCD.InOut[&ob] _ &ov2 _ Pipal.CreateOverlay[LIST [&ob2]] <<_ PipalOverlayEditorImpl.Test[PipalOverlayMutant.Create[&ov2]]>> <<_ TestPipalCD.Draw[&ob2]>> _ &master _ RopeFile.SimpleCreate["WavesColor.ip"] _ &ob _ PipalMos.CreatePictureFromInterpress[[100, 100], &master] _ &ob2 _ TestPipalCD.InOut[&ob] _ TestPipalCD.Draw[&ob2] _ &design _ PW.OpenDesign["SCLibCMOSB"] _ &cdobj _ PW.Get[&design, "nand2.mask"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ PipalReal.ObjectSize[&ob] -- to avoid crashing during a paint proc! _ &viewer _ PipalEdit.CreateViewer[&ob] _ CDImports.LoadAndBindAll[&design] _ &cdobj _ PW.Get[&design, "nand2.sch"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ PipalReal.ObjectSize[&ob] -- to avoid crashing during a paint proc! _ &viewer _ PipalEdit.CreateViewer[&ob] _ &design _ PW.OpenDesign["Logic"] _ &cdobj _ PW.Get[&design, "CounterUp.sch"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ PipalReal.ObjectSize[&ob] -- to avoid crashing during a paint proc! _ &viewer _ PipalEdit.CreateViewer[&ob] _ &design _ PW.OpenDesign["DynabusPads"] _ &cdobj _ PW.Get[&design, "PadAll.mask"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ PipalReal.ObjectSize[&ob] -- to avoid crashing during a paint proc! _ &ob _ PipalReal.CreateTransform[ImagerTransformation.Scale[0.2], &ob] _ &viewer _ PipalEdit.CreateViewer[&ob] _ BasicTime.PulsesToSeconds[PipalEditImpl.lastViewerPaintTime] <> <> _ &design _ PW.OpenDesign["AnalogTestLayout"] _ &cdobj _ PW.Get[&design, "AnalogTest"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ PipalReal.ObjectSize[&ob] -- to avoid crashing during a paint proc! <> _ &ob _ PipalReal.CreateTransform[ImagerTransformation.Scale[0.2], &ob] _ &viewer _ PipalEdit.CreateViewer[&ob] _ BasicTime.PulsesToSeconds[PipalEditImpl.lastViewerPaintTime] _ &design _ PW.OpenDesign["SCLibCMOSB"] _ &cdobj _ PW.Get[&design, "nand2.mask"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ PipalReal.ObjectSize[&ob] -- to avoid crashing during a paint proc! _ PipalOverlayEditorImpl.Test[PipalOverlayMutant.Create[&ob.child.child]] <> _ &design _ PW.OpenDesign["SCLibCMOSB"] _ &cdobj _ PW.Get[&design, "nand2.mask"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ &ob2 _ TestPipalCD.InOut[&ob] _ CDImports.LoadAndBindAll[&design] _ &cdobj _ PW.Get[&design, "nand2.sch"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ &ob2 _ TestPipalCD.InOut[&ob] _ TestPipalCD.Draw[&ob] _ TestPipalCD.Draw[&ob2] _ &design _ PW.OpenDesign["Logic"] _ &cdobj _ PW.Get[&design, "CounterUp.sch"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ &ob2 _ TestPipalCD.InOut[&ob] _ &design _ PW.OpenDesign["DynabusPads"] _ &cdobj _ PW.Get[&design, "PadAll.mask"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ &ob2 _ TestPipalCD.InOut[&ob] _ &design _ PW.OpenDesign["AnalogTestLayout"] _ &cdobj _ PW.Get[&design, "AnalogTest"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ &ob2 _ TestPipalCD.InOut[&ob] _ TestPipalCD.Draw[&ob] _ TestPipalCD.Draw[&ob2] <<>> <<-- Directory/Import test>> _ &design _ PW.OpenDesign["SCLibCMOSB"] _ &cdobj _ PW.Get[&design, "nand2.mask"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ &ob2 _ TestPipalCD.InOut[&ob] _ &import _ PipalIO.CreateRefereedImport["Foo.Bar.sch", FALSE, &ob] _ &child _ PipalInt.NthChild[&import].nthChild _ IF LOOPHOLE[&import.creationTime, INT]=LOOPHOLE[BasicTime.nullGMT, INT] THEN $OK ELSE ERROR _ &bidon _ Pipal.CreateOverlay[LIST[&import]] _ PipalIO.SaveObject["Bidon.sch", &bidon] _ IF LOOPHOLE[&import.creationTime, INT]#LOOPHOLE[BasicTime.nullGMT, INT] THEN $OK ELSE ERROR _ &table _ RefTab.Create[3, NIL, NIL] _ RefTab.Store[&table, &ob, &ob2] _ PipalOps.TransitiveReplace[&bidon, &table] _ IF RefTab.Fetch[&table, &ob].val=&ob2 THEN $OK ELSE ERROR _ &import2 _ RefTab.Fetch[&table, &import].val _ IF &import2=NIL OR &import2#&import THEN $OK ELSE ERROR _ IF LOOPHOLE[&import2.creationTime, INT]=LOOPHOLE[BasicTime.nullGMT, INT] THEN $OK ELSE ERROR _ &bidon2 _ RefTab.Fetch[&table, &bidon].val _ IF &bidon2=NIL OR &bidon2#&bidon THEN $OK ELSE ERROR _ PipalIO.SaveObject["Bidon.sch", &bidon2] _ IF LOOPHOLE[&import2.creationTime, INT]#LOOPHOLE[BasicTime.nullGMT, INT] THEN $OK ELSE ERROR <> Statistics on _ &design _ PW.OpenDesign["DynabusPads"] _ &cdobj _ PW.Get[&design, "PadAll.mask"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ TestPipalCD.Stats[&ob] _ PipalOpsImpl.simpleReplace _ TRUE _ &map1 _ TestPipalCD.FindEquals[&ob] _ PipalOps.TransitiveReplace[&ob, &map1] _ &ob1 _ RefTab.Fetch[&map1, &ob].val _ IF Pipal.Equal[&ob1, &ob] THEN $OK ELSE ERROR _ &map2 _ TestPipalCD.FindEquals[&ob] _ PipalOps.TransitiveReplace[&ob, &map2] _ &ob2 _ RefTab.Fetch[&map2, &ob].val _ IF Pipal.Equal[&ob2, &ob] THEN $OK ELSE ERROR _ PipalOpsImpl.simpleReplace _ FALSE _ &map3 _ TestPipalCD.FindEquals[&ob] _ PipalOps.TransitiveReplace[&ob, &map3] _ &ob3 _ RefTab.Fetch[&map3, &ob].val _ IF Pipal.Equal[&ob3, &ob] THEN $OK ELSE ERROR _ &map4 _ TestPipalCD.FindEquals[&ob] _ PipalOps.TransitiveReplace[&ob, &map4] _ &ob4 _ RefTab.Fetch[&map4, &ob].val _ IF Pipal.Equal[&ob4, &ob] THEN $OK ELSE ERROR _ &design _ PW.OpenDesign["AnalogTestLayout"] _ &cdobj _ PW.Get[&design, "AnalogTest"] _ &ob _ PipalCD.CDToPObject[&cdobj] _ TestPipalCD.Stats[&ob] _ &map _ TestPipalCD.FindEquals[&ob] _ PipalOps.TransitiveReplace[&ob, &map] _ &ob _ RefTab.Fetch[&map, &ob].val <<_ &design _ PW.OpenDesign["TestSinixB"]>> <<_ &cdobj _ PW.Get[&design, "TestPinCheckpoint"]>> <<_ &ct _ PipalSinix.Extract[&cdobj, PipalSinix.layoutMode].result>> <<_ IF PipalCore.GetPins[PipalSinix.layoutMode.decoration, &ct.public[0]].first.obj=PipalCore.GetPins[PipalSinix.layoutMode.decoration, &ct.public[1]].first.obj THEN ERROR ELSE NIL>> <<_ &shell _ PipalCore.CreateShell[PipalSinix.layoutMode.decoration, &ct, TRUE]>> <<_ &shellCT _ PipalSinix.Extract[&shell, PipalSinix.layoutMode].result>> <<_ IF &shellCT.public.size=2 THEN NIL ELSE ERROR>> <<_ IF PipalCore.GetPins[PipalSinix.layoutMode.decoration, &shellCT.public[0]].first.obj=PipalCore.GetPins[PipalSinix.layoutMode.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 _ PipalSinix.Extract[&shell, PipalSinix.layoutMode].result>> <<_ IF &shellCT.public.size=2 THEN NIL ELSE ERROR>> <<_ IF PipalCore.GetPins[PipalSinix.layoutMode.decoration, &shellCT.public[0]].first.obj=PipalCore.GetPins[PipalSinix.layoutMode.decoration, &shellCT.public[1]].first.obj THEN ERROR ELSE NIL>> <<>> <> <<_ &design _ PW.OpenDesign["TestSinixB"]>> <<_ &cdobj _ PW.Get[&design, "TestIO"]>> <<_ &ct _ PipalSinix.Extract[&cdobj, PipalSinix.layoutMode].result>> <<_ CoreIO.ReportSaveCellType[&ct]>> <<_ &rct _ CoreIO.RestoreCellType["TestIO"]>> <<_ &rrct _ CoreOps.Recast[&rct]>> <<_ &robj _ PipalCore.GetObject[PipalSinix.layoutMode.decoration, &rrct]>> <<_ PW.Draw[&robj]>> <<>> <<_ &design _ PW.OpenDesign["TestSinixB"]>> <<_ &cdobj _ PW.Get[&design, "TestPinCheckpoint"]>> <<_ &ct _ PipalSinix.Extract[&cdobj, PipalSinix.layoutMode].result>> <<_ CoreIO.ReportSaveCellType[&ct]>> <<_ &rct _ CoreIO.RestoreCellType["TestPinCheckpoint"]>> <<_ &rrct _ CoreOps.Recast[&rct]>> <<_ &robj _ PipalCore.GetObject[PipalSinix.layoutMode.decoration, &rrct]>> <<_ PW.Draw[&robj]>> <<>> <<>>