<> <> <> <> <<>> 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 _ PipalOpsImpl.hashSetFlag _ TRUE _ &map5 _ TestPipalCD.FindEquals[&ob] _ PipalOps.TransitiveReplace[&ob, &map5] _ &ob5 _ RefTab.Fetch[&map5, &ob].val _ IF Pipal.Equal[&ob5, &ob] THEN $OK ELSE ERROR _ &map6 _ TestPipalCD.FindEquals[&ob] _ PipalOps.TransitiveReplace[&ob, &map6] _ &ob6 _ RefTab.Fetch[&map6, &ob].val _ IF Pipal.Equal[&ob6, &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>> <<>> <<>>