Beispiel #1
0
 public static Pir GetMatchingPir(this Prr prr)
 {
     return(prr.Before()
            .OfExactType <Pir>()
            .Where(r => r.HeadNumber == prr.HeadNumber && r.SiteNumber == prr.SiteNumber)
            .LastOrDefault());
 }
Beispiel #2
0
        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());
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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;
        }
Beispiel #7
0
 /// <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());
 }