Add Region

This commit is contained in:
YuYang Shen
2025-03-21 16:15:24 +08:00
parent 4b70eeaedb
commit 8a70c0e962
6 changed files with 98 additions and 34 deletions
Binary file not shown.
@@ -28,7 +28,7 @@
"RelativeDocumentMoniker": "Testrong.User.Program\\UserProgram.cs", "RelativeDocumentMoniker": "Testrong.User.Program\\UserProgram.cs",
"ToolTip": "D:\\WORK\\ManLin\\Verify\\UserProgram_time\\Testrong.User.Program\\UserProgram.cs", "ToolTip": "D:\\WORK\\ManLin\\Verify\\UserProgram_time\\Testrong.User.Program\\UserProgram.cs",
"RelativeToolTip": "Testrong.User.Program\\UserProgram.cs", "RelativeToolTip": "Testrong.User.Program\\UserProgram.cs",
"ViewState": "AgIAAEEEAAAAAAAAAAAIwGAEAAAdAAAAAAAAAA==", "ViewState": "AgIAAMwDAAAAAAAAAAAmwOoDAAAyAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-06-18T12:27:43.78Z", "WhenOpened": "2024-06-18T12:27:43.78Z",
"EditorCaption": "" "EditorCaption": ""
@@ -28,7 +28,7 @@
"RelativeDocumentMoniker": "Testrong.User.Program\\UserProgram.cs", "RelativeDocumentMoniker": "Testrong.User.Program\\UserProgram.cs",
"ToolTip": "D:\\WORK\\ManLin\\Verify\\UserProgram_time\\Testrong.User.Program\\UserProgram.cs", "ToolTip": "D:\\WORK\\ManLin\\Verify\\UserProgram_time\\Testrong.User.Program\\UserProgram.cs",
"RelativeToolTip": "Testrong.User.Program\\UserProgram.cs", "RelativeToolTip": "Testrong.User.Program\\UserProgram.cs",
"ViewState": "AgIAAMwDAAAAAAAAAAAmwOoDAAAyAAAAAAAAAA==", "ViewState": "AgIAAOwMAAAAAAAAAAA4wJgHAABBAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-06-18T12:27:43.78Z", "WhenOpened": "2024-06-18T12:27:43.78Z",
"EditorCaption": "" "EditorCaption": ""
+3
View File
@@ -0,0 +1,3 @@
{
"dotnet.preferCSharpExtension": true
}
@@ -0,0 +1,24 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.2.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Testrong.User.Program", "Testrong.User.Program.csproj", "{CEA70DC9-57FA-EDF5-51BB-E451A1E7E26A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CEA70DC9-57FA-EDF5-51BB-E451A1E7E26A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CEA70DC9-57FA-EDF5-51BB-E451A1E7E26A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CEA70DC9-57FA-EDF5-51BB-E451A1E7E26A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CEA70DC9-57FA-EDF5-51BB-E451A1E7E26A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {399175A2-AA9D-4BED-9765-E69B1CF3DD98}
EndGlobalSection
EndGlobal
+69 -32
View File
@@ -1440,6 +1440,7 @@ namespace Testrong.User.Program
/// <param name="testVersion"></param> /// <param name="testVersion"></param>
void Rint_FVMV_2mA_Pre(IFlowRunnerContext context, TestVersion testVersion) void Rint_FVMV_2mA_Pre(IFlowRunnerContext context, TestVersion testVersion)
{ {
#region Init Config & Variables
List<int> ChannelDps = new List<int>(); List<int> ChannelDps = new List<int>();
List<int> ChannelPmu = new List<int>(); List<int> ChannelPmu = new List<int>();
for (int m = 0; m < 256; m++) for (int m = 0; m < 256; m++)
@@ -1457,11 +1458,6 @@ namespace Testrong.User.Program
slotList.Add(slotInfos[slotLen].No); slotList.Add(slotInfos[slotLen].No);
} }
//-----config dmm3458A and ExtCalibrationBoard-----
KeysightDMM3458A dmm = new KeysightDMM3458A();
ExternalCalibrationHandle extCaliHandle = new ExternalCalibrationHandle();
string extConnStr = Select_IP[testVersion];
int extPort = port;
//-----config Board----- //-----config Board-----
byte[] armDnaPortCmd = new byte[2] { 14, 57 }; byte[] armDnaPortCmd = new byte[2] { 14, 57 };
byte[] armDnaRaw = context.Communicator.Send(armDnaPortCmd); byte[] armDnaRaw = context.Communicator.Send(armDnaPortCmd);
@@ -1470,9 +1466,6 @@ namespace Testrong.User.Program
int SlotNum = context.Communicator.SlotNo; int SlotNum = context.Communicator.SlotNo;
double[,] ExtBoard_Res = ReadRext(EXT_CAL_INIT_PATH + "ExtBoardRes.csv"); double[,] ExtBoard_Res = ReadRext(EXT_CAL_INIT_PATH + "ExtBoardRes.csv");
//Folder Related
File_Mover(SlotNum: SlotNum, slotList: slotList, pathFlag: "CAL_Single");
//-----Start Slot Number----- //-----Start Slot Number-----
StreamWriter swdata; StreamWriter swdata;
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8) swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8)
@@ -1488,11 +1481,27 @@ namespace Testrong.User.Program
context: context, context: context,
init_Flag: true init_Flag: true
); );
#endregion
#region Config DMM
//-----config dmm3458A and ExtCalibrationBoard-----
KeysightDMM3458A dmm = new KeysightDMM3458A();
ExternalCalibrationHandle extCaliHandle = new ExternalCalibrationHandle();
string extConnStr = Select_IP[testVersion];
int extPort = port;
dmm.InitDMM(ksightConnStr); dmm.InitDMM(ksightConnStr);
#endregion
//Folder Related
File_Mover(SlotNum: SlotNum, slotList: slotList, pathFlag: "CAL_Single");
string filetime = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss"); string filetime = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss");
#region Test
for (int loopk = 0; loopk < 256; loopk++) for (int loopk = 0; loopk < 256; loopk++)
{ {
#region Test Config
string[] PmuPinName = { ("A" + (ChannelPmu[loopk] < 10 ? "0" : "") + ChannelPmu[loopk]) }; string[] PmuPinName = { ("A" + (ChannelPmu[loopk] < 10 ? "0" : "") + ChannelPmu[loopk]) };
RELAY.SwitchMode(RelayMode.Open); RELAY.SwitchMode(RelayMode.Open);
RELAY.SwitchToPPMU(PmuPinName); RELAY.SwitchToPPMU(PmuPinName);
@@ -1502,11 +1511,11 @@ namespace Testrong.User.Program
string filename = EXT_CAL_PATH + filepath; string filename = EXT_CAL_PATH + filepath;
int ch = ChannelPmu[loopk]; int ch = ChannelPmu[loopk];
double[] AteMeasure = new double[SampliCount]; double[] AteMeasure = new double[SampliCount];
double[] ForceValue = new double[SampliCount]; double[] ForceValue = new double[SampliCount];
double[] DMMValue = new double[SampliCount]; double[] DMMValue = new double[SampliCount];
double[] TempValue = new double[SampliCount]; double[] TempValue = new double[SampliCount];
#endregion
extCaliHandle.SetPpmuExternalCalibration(extConnStr, extPort, SlotNum, ExternalCalibrationMode.Channel, ch, ExtCaliVI.V, ExtCaliLoad.no_load, 0);//change channel extCaliHandle.SetPpmuExternalCalibration(extConnStr, extPort, SlotNum, ExternalCalibrationMode.Channel, ch, ExtCaliVI.V, ExtCaliLoad.no_load, 0);//change channel
@@ -1514,6 +1523,7 @@ namespace Testrong.User.Program
{ {
DelayHelper.Sleep(20); DelayHelper.Sleep(20);
} }
#region Actual Test
for (int p = 0; p < SampliCount; p++) for (int p = 0; p < SampliCount; p++)
{ {
PPMU.Force(PmuPinName, ForceVoltage, PpmuMode.FVMV, PpmuIRange._2mA, VRange.Normal); PPMU.Force(PmuPinName, ForceVoltage, PpmuMode.FVMV, PpmuIRange._2mA, VRange.Normal);
@@ -1534,9 +1544,10 @@ namespace Testrong.User.Program
TempValue[p] = chTemp; TempValue[p] = chTemp;
ForceVoltage += VoltageStep; ForceVoltage += VoltageStep;
} }
#endregion
PPMU.Force(PmuPinName, 0, PpmuMode.FVMV, PpmuIRange._2mA, VRange.Normal); PPMU.Force(PmuPinName, 0, PpmuMode.FVMV, PpmuIRange._2mA, VRange.Normal);
#region File Writing
StreamWriter sw = new StreamWriter(filename, true, Encoding.UTF8) StreamWriter sw = new StreamWriter(filename, true, Encoding.UTF8)
{ {
AutoFlush = true AutoFlush = true
@@ -1571,11 +1582,14 @@ namespace Testrong.User.Program
Range: "2mA", Range: "2mA",
filepath: filepath, filepath: filepath,
filetime: filetime); filetime: filetime);
#endregion
} }
#endregion
SlotThreadLocker(SlotNum: SlotNum, slotList: slotList, pathFlag: "CAL"); SlotThreadLocker(SlotNum: SlotNum, slotList: slotList, pathFlag: "CAL");
swdata.Flush(); swdata.Flush();
swdata.Close(); swdata.Close();
} }
/// <summary> /// <summary>
@@ -1587,6 +1601,7 @@ namespace Testrong.User.Program
/// <param name="testVersion"></param> /// <param name="testVersion"></param>
void Rint_FVMV_2mA_Post(IFlowRunnerContext context, TestVersion testVersion) void Rint_FVMV_2mA_Post(IFlowRunnerContext context, TestVersion testVersion)
{ {
#region Init Config & Variables
List<int> ChannelDps = new List<int>(); List<int> ChannelDps = new List<int>();
List<int> ChannelPmu = new List<int>(); List<int> ChannelPmu = new List<int>();
//-----Select PreTest or ReTest----- //-----Select PreTest or ReTest-----
@@ -1605,13 +1620,6 @@ namespace Testrong.User.Program
} }
slotList.Add(slotInfos[slotLen].No); slotList.Add(slotInfos[slotLen].No);
} }
//-----config dmm3458A and ExtCalibrationBoard-----
KeysightDMM3458A dmm = new KeysightDMM3458A();
ExternalCalibrationHandle extCaliHandle = new ExternalCalibrationHandle();
string extConnStr = Select_IP[testVersion];
int extPort = port;
//-----config Board----- //-----config Board-----
byte[] armDnaPortCmd = new byte[2] { 14, 57 }; byte[] armDnaPortCmd = new byte[2] { 14, 57 };
byte[] armDnaRaw = context.Communicator.Send(armDnaPortCmd); byte[] armDnaRaw = context.Communicator.Send(armDnaPortCmd);
@@ -1619,18 +1627,13 @@ namespace Testrong.User.Program
string arm_dna = BitConverter.ToUInt64(armDnaRaw, 0).ToString(); string arm_dna = BitConverter.ToUInt64(armDnaRaw, 0).ToString();
int SlotNum = context.Communicator.SlotNo; int SlotNum = context.Communicator.SlotNo;
//-----Read R File----- //-----Start Write MetaData-----
double[,] ExtBoard_Res = ReadRext(EXT_CAL_INIT_PATH + "ExtBoardRes.csv");
//-----Move File To History-----
File_Mover(SlotNum: SlotNum, slotList: slotList, pathFlag: "CAL_Single");
//-----Start Slot Number-----
StreamWriter swdata; StreamWriter swdata;
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8) swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8)
{ {
AutoFlush = true AutoFlush = true
}; };
Metadata_handler( Metadata_handler(
swdata: swdata, swdata: swdata,
SlotNum: SlotNum, SlotNum: SlotNum,
@@ -1639,13 +1642,33 @@ namespace Testrong.User.Program
context: context, context: context,
init_Flag: true init_Flag: true
); );
#endregion
#region Config DMM
//-----config dmm3458A and ExtCalibrationBoard-----
KeysightDMM3458A dmm = new KeysightDMM3458A();
ExternalCalibrationHandle extCaliHandle = new ExternalCalibrationHandle();
string extConnStr = Select_IP[testVersion];
int extPort = port;
dmm.InitDMM(ksightConnStr); dmm.InitDMM(ksightConnStr);
#endregion
//-----Read R File-----
double[,] ExtBoard_Res = ReadRext(EXT_CAL_INIT_PATH + "ExtBoardRes.csv");
//-----Move File To History-----
File_Mover(SlotNum: SlotNum, slotList: slotList, pathFlag: "CAL_Single");
extCaliHandle.SetPpmuExternalCalibration(extConnStr, extPort, 1, ExternalCalibrationMode.Channel, 1, ExtCaliVI.V, ExtCaliLoad.RC_RL7, 0); extCaliHandle.SetPpmuExternalCalibration(extConnStr, extPort, 1, ExternalCalibrationMode.Channel, 1, ExtCaliVI.V, ExtCaliLoad.RC_RL7, 0);
double rload = GetRloadValue(dmm, 2000, 5); double rload = GetRloadValue(dmm, 2000, 5);
string filetime = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss"); string filetime = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss");
#region Test
for (int loopk = 0; loopk < 256; loopk++) for (int loopk = 0; loopk < 256; loopk++)
{ {
#region Test Config
double ForceVoltage = -2; double ForceVoltage = -2;
double VoltageStep = 1; double VoltageStep = 1;
string[] PmuPinName = { ("A" + (ChannelPmu[loopk] < 10 ? "0" : "") + ChannelPmu[loopk]) }; string[] PmuPinName = { ("A" + (ChannelPmu[loopk] < 10 ? "0" : "") + ChannelPmu[loopk]) };
@@ -1659,13 +1682,14 @@ namespace Testrong.User.Program
RELAY.SwitchToPPMU(PmuPinName); RELAY.SwitchToPPMU(PmuPinName);
string filepath = "Slot" + SlotNum + "_PMU_" + "ch" + ChannelPmu[loopk] + "_" + "FVMV" + "_" + "Hi-Z" + "_" + "2mA" + ".csv"; string filepath = "Slot" + SlotNum + "_PMU_" + "ch" + ChannelPmu[loopk] + "_" + "FVMV" + "_" + "Hi-Z" + "_" + "2mA" + ".csv";
string filename = EXT_CAL_PATH + filepath; string filename = EXT_CAL_PATH + filepath;
#endregion
extCaliHandle.SetPpmuExternalCalibration(extConnStr, extPort, SlotNum, ExternalCalibrationMode.Channel, ch, ExtCaliVI.V, ExtCaliLoad.RC_RL7, 0);//change channel extCaliHandle.SetPpmuExternalCalibration(extConnStr, extPort, SlotNum, ExternalCalibrationMode.Channel, ch, ExtCaliVI.V, ExtCaliLoad.RC_RL7, 0);//change channel
if (loopk == 0) if (loopk == 0)
{ {
DelayHelper.Sleep(20); DelayHelper.Sleep(20);
} }
#region Actual Test
for (int p = 0; p < SampliCount; p++) for (int p = 0; p < SampliCount; p++)
{ {
PPMU.Force(PmuPinName, ForceVoltage, PpmuMode.FVMV, PpmuIRange._2mA, VRange.Normal); PPMU.Force(PmuPinName, ForceVoltage, PpmuMode.FVMV, PpmuIRange._2mA, VRange.Normal);
@@ -1685,8 +1709,11 @@ namespace Testrong.User.Program
TempValue[p] = chTemp; TempValue[p] = chTemp;
ForceVoltage += VoltageStep; ForceVoltage += VoltageStep;
} }
#endregion
PPMU.Force(PmuPinName, 0, PpmuMode.FVMV, PpmuIRange._2mA, VRange.Normal); PPMU.Force(PmuPinName, 0, PpmuMode.FVMV, PpmuIRange._2mA, VRange.Normal);
#region File Writing
StreamWriter sw = new StreamWriter(filename, true, Encoding.UTF8) StreamWriter sw = new StreamWriter(filename, true, Encoding.UTF8)
{ {
AutoFlush = true AutoFlush = true
@@ -1721,12 +1748,17 @@ namespace Testrong.User.Program
Range: "2mA", Range: "2mA",
filepath: filepath, filepath: filepath,
filetime: filetime); filetime: filetime);
#endregion
} }
#endregion
swdata.Flush(); swdata.Flush();
swdata.Close(); swdata.Close();
Thread.Sleep(1000); Thread.Sleep(1000);
#region Post Process
#region File Process
StreamReader metareader = new StreamReader(METADATA_PATH, Encoding.UTF8); StreamReader metareader = new StreamReader(METADATA_PATH, Encoding.UTF8);
List<string> dnaip = new List<string>(); List<string> dnaip = new List<string>();
List<string> path = new List<string>(); List<string> path = new List<string>();
@@ -1745,9 +1777,12 @@ namespace Testrong.User.Program
cnnt = cnnt + 1; cnnt = cnnt + 1;
} }
metareader.Close(); metareader.Close();
string pmurapth = EXT_CAL_PATH + context.Communicator.ServerIP + "_" + "Pmur" + ".txt"; string pmurapth = EXT_CAL_PATH + context.Communicator.ServerIP + "_" + "Pmur" + ".txt";
StreamWriter Pmur = new StreamWriter(pmurapth, true); StreamWriter Pmur = new StreamWriter(pmurapth, true);
Pmur.AutoFlush = true; Pmur.AutoFlush = true;
#endregion
#region Rint Calculation
for (int p = 0; p < path.Count; p++) for (int p = 0; p < path.Count; p++)
{ {
string dna = path[p].Split(',')[0]; string dna = path[p].Split(',')[0];
@@ -1769,12 +1804,12 @@ namespace Testrong.User.Program
} }
double ateV = Convert.ToDouble(datassingle[linefile].Split(',')[1]); double ateV = Convert.ToDouble(datassingle[linefile].Split(',')[1]);
double voltage = Convert.ToDouble(datassingle[linefile].Split(',')[2]); double voltage = Convert.ToDouble(datassingle[linefile].Split(',')[2]);
double iii = voltage / RL; double iii = voltage / RL; //???
double diff = ateV - voltage; double diff = ateV - voltage;
double rrr = diff / iii; double rrr = diff / iii; //???
res = res + (rrr - rext); res = res + (rrr - rext); //Rint?
} }
res = res / 4; res = res / 4; //Average
string ChannelFormat; string ChannelFormat;
if (ChannelNum < 10) if (ChannelNum < 10)
{ {
@@ -1793,7 +1828,9 @@ namespace Testrong.User.Program
datassingle.Clear(); datassingle.Clear();
singlefile.Close(); singlefile.Close();
} }
#endregion
Pmur.Close(); Pmur.Close();
#endregion
#region Thread Lock #region Thread Lock
SlotThreadLocker(SlotNum: SlotNum, slotList: slotList, pathFlag: "CAL"); SlotThreadLocker(SlotNum: SlotNum, slotList: slotList, pathFlag: "CAL");