Пример #1
0
 public CCCOutput(string outputName, int countPerPeriod, double alpha, double yeildTarget, double yeildLimit, int defectLimit, bool TurnOnTicDefect, bool TurnOnCrdlDefect)
 {
     _outputName            = Name;
     _isCalculateTicDefect  = TurnOnTicDefect;
     _isCalculateCrdlDefect = TurnOnCrdlDefect;
     _cccDefect             = new CCCResult("TIC_Defect", countPerPeriod, alpha, yeildTarget, yeildLimit, defectLimit);
 }
Пример #2
0
        public CCCOutput(CCCParameter setting, CCCCounterInfo counterInfo, bool TurnOnTicDefect, bool TurnOnCrdlDefect)
        {
            _outputName            = Name;
            _isCalculateTicDefect  = TurnOnTicDefect;
            _isCalculateCrdlDefect = TurnOnCrdlDefect;
            _cccDefect             = new CCCResult("TIC_Defect", setting.TestRunGroup, setting.Alpha, setting.YeildTarget, setting.YeildLimit, setting.DefectCounterLimit);

            _cccDefect.OutputCounter = counterInfo.CCCCounterForHst;
        }
Пример #3
0
 public CCCOutput(string outputName)
 {
     _outputName = Name;
     _cccDefect  = new CCCResult("TIC_Defect");
 }
Пример #4
0
 public CCCOutput(CCCParameter setting)
 {
     _outputName = Name;
     _cccDefect  = new CCCResult("TIC_Defect", setting.TestRunGroup, setting.Alpha, setting.YeildTarget, setting.YeildLimit, setting.DefectCounterLimit);
 }
Пример #5
0
        public void UpdateData(CCCResult result)
        {
            //Mar-2020 change triggering count
            var TotalMCDownTrigger = HSTMachine.Workcell.TICCccControl.CCCControlTicMc1.CccResult.OutputCounter.MCDownTriggering + HSTMachine.Workcell.TICCccControl.CCCControlTicMc2.CccResult.OutputCounter.MCDownTriggering;
            var TotalTICTrigger    = HSTMachine.Workcell.TICCccControl.CCCControlTicMc1.CccResult.OutputCounter.TicDefactCounter + HSTMachine.Workcell.TICCccControl.CCCControlTicMc2.CccResult.OutputCounter.TicDefactCounter;

            string triggerType = string.Empty;

            triggerType = result.OutputCounter.McTriggerType == Trigger_Type.CRDL ? "HIGH_PERCENT_CRDL" : "HIGH_PERCENT_TIC";
            decimal mc1FailPartCounter = decimal.Parse(HSTMachine.Workcell.TICCccControl.CCCControlTicMc1.CccResult.OutputCounter.AdaptiveDefectCounter.ToString());
            decimal totalParts         = decimal.Parse(result.AdaptivePartCounter.ToString());
            decimal mc2FailPartCounter = decimal.Parse(HSTMachine.Workcell.TICCccControl.CCCControlTicMc2.CccResult.OutputCounter.AdaptiveDefectCounter.ToString());

            decimal currentYield = 0;
            var     totalcount   = (totalParts - mc1FailPartCounter) * 100;

            try
            {
                if (totalParts != 0)
                {
                    currentYield = decimal.Divide(totalcount, totalParts);
                }
            }
            catch (Exception)
            {
            }

            result.SetAdaptiveNumber();
            if (result.OutputCounter.LastCCCOutputUTICtime == null)
            {
                result.OutputCounter.LastCCCOutputUTICtime = "";
            }
            CCCDataLogger dataUpdate = new CCCDataLogger
            {
                DateTime             = DateTime.Now.ToString(),
                TEST_RUN_COUNT       = HSTMachine.Workcell.HSTSettings.CccParameterSetting.TestRunGroup.ToString(),
                YIELD_TARGET         = HSTMachine.Workcell.HSTSettings.CccParameterSetting.YeildTarget.ToString(),
                YIELD_LIMIT          = HSTMachine.Workcell.HSTSettings.CccParameterSetting.YeildLimit.ToString(),
                DEFECT_LIMIT         = HSTMachine.Workcell.HSTSettings.CccParameterSetting.DefectCounterLimit.ToString(),
                LCL                  = HSTMachine.Workcell.HSTSettings.CccParameterSetting.Alpha.ToString(),
                PART_COUNT           = ((result.OutputCounter.LastRunGoodCounter == 0) ? 0 : result.OutputCounter.LastRunGoodCounter - 1).ToString(),
                PART_LIMIT_YIELD     = result.YieldTest.ToString(),                            // not define yet
                PART_TRIGGER         = result.AdaptiveNumber.ToString(),                       // not define yet
                DEFECT_COUNTER       = result.OutputCounter.AdaptiveDefectCounter.ToString(),  //not define yet
                CCC_TRIGGERING       = result.OutputCounter.InternalTriggerCounter.ToString(), // not define yet
                TIC_TRIGGERING_COUNT = result.OutputCounter.TicDefactCounter.ToString(),
                HIGH_CRDL_PERCENT_TRIGGERING_COUNT = result.OutputCounter.HstHighPercentTriggeringCounter.ToString(),
                CRDL_TRIGGERING_COUNT = result.OutputCounter.HstDefactCounter.ToString(),
                MC_TRIGGERING_COUNT   = result.OutputCounter.MCDownTriggering.ToString(),
                MC_TRIGGER_TYPE       = result.OutputCounter.McTriggerType.ToString(),
                TRIGERING_TYPE        = triggerType,
                FAILURE_TYPE          = result.OutputCounter.TriggerFailureType.ToString(),
                ALL_MC_TRIGGER        = TotalMCDownTrigger.ToString(),
                PART_RUNNING          = result.AdaptivePartCounter.ToString(),
                TotalParts            = totalParts.ToString(),
                FailM1PartCounter     = mc1FailPartCounter.ToString(),
                FailM2PartCounter     = mc2FailPartCounter.ToString(),
                CurrentYield          = currentYield.ToString(),
                ALL_TIC_TRIGGERING    = TotalTICTrigger.ToString(),
                uTICdate = result.OutputCounter.LastCCCOutputUTICtime.ToString()
            };

            result.CCCDataLogger    = dataUpdate;
            CccResult.CCCDataLogger = dataUpdate;
        }