00001 #include "FullBypassSummaryWriter.h"
00002 #include "SctData/FullBypassTestResult.h"
00003 #include "SummaryManager.h"
00004 #include "SctData/ModuleDefect.h"
00005
00006 namespace SctData {
00007 namespace TestSummary{
00008 void FullBypassSummaryWriter::write(const TestResult& t, std::ostream& out) const throw(Sct::IoError, Sct::LogicError)
00009 {
00010 const FullBypassTestResult& result = dynamic_cast<const FullBypassTestResult&>(t);
00011 out << "#\n%FullBypassTest\n#\n";
00012 out << "#NConfigs " << result.getNConfig() << endl;
00013 out << "#Vdd = " << result.getTestPointAt(0) << " -> " << result.getTestPointAt(result.getNScans()-1) << endl;
00014 out << "#\n#Vmin\n#token\tr_tkn\ttoken\tr_tkn\n" << endl;
00015 for (unsigned ichip=0; ichip<nChipModule; ichip+=2){
00016 out << "#" << getChipName(ichip) << "\t\t" << getChipName(ichip+1) << endl;
00017 out << result.getChipResult(ichip).vdd_direct << "\t" << result.getChipResult(ichip).vdd_bypass << "\t"
00018 << result.getChipResult(ichip+1).vdd_direct << "\t" << result.getChipResult(ichip+1).vdd_bypass << endl;
00019 }
00020
00021 out << "#Comment" << endl;
00022 for (unsigned ichip=0; ichip<nChipModule; ichip+=2){
00023 out << "#" << getChipName(ichip) << "\t\t" << getChipName(ichip+1) << endl;
00024 out << reason(result.getChipResult(ichip).status_direct) << "\t"
00025 << reason(result.getChipResult(ichip).status_bypass) << "\t"
00026 << reason(result.getChipResult(ichip+1).status_direct) << "\t"
00027 << reason(result.getChipResult(ichip+1).status_bypass) << endl;
00028 }
00029
00030 out << endl;
00031
00032 SummaryWriter::write(t.getDefects(), out);
00033 }
00034
00035 string FullBypassSummaryWriter::reason(const short int status){
00036 switch (status) {
00037 case -3:
00038 return "\"Failing maximal tested Vdd\"";
00039 case -2:
00040 return "\"Not Tested\"";
00041 case -1:
00042 return "\"Minimal accessible\"";
00043 case 0:
00044 return "\"Minimal functional\"";
00045 case 1:
00046 return "\"Minimal tested\"";
00047 default:
00048 return "\"Unknown!\"";
00049 }
00050 }
00051
00052 bool FullBypassSummaryWriter::inMap = SummaryManager::instance().addWriter("SctData::FullBypassTestResult", shared_ptr<SummaryWriter>(new FullBypassSummaryWriter()));
00053 }
00054 }