public static Pir GetMatchingPir(this Prr prr) { return(prr.Before() .OfExactType <Pir>() .Where(r => r.HeadNumber == prr.HeadNumber && r.SiteNumber == prr.SiteNumber) .LastOrDefault()); }
public void TestPrr() { var prr = new Prr { HeadNumber = 1, SiteNumber = 1, }; TestRoundTripEquality(prr); prr.PartFix = new byte[] { 1, 2, 3 }; TestRoundTripEquality(prr); }
public IEnumerable <StdfRecord> GetChildRecords(Prr prr) { prr.StdfFile.GetRecordsEnumerable().Any(); var partExtents = _PartsMap.GetExtents(prr); return(GetRecordsInExtents(partExtents) .SkipWhile(r => r.GetType() == typeof(Pir)) .OfType <IHeadSiteIndexable>() .Where(r => r.HeadNumber == prr.HeadNumber && r.SiteNumber == prr.SiteNumber) .TakeWhile(r => r.GetType() != typeof(Prr)) .Cast <StdfRecord>()); }
public Pir GetMatchingPir(Prr prr) { prr.StdfFile.GetRecordsEnumerable().Any(); var partExtents = _PartsMap.GetExtents(prr); if (partExtents == null) { return(null); } return((from p in GetRecordsInExtents(partExtents) .Select(p => p as Pir) .TakeWhile(p => p != null) where p.HeadNumber == prr.HeadNumber && p.SiteNumber == prr.SiteNumber select p).FirstOrDefault()); }
private void WritePrr(PartResult partResult) { Prr prr = new Prr(); prr.HEAD_NUM = 1; prr.RecordHeader.REC_LEN += 1; prr.SITE_NUM = partResult.SiteNumber; prr.RecordHeader.REC_LEN += 1; prr.PART_FLG = partResult.isSuccess ? (byte)0x00 : (byte)0x80;//0x00:pass; 0x80:fail prr.RecordHeader.REC_LEN += 1; prr.NUM_TEST = partResult.NumberOfTests; prr.RecordHeader.REC_LEN += 2; prr.HARD_BIN = partResult.HardBin.BinNum; prr.RecordHeader.REC_LEN += 2; prr.SOFT_BIN = partResult.SoftBin.BinNum; prr.TEST_T = (uint)partResult.Duration; prr.PART_ID = partResult.PartID.ToString(); prr.RecordHeader.REC_LEN += (ushort)(prr.PART_ID.Length); prr.RecordHeader.REC_LEN += (prr.PART_FIX == null) ? (ushort)1 : (ushort)prr.PART_FIX.Length; sfw.WriteRecord(prr); }
public ChipInfo(Prr prr, int idAll) { this.Site = prr.SiteNumber; this.TestTime = prr.TestTime; this.HardBin = prr.HardBin; this.SoftBin = prr.SoftBin; this.PartId = prr.PartId; this.WaferCord = new CordType(prr.XCoordinate, prr.YCoordinate); if (prr.SupersedesPartId) { this.ChipType = DeviceType.RT_ID; } else if (prr.SupersedesCoords) { this.ChipType = DeviceType.RT_Cord; } else { this.ChipType = DeviceType.Fresh; } if (prr.AbnormalTest) { this.Result = ResultType.Abort; } else { if (prr.Failed.HasValue) { this.Result = (bool)prr.Failed ? ResultType.Fail : ResultType.Pass; } else { this.Result = ResultType.Null; } } this.InternalId = idAll; }
/// <summary> /// Gets the records associated with this prr /// </summary> /// <param name="prr">The <see cref="Prr"/> representing the part</param> /// <returns>The records associated with the part (between the <see cref="Pir"/> /// and <see cref="Prr"/> and sharing the same head/site information.</returns> public static IEnumerable <StdfRecord> GetChildRecords(this Prr prr) { return(prr.GetMatchingPir().GetChildRecords()); }