Пример #1
0
        internal bool Load(string sectionName)
        {
            Logger = LogManager.GetCurrentClassLogger();

            PluginLoader.ConfigManager.Load(this, sectionName);

            HDDFileReaderWriter1 = PluginLoader.CreateInstance <IHDDFileReaderWriter>(_hddFileReaderWriter1);
            HDDFileReaderWriter2 = PluginLoader.CreateInstance <IHDDFileReaderWriter>(_hddFileReaderWriter2);

            return(CheckComponents());
        }
Пример #2
0
        internal void Create(string specificationPath, IHDDFileReaderWriter readerWriter)
        {
            PairingKeyValuePair thicknessAverageAbs = new PairingKeyValuePair("Thickness Average Abs Condition", new List <string> {
                "TTR,AvrThickness", "Thickness[um]"
            }, "Thickness Average");
            PairingKeyValuePair thicknessAverageRel = new PairingKeyValuePair("Thickness Average Rel Condition", new List <string> {
                "TTR,AvrThickness", "Thickness[um]"
            });

            PairingKeyValuePair thicknessStdAbs = new PairingKeyValuePair("Thickness Std Abs Condition", new List <string> {
                "TTR,AvrThickness", "Thickness[um]"
            });
            PairingKeyValuePair thicknessStdRel = new PairingKeyValuePair("Thickness Std Rel Condition", new List <string> {
                "TTR,AvrThickness", "Thickness[um]"
            });

            PairingKeyValuePair ttvStdAbs = new PairingKeyValuePair("TTV Std Abs Condition", new List <string> {
                "TTV[um]"
            });
            PairingKeyValuePair sawmarkStdAbs = new PairingKeyValuePair("SawMark Std Abs Condition", new List <string> {
                "SawMark[um]"
            });

            PairingKeyValuePair resistivityStdAbs = new PairingKeyValuePair("Resistivity Average Rel Condition", new List <string> {
                "Resistivity[Ohmcm]", "Resistivity[Ωcm]"
            }, "Resistivity");
            PairingKeyValuePair resistivityStdRel = new PairingKeyValuePair("Resistivity Std Rel Condition", new List <string> {
                "Resistivity[Ohmcm]", "Resistivity[Ωcm]"
            }, "Resistivity");



            List <PairingKeyValuePair> pairList = new List <PairingKeyValuePair>();

            pairList.Add(thicknessAverageAbs);
            pairList.Add(thicknessAverageRel);
            pairList.Add(thicknessStdAbs);
            pairList.Add(thicknessStdRel);
            pairList.Add(ttvStdAbs);
            pairList.Add(sawmarkStdAbs);
            pairList.Add(resistivityStdAbs);
            pairList.Add(resistivityStdRel);



            readerWriter.WriteToFile(pairList, Path.Combine(specificationPath, $"DataNamePairs{_fileExtension}"));
        }
Пример #3
0
        internal void Create(string referencePath, IHDDFileReaderWriter readerWriter)
        {
            // ttr sample1:
            ReferenceValue refVal1 = new ReferenceValue("Thickness Average", Units.um, 200);
            ReferenceValue refVal2 = new ReferenceValue("Thickness Std", Units.um, 2);
            ReferenceValue refVal3 = new ReferenceValue("Resistivity Average", Units.Ohmcm, 1.5);

            List <IReferenceValue> referenceValues1 = new List <IReferenceValue> {
                refVal1, refVal2, refVal3
            };
            ReferenceSample referenceSample1 = new ReferenceSample("TTR Reference 01", referenceValues1);

            readerWriter.WriteToFile(referenceSample1, Path.Combine(referencePath, $"TTR_Ref_01{_fileExtension}"));


            // ttr sample2:
            ReferenceValue refVal11 = new ReferenceValue("Thickness Average", Units.um, 190);
            ReferenceValue refVal12 = new ReferenceValue("Thickness Std", Units.um, 2);
            ReferenceValue refVal13 = new ReferenceValue("Resistivity Average", Units.Ohmcm, 1.4);

            List <IReferenceValue> referenceValues11 = new List <IReferenceValue> {
                refVal11, refVal12, refVal13
            };
            ReferenceSample referenceSample11 = new ReferenceSample("TTR Reference 02", referenceValues11);

            readerWriter.WriteToFile(referenceSample11, Path.Combine(referencePath, $"TTR_Ref_02{_fileExtension}"));


            // ttr sample2:
            ReferenceValue refVal21 = new ReferenceValue("Thickness Average", Units.um, 210);
            ReferenceValue refVal22 = new ReferenceValue("Thickness Std", Units.um, 2);
            ReferenceValue refVal23 = new ReferenceValue("Resistivity Average", Units.Ohmcm, 1.6);

            List <IReferenceValue> referenceValues21 = new List <IReferenceValue> {
                refVal21, refVal22, refVal23
            };

            ReferenceSample referenceSample21 = new ReferenceSample("TTR Reference 03", referenceValues21);

            readerWriter.WriteToFile(referenceSample21, Path.Combine(referencePath, $"TTR_Ref_03{_fileExtension}"));
        }
Пример #4
0
        internal void Create(string specificationPath, IHDDFileReaderWriter readerWriter)
        {
            // thickness specification 01:

            ICondition <double> thicknessAverageAbsCondition = new SimpleCondition()
            {
                Name = "Thickness Average Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.Average,
                LeftValue         = 2,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessAverageAbsCondition.CalculationTypeHandler.Relativity = Relativity.Absolute;


            ICondition <double> thicknessAverageRelCondition = new SimpleCondition()
            {
                Name = "Thickness Average Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.Average,
                LeftValue         = 1,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessAverageRelCondition.CalculationTypeHandler.Relativity = Relativity.Relative;


            ICondition <double> thicknessStdAbsCondition = new SimpleCondition()
            {
                Name = "Thickness Std Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 1,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessStdAbsCondition.CalculationTypeHandler.Relativity = Relativity.Absolute;


            ICondition <double> thicknessStdRelCondition = new SimpleCondition()
            {
                Name = "Thickness Std Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 0.5,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessStdRelCondition.CalculationTypeHandler.Relativity = Relativity.Relative;


            // ttv psecification:
            ICondition <double> ttvStdAbsCondition = new SimpleCondition()
            {
                Name = "TTV Std Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 2,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            ttvStdAbsCondition.CalculationTypeHandler.Relativity = Relativity.Absolute;


            // sawmark specification:
            ICondition <double> sawmarkStdAbsCondition = new SimpleCondition()
            {
                Name = "SawMark Std Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 2,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            sawmarkStdAbsCondition.CalculationTypeHandler.Relativity = Relativity.Absolute;


            // resisitivity conditions

            ICondition <double> resistivityAverageRelCondition = new SimpleCondition()
            {
                Name = "Resistivity Average Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.Average,
                LeftValue         = 5,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            resistivityAverageRelCondition.CalculationTypeHandler.Relativity = Relativity.Relative;


            ICondition <double> resistivityStdRelCondition = new SimpleCondition()
            {
                Name = "Resistivity Std Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 1,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            resistivityStdRelCondition.CalculationTypeHandler.Relativity = Relativity.Relative;


            IQuantitySpecificationHandler thicknessQuantitySpecification = new QuantitySpecification();

            thicknessQuantitySpecification.Quantity   = new Quantity(Units.um, "Thickness Average");
            thicknessQuantitySpecification.Conditions = new List <ICondition> {
                thicknessAverageAbsCondition, thicknessAverageRelCondition, thicknessStdAbsCondition, thicknessStdRelCondition
            };

            IQuantitySpecificationHandler ttvQuantitySpecification = new QuantitySpecification();

            ttvQuantitySpecification.Quantity   = new Quantity(Units.um, "TTV");
            ttvQuantitySpecification.Conditions = new List <ICondition> {
                ttvStdAbsCondition
            };

            IQuantitySpecificationHandler sawmarkQuantitySpecification = new QuantitySpecification();

            sawmarkQuantitySpecification.Quantity   = new Quantity(Units.um, "Sawmark");
            sawmarkQuantitySpecification.Conditions = new List <ICondition> {
                sawmarkStdAbsCondition
            };

            IQuantitySpecificationHandler resistivityQuantitySpecification = new QuantitySpecification();

            resistivityQuantitySpecification.Quantity   = new Quantity(Units.um, "Resistivity Average");
            resistivityQuantitySpecification.Conditions = new List <ICondition> {
                resistivityAverageRelCondition, resistivityStdRelCondition
            };


            List <IQuantitySpecification> quanSpecList = new List <IQuantitySpecification>
            {
                thicknessQuantitySpecification,
                ttvQuantitySpecification,
                sawmarkQuantitySpecification,
                resistivityQuantitySpecification
            };


            IToolSpecificationHandler specificationHandler = new ToolSpecification
            {
                Name     = "TTR Compliant Specification",
                ToolName = ToolNames.TTR,
                QuantitySpecifications = quanSpecList
            };

            readerWriter.WriteToFile(specificationHandler, Path.Combine(specificationPath, $"TTR_Spec_01{_fileExtension}"));


            //-----------------------------------------------------------------------------------------------------------------------------------
            // thickness specification 02:

            ICondition <double> thicknessAverageAbsCondition2 = new SimpleCondition()
            {
                Name = "Thickness Average Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.Average,
                LeftValue         = 2,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessAverageAbsCondition2.CalculationTypeHandler.Relativity = Relativity.Absolute;

            ICondition <double> thicknessAverageRelCondition2 = new SimpleCondition()
            {
                Name = "Thickness Average Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.Average,
                LeftValue         = 1,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessAverageRelCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            ICondition <double> thicknessStdAbsCondition2 = new SimpleCondition()
            {
                Name = "Thickness Std Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 1,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessStdAbsCondition2.CalculationTypeHandler.Relativity = Relativity.Absolute;

            ICondition <double> thicknessStdRelCondition2 = new SimpleCondition()
            {
                Name = "Thickness Std Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 0.5,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessStdRelCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            ICondition <double> thicknessCpkCondition2 = new CpkCondition()
            {
                Name = "Thickness Cpk Condition",
                CalculationTypeHandler = CalculationTypeHandler.Cpk,
                LeftValue         = 1.33,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                HalfTolerance     = 1
            };

            thicknessCpkCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            // ttv psecification:
            ICondition <double> ttvStdAbsCondition2 = new SimpleCondition()
            {
                Name = "TTV Std Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 2,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            ttvStdAbsCondition2.CalculationTypeHandler.Relativity = Relativity.Absolute;


            ICondition <double> ttvCpkCondition2 = new CpkCondition()
            {
                Name = "TTV Cpk Condition",
                CalculationTypeHandler = CalculationTypeHandler.Cpk,
                LeftValue         = 1.33,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                HalfTolerance     = 2
            };

            ttvCpkCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            // sawmark psecification:
            ICondition <double> sawmarkStdAbsCondition2 = new SimpleCondition()
            {
                Name = "SawMark Std Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 2,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            sawmarkStdAbsCondition2.CalculationTypeHandler.Relativity = Relativity.Absolute;


            ICondition <double> sawmarkCpkCondition2 = new CpkCondition()
            {
                Name = "SawMark Cpk Condition",
                CalculationTypeHandler = CalculationTypeHandler.Cpk,
                LeftValue         = 1.33,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                HalfTolerance     = 4
            };

            sawmarkCpkCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            // resistivity conditions
            ICondition <double> resistivityAverageRelCondition2 = new SimpleCondition()
            {
                Name = "Resistivity Average Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.Average,
                LeftValue         = 5,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            resistivityAverageRelCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            ICondition <double> resistivityStdRelCondition2 = new SimpleCondition()
            {
                Name = "Resistivity Std Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 1,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            resistivityStdRelCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            ICondition <double> resistivityCpkCondition2 = new CpkCondition()
            {
                Name = "Resistivity Cpk Condition",
                CalculationTypeHandler = CalculationTypeHandler.Cpk,
                LeftValue         = 1.33,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                HalfTolerance     = 2.5
            };

            resistivityCpkCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            IQuantitySpecificationHandler thicknessQuantitySpecification2 = new QuantitySpecification();

            thicknessQuantitySpecification2.Quantity   = new Quantity(Units.um, "Thickness Average");
            thicknessQuantitySpecification2.Conditions = new List <ICondition> {
                thicknessAverageAbsCondition2, thicknessStdAbsCondition2, thicknessStdAbsCondition2, thicknessStdRelCondition2, thicknessCpkCondition2
            };

            IQuantitySpecificationHandler ttvQuantitySpecification2 = new QuantitySpecification();

            ttvQuantitySpecification2.Quantity   = new Quantity(Units.um, "TTV");
            ttvQuantitySpecification2.Conditions = new List <ICondition> {
                ttvStdAbsCondition2, ttvCpkCondition2
            };

            IQuantitySpecificationHandler sawmarkQuantitySpecification2 = new QuantitySpecification();

            sawmarkQuantitySpecification2.Quantity   = new Quantity(Units.um, "Sawmark");
            sawmarkQuantitySpecification2.Conditions = new List <ICondition> {
                sawmarkStdAbsCondition2, sawmarkCpkCondition2
            };


            IQuantitySpecificationHandler resistivityQuantitySpecification2 = new QuantitySpecification();

            resistivityQuantitySpecification2.Quantity   = new Quantity(Units.um, "Resistivity Average");
            resistivityQuantitySpecification2.Conditions = new List <ICondition> {
                resistivityAverageRelCondition2, resistivityStdRelCondition2, resistivityCpkCondition2
            };

            List <IQuantitySpecification> quanSpecList2 = new List <IQuantitySpecification>
            {
                thicknessQuantitySpecification2,
                ttvQuantitySpecification2,
                sawmarkQuantitySpecification2,
                resistivityQuantitySpecification2
            };


            IToolSpecificationHandler specificationHandler2 = new ToolSpecification
            {
                Name     = "TTR Strict Specification",
                ToolName = ToolNames.TTR,
                QuantitySpecifications = quanSpecList2
            };

            readerWriter.WriteToFile(specificationHandler2, Path.Combine(specificationPath, $"TTR_Spec_02{_fileExtension}"));
        }