int TestProgram::seq_DM500xRetrieveOVTOTPOV2311_16bytes(Site^ site)
{
int ret = 0, siteIndex = 0;
int uutoffsetIndex = 0;
AFlowItem^ item = site->CurrentFlowItem;
Type^ FlowType = item->GetType();
tp->tl->glob->PAT.skipAcquireFailCountinCapture = true;
this->ovt_isOtp5Bytes = false;
this->ovt_isOtp16Bytes = true;
ret = tp->tl->DoThreadRunAllSites(gcnew ParameterizedThreadStart(tp, &AemulusWSH5600TestLibrary::TestProgram::UpdateTestPropertyRunPatternThreaded), site);
ret = tp->tl->DoThreadRunAllSites(gcnew ParameterizedThreadStart(this, &TestProgram::InitializeOptForOvt), site);
ret = tp->tl->DoThreadRunAllSitesParallelSiteFormation(gcnew ParameterizedThreadStart(tp, &AemulusWSH5600TestLibrary::TestProgram::UpdateIsRunTestInDoThreadSiteFormation), site);
if (!tp->tl->glob->AWV.ParallelSiteFormation)
{
for (int siteIndex = 0; siteIndex < tp->tl->glob->tf.NumberOfSites; siteIndex++)
{
tp->tl->glob->TestProperty[siteIndex].executeTestParaCount = 0;
if (siteIndex % tp->tl->glob->tf.NumberOfSites == 0)
{
//Execute method with thread whereby thread index is according to the test site index
if (FlowType == TestItem::typeid)
{
int iFlowStep = 0, iTestParameter = 0;
tp->tl->glob->TestProperty[siteIndex].executeTestParaCount = 0;
TestItem ^ ti = (TestItem^)site->FlowItems[tp->tl->glob->TestProperty[siteIndex].TestItemName];
tp->tl->glob->currentFlowName = tp->tl->glob->TestProperty[siteIndex].TestItemName;
tp->tl->glob->FLOWVAR.TIExecutionMode = ti->ExecutionMode;
if (ti->ExecutionMode == FlowItemExecutionMode::ExecuteSelf)
{
for each(AFlowSubItem ^ subFlowItem in ti->SubItems)
{
tp->tl->glob->currentSubItemName = subFlowItem->Name;
if (dynamic_cast<ControlStep^>(subFlowItem->Data) != nullptr) // Control Step //
{
AFlowStep^ flowStep = (AFlowStep^)ti->FlowSteps[tp->tl->glob->TestProperty[siteIndex].flowStepItems[iFlowStep]];
ret = tp->ControlStepsSelfExecutionTestManager(site, siteIndex, iFlowStep, flowStep);
iFlowStep++;
}
else if (dynamic_cast<TestStep^>(subFlowItem->Data) != nullptr) // Test Step //
{
AFlowStep^ flowStep = (AFlowStep^)ti->FlowSteps[tp->tl->glob->TestProperty[siteIndex].flowStepItems[iFlowStep]];
tp->tl->glob->testStep = (TestStep^)ti->FlowSteps[subFlowItem->Name];
ret = tp->TestStepsSelfExecutionTestManager(site, siteIndex, iFlowStep, flowStep);
iFlowStep++;
}
else if (dynamic_cast<TestParameter^>(subFlowItem->Data) != nullptr) // Test Parameter //
{
AUUTOffset^ UUTOffset = site->UUTOffsetResolver->UUTOffsets[siteIndex];
if (UUTOffset->Active)
{
if (tp->tl->glob->RunThread[siteIndex].isRunTest)
uutoffsetIndex = siteIndex;
else
goto GetUUTOffsetIndexHalfPinAllSites;
}
else
{
GetUUTOffsetIndexHalfPinAllSites:
for (int testSite = siteIndex; testSite < (siteIndex + tp->tl->UtilitySett->currSiteFormation); testSite++)
{
AUUTOffset^ UUTOffsets = site->UUTOffsetResolver->UUTOffsets[testSite];
if (UUTOffsets->Active && tp->tl->glob->RunThread[testSite].isRunTest)
{
uutoffsetIndex = testSite;
break;
}
else continue;
}
}
if (tp->tl->glob->TestProperty[uutoffsetIndex].executeTestParaCount != tp->tl->glob->TestProperty[siteIndex].TotalTestParameter)
{
if (!tp->tl->glob->TestProperty[uutoffsetIndex].TestParameterExecuteStatus[subFlowItem->Name] && tp->tl->glob->TestProperty[uutoffsetIndex].TestParameterTypeid[iTestParameter] == TestParameter::typeid)
{
ret = tp->tl->DoThreadRunPatternFullDCs(gcnew ParameterizedThreadStart(tp, &AemulusWSH5600TestLibrary::TestProgram::DM500xRunPatternFullDCPerTestParaLevel), site, tp->amb5600tl->DM500xVectorSett[siteIndex].DM500xParallelVectorSite);
ret = tp->tl->DoThreadRemainTiTpOPNFlag(gcnew ParameterizedThreadStart(this, &TestProgram::DM500xRetrieveOVTOTPOV2311_16bytes), site);
if (tp->tl->glob->FLOWVAR.DM500xDpinoffAfterTest)
{
ret = tp->tl->DoThreadIsRunTestRemainTiTpOPNFlag(gcnew ParameterizedThreadStart(tp, &AemulusWSH5600TestLibrary::TestProgram::DM500xDPinOffControl), site);
}
}
iTestParameter++;
}
}
}
ret = tp->tl->DoThreadIsRunTestRemainTiTpOPNFlag(gcnew ParameterizedThreadStart(tp, &AemulusWSH5600TestLibrary::TestProgram::UpdateTestPropertyMiscInfo), site);
}
}
//Reset after each site formation
tp->tl->glob->TestProperty[uutoffsetIndex].executeTestParaCount = 0;
}
}
}
这块代码是ATE自动化测试设备上的代码,能给我翻译一下不,注释一下