private void Set_TD_Condition(ProductTest TestCondition) { SetVCC(Convert.ToDouble(TestCondition.VCC)); SetVbat(Convert.ToDouble(TestCondition.VBAT), 1.0); SetVEN(Arb_Channel.Channel_1, TestCondition.Txen_Ven, true); SetVEN(Arb_Channel.Channel_2, TestCondition.Vramp, true); util.Wait(intDelay_PowerSupply); //if (is_Mipi) frmMipi.ShowDialog(); }
private void Set_WCDMA_Condition(ProductTest TestCondition) { SetVCC(Convert.ToDouble(TestCondition.VCC)); SetVbat(Convert.ToDouble(TestCondition.VBAT), 1.0); SetVEN(Arb_Channel.Channel_1, TestCondition.Txen_Ven, true); SetVEN(Arb_Channel.Channel_2, TestCondition.Vramp, true); util.Wait(intDelay_PowerSupply); }
private int Set_CW_Condition(ProductTest TestCondition) { int delaytime = 0; if (first_run) { SetVCC(Convert.ToDouble(TestCondition.VCC)); SetVramp(Convert.ToDouble(TestCondition.Vramp)); SetTXEnable(Convert.ToDouble(TestCondition.Txen_Ven)); util.Wait(intDelay_PowerSupply); first_run = false; } else { if (Convert.ToDouble(TestCondition.VCC) != last_vcc) { SetVCC(Convert.ToDouble(TestCondition.VCC)); delaytime = intDelay_PowerSupply; } if (Convert.ToDouble(TestCondition.Vramp) != last_vramp) { SetVramp(Convert.ToDouble(TestCondition.Vramp)); if (intDelay_Arb > delaytime) delaytime = intDelay_Arb; } if (Convert.ToDouble(TestCondition.Txen_Ven) != last_txen) { SetTXEnable(Convert.ToDouble(TestCondition.Txen_Ven)); if (intDelay_Arb > delaytime) delaytime = intDelay_Arb; } } last_vcc = Convert.ToDouble(TestCondition.VCC); last_txen = Convert.ToDouble(TestCondition.Txen_Ven); last_vramp = Convert.ToDouble(TestCondition.Vramp); return delaytime; }
private void DeviceTest_WCDMA(ProductTest Test) { double dblTestResult = 0; double dblReportResult = 0; int intDelay = 60; //Seach for current Test Item int index = Array.IndexOf(Program.ProductTest, Test); #region -- Idle Current if (Test.Description.ToUpper().Contains("IDLE")) { double I_Vcc; double I_Vbat; #region BJ_1 if (Program.Location == LocationList.BJ_1) { Set_WCDMA_Condition(Test); _SRC_3G.SetOutput(Output.OFF); util.Wait(intDelay); //Idle Vbat dblTestResult = I_Vbat = _PS_VBAT.RMS_Current(PS_66319B_Channel.Channel_1); if (Program.evb) dblReportResult = Math.Round((dblTestResult * 1000), 3); else dblReportResult = Math.Round((dblTestResult * 1000), 3) + Test.SocketOffset; this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); //Idle VCC //dblTestResult = I_Vcc = _PS_VCC.High_Current(); double[] dblTemp = _PS_VCC.Meas_Current_Trig(Triger_Source.Bus, 0.1, 25, 200, 0); dblTestResult = I_Vcc = dblTemp[0]; if (Program.evb) dblReportResult = Math.Round((dblTestResult * 1000), 3); else dblReportResult = Math.Round((dblTestResult * 1000), 3) + Program.ProductTest[index + 1].SocketOffset; this.UpdateGrid(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); //Idle Total dblTestResult = I_Vbat + I_Vcc; if (Program.evb) dblReportResult = Math.Round((dblTestResult * 1000), 3); else dblReportResult = Math.Round((dblTestResult * 1000), 3) + Program.ProductTest[index + 2].SocketOffset; this.UpdateGrid(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- Idle Current #region -- Gain if (Test.Description.ToUpper().Contains("GAIN")) { double I_Vcc = 0.0; double I_Vbat = 0.0; double dblPout = 0.0; double dblPin = Test.Pin; double PoutLL = Test.Pout - 0.09; double PoutUL = Test.Pout + 0.09; WCDMA_Pin = dblPin; #region BJ_1 if (Program.Location == LocationList.BJ_1) { Set_WCDMA_Condition(Test); //_E4438C.SetModOutput(Output.OFF); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(dblPin + Test.LossIn); _SRC_3G.SetOutput(Output.ON); //_MXA_N9020A.Config__CW_Power(Test.FreqOut, 20, 30, 368, 20, 10); _MSR_3G.Config__WCDMA_CHP(Test.FreqOut); intDelay = Math.Max(intDelay_SigGen, intDelay_MXA); util.Wait(intDelay ); dblPout = _MSR_3G.Get_WCDMA_CHP_Result(); dblPout += +Test.LossOut; while (dblPout <= PoutLL || dblPout >= PoutUL) { dblPin = dblPin + Test.Pout - dblPout; if (dblPin > 4) break; _SRC_3G.SetPower(dblPin + Test.LossIn); util.Wait(intDelay * 1); dblPout = _MSR_3G.Get_WCDMA_CHP_Result(); dblPout += +Test.LossOut; WCDMA_Pin = dblPin; } //_E4438C.SetModOutput(Output.ON); //Pin dblTestResult = WCDMA_Pin; if (Program.evb) dblReportResult = Math.Round(dblTestResult, 3); else dblReportResult = Math.Round(dblTestResult, 3) + Test.SocketOffset; this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); //Pout dblTestResult = dblPout; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); //Gain dblTestResult = dblPout - WCDMA_Pin; if (Program.evb) dblReportResult = Math.Round(dblTestResult, 3); else dblReportResult = Math.Round(dblTestResult, 3) + Program.ProductTest[index + 2].SocketOffset; this.UpdateGrid(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); //Icc Vbat dblTestResult = I_Vbat = _PS_VBAT.RMS_Current(PS_66319B_Channel.Channel_1); if (Program.evb) dblReportResult = Math.Round((dblTestResult * 1000), 3); else dblReportResult = Math.Round((dblTestResult * 1000), 3) + Program.ProductTest[index + 3].SocketOffset; this.UpdateGrid(Program.ProductTest[index + 3].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 3].TestItem.ToString(), dblReportResult); //Icc VCC //dblTestResult = I_Vcc = _PS_VCC.High_Current(); double[] dblTemp = _PS_VCC.Meas_Current_Trig(Triger_Source.Bus, 0.1, 25, 200, 0); dblTestResult = I_Vcc = dblTemp[0]; if (Program.evb) dblReportResult = Math.Round((dblTestResult * 1000), 3); else dblReportResult = Math.Round((dblTestResult * 1000), 3) + Program.ProductTest[index + 4].SocketOffset; this.UpdateGrid(Program.ProductTest[index + 4].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 4].TestItem.ToString(), dblReportResult); //Icc Total dblTestResult = I_Vcc + I_Vbat; if (Program.evb) dblReportResult = Math.Round((dblTestResult * 1000), 3); else dblReportResult = Math.Round((dblTestResult * 1000), 3) + Program.ProductTest[index + 5].SocketOffset; this.UpdateGrid(Program.ProductTest[index + 5].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 5].TestItem.ToString(), dblReportResult); //PAE dblTestResult = Math.Pow(10, ((dblPout - 30) / 10)) / Test.VCC / (I_Vcc + I_Vbat); dblReportResult = Math.Round((dblTestResult * 100), 3); this.UpdateGrid(Program.ProductTest[index + 6].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 6].TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- GAIN #region -- ACP if (Test.Description.ToUpper().Contains("ACP")) { double dblPin; double[] dblResult; if (WCDMA_Pin == -99) dblPin = Test.Pin; else dblPin = WCDMA_Pin; #region BJ_1 if (Program.Location == LocationList.BJ_1) { Set_WCDMA_Condition(Test); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(dblPin + Test.LossIn); _SRC_3G.SetOutput(Output.ON); _MSR_3G.Config__WCDMA_ACP(Test.FreqOut); intDelay = Math.Max(intDelay_SigGen, intDelay_MXA); util.Wait(intDelay * 1); dblResult = _MSR_3G.Get_WCDMA_ACP_Result(); //ACP -5MHz dblTestResult = dblResult[1]; if (Program.evb) dblReportResult = Math.Round(dblTestResult, 3); else dblReportResult = Math.Round(dblTestResult, 3) + Test.SocketOffset; this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); //ACP +5MHz dblTestResult = dblResult[2]; if (Program.evb) dblReportResult = Math.Round(dblTestResult, 3); else dblReportResult = Math.Round(dblTestResult, 3) + Program.ProductTest[index + 1].SocketOffset; this.UpdateGrid(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); //ACP -10MHz dblTestResult = dblResult[3]; if (Program.evb) dblReportResult = Math.Round(dblTestResult, 3); else dblReportResult = Math.Round(dblTestResult, 3) + Program.ProductTest[index + 2].SocketOffset; this.UpdateGrid(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); //ACP +10MHz dblTestResult = dblResult[4]; if (Program.evb) dblReportResult = Math.Round(dblTestResult, 3); else dblReportResult = Math.Round(dblTestResult, 3) + Program.ProductTest[index + 3].SocketOffset; this.UpdateGrid(Program.ProductTest[index + 3].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 3].TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- ACP #region -- EVM if (Test.Description.ToUpper().Contains("EVM")) { double dblPin; if (WCDMA_Pin == -99) dblPin = Test.Pin; else dblPin = WCDMA_Pin; #region BJ_1 if (Program.Location == LocationList.BJ_1) { Set_WCDMA_Condition(Test); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(dblPin + Test.LossIn); _SRC_3G.SetOutput(Output.ON); _MSR_3G.Config__WCDMA_EVM(Test.FreqOut); intDelay = Math.Max(intDelay_SigGen, intDelay_MXA); util.Wait(intDelay * 1); dblTestResult = _MSR_3G.Get_WCDMA_EVM_Result(); //EVM if (Program.evb) dblReportResult = Math.Round(dblTestResult, 3); else dblReportResult = Math.Round(dblTestResult, 3) + Test.SocketOffset; this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- EVM #region -- Harmonic if (Test.Description.ToUpper().Contains("HARMONIC")) { double dblPin; if (WCDMA_Pin == -99) dblPin = Test.Pin; else dblPin = WCDMA_Pin; #region BJ_1 if (Program.Location == LocationList.BJ_1) { Set_WCDMA_Condition(Test); _SRC_3G.SetModOutput(Output.OFF); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(dblPin + Test.LossIn); _SRC_3G.SetOutput(Output.ON); _MSR_4G.Config__CW_Power_FreeRun(Test.FreqOut, 30, 0, 2, 10); intDelay = Math.Max(intDelay_SigGen, intDelay_MXA); util.Wait(intDelay); MessageBox.Show("Connect highpass filter", "WCDMA Testing", MessageBoxButtons.OK); dblTestResult = _MSR_4G.Get_CW_PowerResult(); dblTestResult += Test.LossOut; _SRC_3G.SetModOutput(Output.ON); //Harmonic if (Program.evb) dblReportResult = Math.Round(dblTestResult, 3); else dblReportResult = Math.Round(dblTestResult, 3) + Test.SocketOffset; this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); MessageBox.Show("Disconnect highpass filter", "WCDMA Testing", MessageBoxButtons.OK); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- Harmonic }
private void DeviceTest_TDSCDMA(ProductTest Test) { double dblTestResult = 0; double dblReportResult = 0; int intDelay = 60; //Seach for current Test Item int index = Array.IndexOf(Program.ProductTest, Test); #region -- Idle Current if (Test.Description.ToUpper().Contains("IDLE")) { double I_Vcc; #region BJ_1 if (Program.Location == LocationList.BJ_1) { _SRC_3G.SetOutput(Output.OFF); Set_TD_Condition(Test); util.Wait(intDelay); //Idle VCC //dblTestResult = I_Vcc = _PS_VCC.High_Current(); double[] dblTemp = _PS_VCC.Meas_Current_Trig(Triger_Source.Bus, 0.1, 25, 200, 0); dblTestResult = I_Vcc = dblTemp[2]; dblReportResult = Math.Round((dblTestResult * 1000), 3); this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- Idle Current #region -- Gain if (Test.Description.ToUpper().Contains("GAIN")) { double I_Vcc = 0.0; double I_Vbat = 0.0; double dblPout = 0.0; double dblPin = Test.Pin; double PoutLL = Test.Pout - 0.05; double PoutUL = Test.Pout + 0.05; TDSCDMA_Pin = dblPin; #region BJ_1 if (Program.Location == LocationList.BJ_1) { Set_TD_Condition(Test); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(dblPin + Test.LossIn); _SRC_3G.SetOutput(Output.ON); _MSR_3G.Config__TDSCDMA_CHP(Test.FreqOut); intDelay = Math.Max(intDelay_SigGen, intDelay_MXA); util.Wait(intDelay * 10); dblPout = _MSR_3G.Get_TDSCDMA_CHP_Result(); dblPout += +Test.LossOut; while (dblPout <= PoutLL || dblPout >= PoutUL) { dblPin = dblPin + Test.Pout - dblPout; if (dblPin > 2) break; _SRC_3G.SetPower(dblPin + Test.LossIn); util.Wait(intDelay * 3); dblPout = _MSR_3G.Get_TDSCDMA_CHP_Result(); dblPout += +Test.LossOut; TDSCDMA_Pin = dblPin; } //Pout dblTestResult = dblPout; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); //Pin dblTestResult = TDSCDMA_Pin; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); //Icc VCC //dblTestResult = I_Vcc = _PS_VCC.High_Current(); double[] dblTemp = _PS_VCC.Meas_Current_Trig(Triger_Source.Bus, 0.1, 25, 200, 0); dblTestResult = I_Vcc = dblTemp[2]; dblReportResult = Math.Round(dblTestResult * 1000, 3); this.UpdateGrid(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); //PAE dblTestResult = Math.Pow(10, ((dblPout - 30) / 10)) / Test.VCC / (I_Vcc + I_Vbat); dblReportResult = Math.Round((dblTestResult * 100), 3); this.UpdateGrid(Program.ProductTest[index + 3].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 3].TestItem.ToString(), dblReportResult); //Gain dblTestResult = dblPout - TDSCDMA_Pin; dblReportResult = Math.Round((dblTestResult), 3); this.UpdateGrid(Program.ProductTest[index + 4].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 4].TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- GAIN #region -- ACP if (Test.Description.ToUpper().Contains("ACP")) { double dblPin; double[] dblResult; if (TDSCDMA_Pin == -99) dblPin = Test.Pin; else dblPin = TDSCDMA_Pin; #region BJ_1 if (Program.Location == LocationList.BJ_1) { Set_TD_Condition(Test); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(dblPin + Test.LossIn); _SRC_3G.SetOutput(Output.ON); _MSR_3G.Config__TDSCDMA_ACP(Test.FreqOut, 5); intDelay = Math.Max(intDelay_SigGen, intDelay_MXA); util.Wait(intDelay * 1); dblResult = _MSR_3G.Get_TDSCDMA_ACP_Result(); //ACP -1.6MHz dblTestResult = dblResult[1]; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); //ACP +1.6MHz dblTestResult = dblResult[2]; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); //ACP -3.2MHz dblTestResult = dblResult[3]; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); //ACP +3.2MHz dblTestResult = dblResult[4]; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Program.ProductTest[index + 3].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 3].TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- ACP #region -- EVM if (Test.Description.ToUpper().Contains("EVM")) { double dblPin; if (TDSCDMA_Pin == -99) dblPin = Test.Pin; else dblPin = TDSCDMA_Pin; #region BJ_1 if (Program.Location == LocationList.BJ_1) { Set_TD_Condition(Test); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(dblPin + Test.LossIn); _SRC_3G.SetOutput(Output.ON); _MSR_3G.Config__TDSCDMA_EVM(Test.FreqOut); intDelay = Math.Max(intDelay_SigGen, intDelay_MXA); util.Wait(intDelay * 1); dblTestResult = _MSR_3G.Get_TDSCDMA_EVM_Result(); //EVM dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- EVM }
private void DeviceTest_FDD(ProductTest Test) { double dblTestResult = 0; double dblReportResult = 0; int intDelay = 60; //Seach for current Test Item int index = Array.IndexOf(Program.ProductTest, Test); #region -- Idle Current if (Test.Description.ToUpper().Contains("IDLE")) { double I_Vcc; double I_Vbat; #region BJ_1 if (Program.Location == LocationList.BJ_1) { Set_WCDMA_Condition(Test); _SRC_4G.SetOutput(Output.OFF); util.Wait(intDelay); //Idle Vbat dblTestResult = I_Vbat = _PS_VBAT.RMS_Current(PS_66319B_Channel.Channel_1); if (Program.evb) dblReportResult = Math.Round((dblTestResult * 1000), 3); else dblReportResult = Math.Round((dblTestResult * 1000), 3) + Test.SocketOffset; //this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); //this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); this.UpdateGrid(Test.TestItem.ToString(), 0.1); this.UpdateProductionTestResult(Test.TestItem.ToString(), 0.1); //Idle VCC //dblTestResult = I_Vcc = _PS_VCC.High_Current(); double[] dblTemp = _PS_VCC.Meas_Current_Trig(Triger_Source.Bus, 0.1, 25, 200, 0); dblTestResult = I_Vcc = dblTemp[0]; if (Program.evb) dblReportResult = Math.Round((dblTestResult * 1000), 3); else dblReportResult = Math.Round((dblTestResult * 1000), 3) + Program.ProductTest[index + 1].SocketOffset; this.UpdateGrid(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); //Idle Total this.UpdateGrid(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- Idle Current #region -- Gain if (Test.Description.ToUpper().Contains("GAIN")) { double I_Vcc = 0.0; double I_Vbat = 0.0; double dblPout = 0.0; double dblPin = Test.Pin; double PoutLL = Test.Pout - 0.05; double PoutUL = Test.Pout + 0.05; LTE_Pin = dblPin; #region BJ_1 if (Program.Location == LocationList.BJ_1) { Set_WCDMA_Condition(Test); _SRC_4G.SetFrequency(Test.FreqIn); _SRC_4G.SetPower(dblPin + Test.LossIn); _SRC_4G.SetOutput(Output.ON); _MSR_4G.Config__LTEFDD_CHP(Test.FreqOut); _MSR_4G.SetAttenuattor(10); intDelay = Math.Max(intDelay_SigGen, intDelay_MXA); util.Wait(intDelay); dblPout = _MSR_4G.Get_LTEFDD_CHP_Result(); dblPout += +Test.LossOut; while (dblPout <= PoutLL || dblPout >= PoutUL) { dblPin = dblPin + Test.Pout - dblPout; if (dblPin > 7) break; _SRC_4G.SetPower(dblPin + Test.LossIn); util.Wait(intDelay); dblPout = _MSR_4G.Get_LTEFDD_CHP_Result(); dblPout += +Test.LossOut; LTE_Pin = dblPin; } //Pin dblTestResult = LTE_Pin; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); //Pout dblTestResult = dblPout; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); //Gain dblTestResult = dblPout - LTE_Pin; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); //Icc Vbat this.UpdateGrid(Program.ProductTest[index + 3].TestItem.ToString(), 0.1); this.UpdateProductionTestResult(Program.ProductTest[index + 3].TestItem.ToString(), 0.1); //Icc Vcc //dblTestResult = I_Vcc = _PS_VCC.High_Current(); double[] dblTemp = _PS_VCC.Meas_Current_Trig(Triger_Source.Bus, 0.1, 25, 200, 0); dblTestResult = I_Vcc = dblTemp[2]; dblReportResult = Math.Round((dblTestResult * 1000), 3); this.UpdateGrid(Program.ProductTest[index + 4].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 3].TestItem.ToString(), dblReportResult); //Icc Total this.UpdateGrid(Program.ProductTest[index + 5].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 3].TestItem.ToString(), dblReportResult); //PAE dblTestResult = Math.Pow(10, ((dblPout - 30) / 10)) / Test.VCC / (I_Vcc + I_Vbat); dblReportResult = Math.Round((dblTestResult * 100), 3); this.UpdateGrid(Program.ProductTest[index + 6].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 4].TestItem.ToString(), dblReportResult); //_E4438C.SetModOutput(Output.ON); util.Wait(1000); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- GAIN #region -- ACP if (Test.Description.ToUpper().Contains("ACP")) { double dblPin; double[] dblResult; if (LTE_Pin == -99) dblPin = Test.Pin; else dblPin = LTE_Pin; #region BJ_1 if (Program.Location == LocationList.BJ_1) { Set_WCDMA_Condition(Test); _SRC_4G.SetFrequency(Test.FreqIn); _SRC_4G.SetPower(dblPin + Test.LossIn); _SRC_4G.SetOutput(Output.ON); _MSR_4G.Config__LTEFDD_ACP_EULTRA(Test.FreqOut); intDelay = Math.Max(intDelay_SigGen, intDelay_MXA); util.Wait(intDelay * 1); dblResult = _MSR_4G.Get_LTEFDD_ACP_EULTRA_Result(); // EUTRA ACP dblTestResult = dblResult[1]; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); _MSR_4G.Config__LTEFDD_ACP_ULTRA(Test.FreqOut); intDelay = Math.Max(intDelay_SigGen, intDelay_MXA); util.Wait(intDelay * 1); dblResult = _MSR_4G.Get_LTEFDD_ACP_ULTRA_Result(); // UTRA ACP1 dblTestResult = dblResult[1]; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); // UTRA ACP2 dblTestResult = dblResult[3]; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Program.ProductTest[index + 2].TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 1].TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- ACP #region -- EVM if (Test.Description.ToUpper().Contains("EVM")) { double dblPin; if (LTE_Pin == -99) dblPin = Test.Pin; else dblPin = LTE_Pin; #region BJ_1 if (Program.Location == LocationList.BJ_1) { Set_WCDMA_Condition(Test); _SRC_4G.SetFrequency(Test.FreqIn); _SRC_4G.SetPower(dblPin + Test.LossIn); _SRC_4G.SetOutput(Output.ON); _MSR_4G.Config__LTEFDD_EVM(Test.FreqOut); intDelay = Math.Max(intDelay_SigGen, intDelay_MXA); util.Wait(intDelay * 1); dblTestResult = _MSR_4G.Get_LTEFDD_EVM_Result(); //EVM dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- EVM }
private void DeviceTest_CW(ProductTest Test) { double dblTestResult = 0; double dblReportResult = 0; double LoopResult = 0; double LoopResult_Vramp_Low = 0; double LoopResult_Vramo_High = 0; double Slope_mV = 0; int intDelay = 60; //Seach for current Test Item int index = Array.IndexOf(Program.ProductTest, Test); #region -- Idle Current if (Test.Description.ToUpper().Contains("IDLE")) { #region BJ_1 if (Program.Location == LocationList.BJ_1) { intDelay = Set_CW_Condition(Test); _SRC_3G.SetOutput(Output.OFF); util.Wait(intDelay); //dblTestResult = _PS_VCC.High_Current(); double[] dblTemp = _PS_VCC.Meas_Current_Trig(Triger_Source.Bus, 0.1, 25, 200, 0); dblTestResult = dblTemp[2]; dblReportResult = Math.Round((dblTestResult * 1000), 3); this.UpdateGrid(Test.TestItem.ToString(), dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion #region -- Pout if (Test.Description.ToUpper().Contains("POUT")) { #region BJ_1 if (Program.Location == LocationList.BJ_1) { intDelay = Set_CW_Condition(Test); _SRC_3G.SetOutput(Output.ON); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(Test.Pin + Test.LossIn); _MSR_3G.Config__CW_Power(Test.FreqOut, 10, 30, 368, 0.7, 10); _MSR_3G.SetAttenuattor(10); _MSR_3G.SetFrequency(Test.FreqOut); util.Wait(Math.Max(intDelay_MXA, intDelay_SigGen)); dblTestResult = _MSR_3G.Get_CW_PowerResult(); dblReportResult = Math.Round((dblTestResult + Test.LossOut), 3); this.UpdateGrid(Test.TestItem, dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion #region -- PowerPAE if (Test.Description.ToUpper().Contains("POWERPAE")) { #region BJ_1 if (Program.Location == LocationList.BJ_1) { intDelay = Set_CW_Condition(Test); _SRC_3G.SetOutput(Output.ON); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(Test.Pin + Test.LossIn); _MSR_3G.Config__CW_Power(Test.FreqOut, 10, 30, 368, 0.7, 10); _MSR_3G.SetAttenuattor(10); _MSR_3G.SetFrequency(Test.FreqOut); util.Wait(Math.Max(intDelay_MXA, intDelay_SigGen)); //Pout dblTestResult = _MSR_3G.Get_CW_PowerResult(); dblReportResult = dblMaxPout = Math.Round((dblTestResult + Test.LossOut), 3); this.UpdateGrid(Test.TestItem, dblReportResult); this.UpdateProductionTestResult(Test.TestItem.ToString(), dblReportResult); //Icc //dblTestResult = _PS_VCC.High_Current(); double[] dblTemp = _PS_VCC.Meas_Current_Trig(Triger_Source.Bus, 0.1, 25, 200, 0); dblTestResult = dblTemp[2]; dblReportResult = dblTestResult * 1000; this.UpdateGrid(Program.ProductTest[index + 1].TestItem, dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 1].TestItem, dblReportResult); //PAE dblTestResult = (Math.Pow(10, ((dblMaxPout - 30) / 10))) / Test.VCC / dblTestResult; dblReportResult = Math.Round(dblTestResult * 100, 3); this.UpdateGrid(Program.ProductTest[index + 2].TestItem, dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 2].TestItem, dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion #region -- Power Servo if (Test.Description.ToUpper().Contains("SERVO")) { if (dblMaxPout < Test.Pout) { dblRatedVramp = 1.8; return; } #region BJ_1 if (Program.Location == LocationList.BJ_1) { int Count = 0; intDelay = Set_CW_Condition(Test); _SRC_3G.SetOutput(Output.ON); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(Test.Pin + Test.LossIn); this.SetVramp(1.2); _MSR_3G.Config__CW_Power(Test.FreqOut, 10, 30, 368, 0.7, 10); _MSR_3G.SetAttenuattor(10); _MSR_3G.SetFrequency(Test.FreqOut); util.Wait(Math.Max(intDelay_MXA, intDelay_SigGen)); LoopResult_Vramp_Low = _MSR_3G.Get_CW_PowerResult(); this.SetVramp(1.6); util.Wait(intDelay_MXA); LoopResult_Vramo_High = _MSR_3G.Get_CW_PowerResult(); Slope_mV = (LoopResult_Vramo_High - LoopResult_Vramp_Low) / 400; LoopResult = LoopResult_Vramp_Low + Test.LossOut; dblRatedVramp = 1.2 + (Test.Pout - LoopResult) / Slope_mV / 1000; if (dblRatedVramp < 0.8 || dblRatedVramp > 1.8) dblRatedVramp = 1.8; while (Math.Abs(LoopResult - Test.Pout) > 0.05 && dblRatedVramp < 1.8 && dblRatedVramp > 0.8) { this.SetVramp(dblRatedVramp); util.Wait(intDelay_PowerMeter); LoopResult = _MSR_3G.Get_CW_PowerResult() + Test.LossOut; dblRatedVramp = dblRatedVramp + (Test.Pout - LoopResult) / Slope_mV / 1000; Count++; if (Count > 20) break; } //Rated Pout dblTestResult = LoopResult; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Test.TestItem, dblReportResult); this.UpdateProductionTestResult(Test.TestItem, dblReportResult); //Rated Vramp dblTestResult = dblRatedVramp; dblReportResult = Math.Round(dblTestResult, 3); this.UpdateGrid(Program.ProductTest[index + 1].TestItem, dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 1].TestItem, dblReportResult); //Rated Icc //dblTestResult = _PS_VCC.High_Current(); double[] dblTemp = _PS_VCC.Meas_Current_Trig(Triger_Source.Bus, 0.1, 25, 200, 0); dblTestResult = dblTemp[2]; dblReportResult = dblTestResult * 1000; this.UpdateGrid(Program.ProductTest[index + 2].TestItem, dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 2].TestItem, dblReportResult); //Rated PAE dblTestResult = (Math.Pow(10, ((LoopResult - 30) / 10))) / Test.VCC / dblTestResult; dblReportResult = Math.Round(dblTestResult * 100, 3); this.UpdateGrid(Program.ProductTest[index + 3].TestItem, dblReportResult); this.UpdateProductionTestResult(Program.ProductTest[index + 3].TestItem, dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- Power Servo #region -- Harmonic if (Test.Description.ToUpper().Contains("HARMONIC")) { if (Test.Vramp == 0.01) { if (dblRatedVramp == 1.8) return; Test.Vramp = dblRatedVramp; } #region BJ_1 if (Program.Location == LocationList.BJ_1) { intDelay = Set_CW_Condition(Test); _SRC_3G.SetOutput(Output.ON); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(Test.Pin + Test.LossIn); _MSR_4G.Config__CW_Power(Test.FreqOut, 0, 30, 368, 0.7, 10); _MSR_4G.SetAttenuattor(0); _MSR_4G.SetFrequency(Test.FreqOut); util.Wait(Math.Max(intDelay_SigGen, intDelay_MXA)); dblTestResult = _MSR_4G.Get_CW_PowerResult(); dblReportResult = Math.Round(dblTestResult + Test.LossOut, 3); this.UpdateGrid(Test.TestItem, dblReportResult); this.UpdateProductionTestResult(Test.TestItem, dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- Harmonic #region -- Stress if (Test.Description.ToUpper().Contains("STRESS")) { double dbl2ndMaxPout = 0; double VCCNormal = Program.ProductTest[1].VCC; double VCCStress = Test.VCC; #region BJ_1 if (Program.Location == LocationList.BJ_1) { _SRC_3G.SetOutput(Output.ON); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(Test.Pin + Test.LossIn); // Test 1st Normal Max Pout if not tested before if (dblMaxPout == 0) { Test.VCC = VCCNormal; intDelay = Math.Max(intDelay, Set_CW_Condition(Test)); _MSR_3G.Config__CW_Power(Test.FreqOut, 10, 30, 368, 0.7, 10); _MSR_3G.SetAttenuattor(10); _MSR_3G.SetFrequency(Test.FreqOut); util.Wait(Math.Max(intDelay_MXA, intDelay_SigGen)); dblTestResult = _MSR_3G.Get_CW_PowerResult(); dblMaxPout = Math.Round((dblTestResult + Test.LossOut), 3); } //Stress Test.VCC = VCCStress; intDelay = Math.Max(intDelay, Set_CW_Condition(Test)); util.Wait(intDelay + 5); //Stress one time frame //Test 2nd Normal Max Pout Test.VCC = VCCNormal; intDelay = Math.Max(intDelay, Set_CW_Condition(Test)); _MSR_3G.Config__CW_Power(Test.FreqOut, 0, 30, 368, 0.7, 10); _MSR_3G.SetAttenuattor(10); _MSR_3G.SetFrequency(Test.FreqOut); util.Wait(Math.Max(intDelay_MXA, intDelay_SigGen)); dblTestResult = _MSR_3G.Get_CW_PowerResult(); dbl2ndMaxPout = Math.Round((dblTestResult + Test.LossOut), 3); dblReportResult = Math.Round((dbl2ndMaxPout - dblMaxPout), 3); //Stress delta this.UpdateGrid(Test.TestItem, dblReportResult); this.UpdateProductionTestResult(Test.TestItem, dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- Stress #region -- RX if (Test.Description.ToUpper().Contains("RX")) { string msgString = ""; if (cbxMIPI.Checked) { SetVCC(Program.ProductTest[1].VCC); msgString = "Make sure everything is setup for testing " + Test.Description + "\r\n" + " 1) Connect rx source cable to " + Test.Description + "\r\n" + " 2) Set Mipi control to " + Test.TestItem + " mode\r\n" + " 3) Disconnect highpass filter"; MessageBox.Show(msgString, Test.TestItem + " Testing", MessageBoxButtons.OK); this.Refresh(); frmMipi.ShowDialog(); util.Wait(1000); } else { msgString = "Make sure everything is setup for testing " + Test.Description +"\r\n"+ " 1) Connect rx source cable to " + Test.Description + "\r\n" + " 2) Set Control box to " + Test.Description + " mode" + "\r\n" + " GPCtrl0 : " + Test.Gpctrl0_Vmode0 + "\r\n" + " GPCtrl1 : " + Test.Gpctrl1_Vmode1 + "\r\n" + " GPCtrl2 : " + Test.Gpctrl2_Vmode2; MessageBox.Show(msgString, Test.TestItem + " Testing", MessageBoxButtons.OK); } this.Refresh(); #region BJ_1 if (Program.Location == LocationList.BJ_1) { intDelay = Set_CW_Condition(Test); _SRC_3G.SetOutput(Output.ON); _SRC_3G.SetFrequency(Test.FreqIn); _SRC_3G.SetPower(Test.Pin + Test.LossIn); _MSR_3G.Config__CW_Power(Test.FreqOut, 10, 30, 368, 0.7, 10); _MSR_3G.SetAttenuattor(10); _MSR_3G.SetFrequency(Test.FreqOut); util.Wait(Math.Max(intDelay_MXA, intDelay_SigGen)); dblTestResult = _MSR_3G.Get_CW_PowerResult(); dblReportResult = Math.Round((dblTestResult + Test.LossOut), 3); this.UpdateGrid(Test.TestItem, dblReportResult); this.UpdateProductionTestResult(Test.TestItem, dblReportResult); } #endregion BJ_1 else { throw new Exception("Bad Location"); } } #endregion -- RX }