origen_std_lib 0.9.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. checksums.yaml +5 -5
  2. data/config/application.rb +7 -19
  3. data/config/commands.rb +9 -0
  4. data/config/version.rb +1 -2
  5. data/lib/origen_std_lib/v93k.rb +17 -1
  6. data/{stdlib/v93k → src/advantest/smt7}/origen/.cproject +0 -0
  7. data/{stdlib/v93k → src/advantest/smt7}/origen/.project +0 -0
  8. data/src/advantest/smt7/origen/origen.cpp +18 -0
  9. data/{stdlib/v93k → src/advantest/smt7}/origen/origen.hpp +3 -3
  10. data/{stdlib/v93k → src/advantest/smt7}/origen/origen/helpers.hpp +25 -8
  11. data/src/advantest/smt7/origen/origen/helpers/console.cpp +94 -0
  12. data/src/advantest/smt7/origen/origen/helpers/misc.cpp +456 -0
  13. data/src/advantest/smt7/origen/origen/helpers/time.cpp +64 -0
  14. data/src/advantest/smt7/origen/origen/site.cpp +237 -0
  15. data/src/advantest/smt7/origen/origen/site.hpp +49 -0
  16. data/{stdlib/v93k → src/advantest/smt7}/origen/origen/test_method.hpp +1 -3
  17. data/src/advantest/smt7/origen/origen/test_method/base.cpp +231 -0
  18. data/src/advantest/smt7/origen/origen/test_method/base.hpp +155 -0
  19. data/src/advantest/smt7/origen/origen/test_method/dc_measurement.cpp +266 -0
  20. data/src/advantest/smt7/origen/origen/test_method/dc_measurement.hpp +58 -0
  21. data/src/advantest/smt7/origen/origen/test_method/empty.cpp +13 -0
  22. data/src/advantest/smt7/origen/origen/test_method/empty.hpp +24 -0
  23. data/src/advantest/smt7/origen/origen/test_method/frequency_measurement.cpp +133 -0
  24. data/src/advantest/smt7/origen/origen/test_method/frequency_measurement.hpp +46 -0
  25. data/src/advantest/smt7/origen/origen/test_method/functional_test.cpp +168 -0
  26. data/src/advantest/smt7/origen/origen/test_method/functional_test.hpp +53 -0
  27. data/{stdlib/v93k → src/advantest/smt7}/origen/origen/utils.hpp +1 -3
  28. data/src/advantest/smt7/origen/origen/utils/version.cpp +72 -0
  29. data/{stdlib/v93k → src/advantest/smt7}/origen/origen/utils/version.hpp +20 -21
  30. data/src/advantest/smt7/origen/test_methods/ApplyBin.cpp +37 -0
  31. data/src/advantest/smt7/origen/test_methods/DCMeasurement.cpp +90 -0
  32. data/src/advantest/smt7/origen/test_methods/FrequencyMeasurement.cpp +50 -0
  33. data/src/advantest/smt7/origen/test_methods/FunctionalTest.cpp +24 -0
  34. data/src/advantest/smt7/origen/test_methods/RecordBin.cpp +39 -0
  35. data/src/advantest/smt8/origen/common/Origen.java +334 -0
  36. data/src/advantest/smt8/origen/common/OrigenData.java +391 -0
  37. data/src/advantest/smt8/origen/common/OrigenHelpers.java +170 -0
  38. data/src/advantest/smt8/origen/test_methods/Base.java +265 -0
  39. data/src/advantest/smt8/origen/test_methods/DC_Measurement.java +302 -0
  40. data/src/advantest/smt8/origen/test_methods/Empty.java +12 -0
  41. data/src/advantest/smt8/origen/test_methods/Functional_test.java +474 -0
  42. data/templates/web/faq.md.erb +1 -52
  43. data/templates/web/guides/intro.md.erb +8 -0
  44. data/templates/web/guides/{v93k/intro.md.erb → v93ksmt7/capture.md.erb} +0 -2
  45. data/templates/web/guides/v93ksmt7/complete.md.erb +68 -0
  46. data/templates/web/guides/v93ksmt7/customizable.md.erb +139 -0
  47. data/templates/web/guides/v93ksmt7/helpers.md.erb +3 -0
  48. data/templates/web/guides/{v93k → v93ksmt7}/install.md.erb +1 -1
  49. data/templates/web/guides/v93ksmt7/integration.md.erb +3 -0
  50. data/templates/web/guides/v93ksmt7/intro.md.erb +8 -0
  51. data/templates/web/guides/v93ksmt7/patching.md.erb +3 -0
  52. data/templates/web/guides/v93ksmt8/intro.md.erb +9 -0
  53. data/templates/web/index.md.erb +23 -6
  54. data/templates/web/layouts/_guides.html.erb +15 -3
  55. data/templates/web/partials/_common_args.md.erb +13 -0
  56. data/templates/web/partials/_navbar.html.erb +2 -2
  57. metadata +52 -33
  58. data/stdlib/v93k/origen/origen.cpp +0 -22
  59. data/stdlib/v93k/origen/origen/helpers/console.cpp +0 -105
  60. data/stdlib/v93k/origen/origen/helpers/misc.cpp +0 -311
  61. data/stdlib/v93k/origen/origen/site.cpp +0 -220
  62. data/stdlib/v93k/origen/origen/site.hpp +0 -51
  63. data/stdlib/v93k/origen/origen/test_method/base.hpp +0 -156
  64. data/stdlib/v93k/origen/origen/test_method/dc_measurement.cpp +0 -182
  65. data/stdlib/v93k/origen/origen/test_method/dc_measurement.hpp +0 -59
  66. data/stdlib/v93k/origen/origen/test_method/frequency_measurement.cpp +0 -107
  67. data/stdlib/v93k/origen/origen/test_method/frequency_measurement.hpp +0 -48
  68. data/stdlib/v93k/origen/origen/test_method/functional_test.cpp +0 -118
  69. data/stdlib/v93k/origen/origen/test_method/functional_test.hpp +0 -51
  70. data/stdlib/v93k/origen/origen/utils/version.cpp +0 -79
  71. data/stdlib/v93k/origen/test_methods/ApplyBin.cpp +0 -41
  72. data/stdlib/v93k/origen/test_methods/DCMeasurement.cpp +0 -129
  73. data/stdlib/v93k/origen/test_methods/FrequencyMeasurement.cpp +0 -93
  74. data/stdlib/v93k/origen/test_methods/FunctionalTest.cpp +0 -94
  75. data/stdlib/v93k/origen/test_methods/RecordBin.cpp +0 -48
@@ -1,51 +0,0 @@
1
- #ifndef ORIGEN_SITE_HPP_
2
- #define ORIGEN_SITE_HPP_
3
-
4
- #include <string>
5
- using namespace std;
6
-
7
- namespace Origen {
8
-
9
- class Site {
10
- string _lotid;
11
- bool lotidSet;
12
- int _wafer;
13
- bool waferSet;
14
- int _x;
15
- bool xSet;
16
- int _y;
17
- bool ySet;
18
- int _number;
19
- int _bin;
20
- int _softbin;
21
- bool binSet;
22
- bool softbinSet;
23
-
24
-
25
- public:
26
- Site(int);
27
- virtual ~Site();
28
- string lotid();
29
- uint64_t lotidInt();
30
- void lotid(string);
31
- void lotid(uint64_t);
32
- int wafer();
33
- void wafer(int);
34
- int x();
35
- void x(int);
36
- int y();
37
- void y(int);
38
- int bin();
39
- void bin(int);
40
- void bin(int, bool);
41
- int softbin();
42
- void softbin(int);
43
- void softbin(int, bool);
44
-
45
- /// Returns the site number associated with the given site object
46
- int number() { return _number; }
47
- };
48
-
49
-
50
- } /* namespace Origen */
51
- #endif
@@ -1,156 +0,0 @@
1
- #ifndef ORIGEN_TEST_METHOD_BASE_INCLUDED
2
- #define ORIGEN_TEST_METHOD_BASE_INCLUDED
3
-
4
- #include "../test_method.hpp"
5
- #include "../../origen.hpp"
6
-
7
- namespace Origen {
8
- namespace TestMethod {
9
-
10
- class Base {
11
- bool _async;
12
- bool _syncup;
13
-
14
- public:
15
- virtual ~Base() {
16
- }
17
- Base() {
18
- async(false);
19
- syncup(false);
20
- }
21
-
22
- Base & async(bool v) { _async = v; return *this; }
23
- Base & syncup(bool v) { _syncup = v; return *this; }
24
-
25
- protected:
26
- /// Returns 1 when running in offline mode
27
- int offline() {
28
- int flag;
29
- GET_SYSTEM_FLAG("offline", &flag);
30
- return flag;
31
- }
32
-
33
- // Returns an object containing the test limits, this can be passed to SMT APIs that take a LIMITS
34
- // object argument. To actually get the limit values use loLimit() and hiLimit().
35
- LIMIT limits() {
36
- return GET_LIMIT_OBJECT("Functional");
37
- }
38
-
39
- // Returns the base test number
40
- int testnumber() {
41
- return GET_TESTNUMBER("Functional").getOffset();
42
- }
43
-
44
- /// Returns the high limit value in whole units, i.e. A or V
45
- double hiLimit() {
46
- double lim = 0.0;
47
- double * plim = &lim;
48
-
49
- limits().getHigh(plim);
50
- return lim;
51
- }
52
-
53
- /// Returns the low limit value in whole units, i.e. A or V
54
- double loLimit() {
55
- double lim = 0.0;
56
- double * plim = &lim;
57
-
58
- limits().getLow(plim);
59
- return lim;
60
- }
61
-
62
- // Called immediately before the first RDI operation is executed
63
- virtual void preTestFunc() {
64
- }
65
- virtual void preTestFunc(int site) {
66
- }
67
-
68
- // Called before the main RDI operation is executed, giving the chance to add
69
- // additional settings to it
70
- virtual void filterRDI(SMART_RDI::dcBase & prdi) {
71
- }
72
- virtual void filterRDI(SMART_RDI::DIG_CAP & prdi) {
73
- }
74
- virtual void filterRDI(SMART_RDI::FUNC & prdi) {
75
- }
76
-
77
- // If the test has a hold state, this will be called immediately after the hold
78
- // state pattern has run
79
- virtual void holdStateFunc() {
80
- }
81
- virtual void holdStateFunc(int site) {
82
- }
83
-
84
- // Called after the last RDI operation has executed and all results have been
85
- // fetched
86
- virtual void postTestFunc() {
87
- }
88
- virtual void postTestFunc(int site) {
89
- }
90
-
91
- // Called immediately before the final result processing. If the test is configured for async
92
- // processing then this will be called later in the background. Contrast this with the
93
- // postTestFunc which will be called before the main test body completes.
94
- virtual void processFunc(int site) {
95
- }
96
-
97
- // Called before the main test result is judged, giving a chance to transform it
98
- virtual double filterResult(double result) {
99
- return result;
100
- }
101
-
102
- virtual bool async() {
103
- return _async;
104
- }
105
- virtual bool syncup() {
106
- return _syncup;
107
- }
108
-
109
- virtual void serialProcessing(int site) {};
110
-
111
- void enableHiddenUpload() {
112
- if (async()) {
113
- rdi.hiddenUpload(TA::ALL);
114
- } else {
115
- rdi.hiddenUpload(TA::NO);
116
- }
117
- }
118
-
119
- void callPreTestFunc() {
120
- if (syncup()) {
121
- synchronize();
122
- }
123
- preTestFunc();
124
- FOR_EACH_SITE_BEGIN();
125
- preTestFunc(CURRENT_SITE_NUMBER());
126
- FOR_EACH_SITE_END();
127
- }
128
-
129
- void callHoldStateFunc() {
130
- holdStateFunc();
131
- FOR_EACH_SITE_BEGIN();
132
- holdStateFunc(CURRENT_SITE_NUMBER());
133
- FOR_EACH_SITE_END();
134
- }
135
-
136
- template <class T>
137
- void callPostTestFunc(T* obj) {
138
- ON_FIRST_INVOCATION_BEGIN();
139
- postTestFunc();
140
- FOR_EACH_SITE_BEGIN();
141
- postTestFunc(CURRENT_SITE_NUMBER());
142
- FOR_EACH_SITE_END();
143
- ON_FIRST_INVOCATION_END();
144
-
145
- if (async()) {
146
- SMC_ARM_internal(obj);
147
- } else {
148
- processFunc(CURRENT_SITE_NUMBER());
149
- this->serialProcessing(CURRENT_SITE_NUMBER());
150
- }
151
- }
152
- };
153
- }
154
- }
155
-
156
- #endif /* BASE_HPP_ */
@@ -1,182 +0,0 @@
1
- #include "dc_measurement.hpp"
2
-
3
- using namespace std;
4
-
5
- namespace Origen {
6
- namespace TestMethod {
7
-
8
-
9
- // Defaults
10
- DCMeasurement::DCMeasurement() {
11
- applyShutdown(1);
12
- checkShutdown(1);
13
- measure("VOLT");
14
- settlingTime(0);
15
- forceValue(0);
16
- iRange(0);
17
- processResults(1);
18
- badc(0);
19
- }
20
-
21
- DCMeasurement::~DCMeasurement() { }
22
-
23
- DCMeasurement & DCMeasurement::applyShutdown(int v) { _applyShutdown = v; return *this; }
24
- DCMeasurement & DCMeasurement::shutdownPattern(string v) { _shutdownPattern = v; return *this; }
25
- DCMeasurement & DCMeasurement::checkShutdown(int v) { _checkShutdown = v; return *this; }
26
- DCMeasurement & DCMeasurement::measure(string v) { _measure = v; return *this; }
27
- DCMeasurement & DCMeasurement::settlingTime(double v) { _settlingTime = v; return *this; }
28
- DCMeasurement & DCMeasurement::pin(string v) { _pin = v; return *this; }
29
- DCMeasurement & DCMeasurement::forceValue(double v) { _forceValue = v; return *this; }
30
- DCMeasurement & DCMeasurement::iRange(double v) { _iRange = v; return *this; }
31
- DCMeasurement & DCMeasurement::processResults(int v) { _processResults = v; return *this; }
32
- DCMeasurement & DCMeasurement::badc(int v) { _badc = v; return *this; }
33
-
34
- // All test methods must implement this function
35
- DCMeasurement & DCMeasurement::getThis() { return *this; }
36
-
37
- void DCMeasurement::execute() {
38
-
39
- int site, physicalSites;
40
- ARRAY_I sites;
41
-
42
- pin(extractPinsFromGroup(_pin));
43
-
44
- ON_FIRST_INVOCATION_BEGIN();
45
-
46
- enableHiddenUpload();
47
- GET_ACTIVE_SITES(activeSites);
48
- physicalSites = GET_CONFIGURED_SITES(sites);
49
- results.resize(physicalSites + 1);
50
- funcResultsPre.resize(physicalSites + 1);
51
- funcResultsPost.resize(physicalSites + 1);
52
- GET_TESTSUITE_NAME(testSuiteName);
53
- label = Primary.getLabel();
54
-
55
-
56
-
57
- if (_applyShutdown) {
58
- if (_shutdownPattern.empty()) {
59
- ostringstream pat;
60
- pat << label << "_part1";
61
- shutdownPattern(pat.str());
62
- }
63
- }
64
-
65
- if (!_iRange && _measure == "CURR") {
66
- double l = loLimit();
67
- double h = hiLimit();
68
- if (l == 0 && h == 0) {
69
- cout << "ERROR: If your current measurement does not have a limit, you must supply the current range" << endl;
70
- ERROR_EXIT(TM::ABORT_FLOW);
71
- }
72
- if (abs(l) > abs(h))
73
- _iRange = abs(l);
74
- else
75
- _iRange = abs(h);
76
- }
77
-
78
-
79
- callPreTestFunc();
80
-
81
- RDI_BEGIN();
82
-
83
- rdi.func(testSuiteName + "f1").label(label).execute();
84
-
85
- callHoldStateFunc();
86
-
87
- if(_measure == "VOLT") {
88
-
89
- if (_badc) {
90
- rdi.dc(testSuiteName)
91
- .pin(_pin, TA::BADC)
92
- .measWait(_settlingTime)
93
- .vMeas()
94
- .execute();
95
-
96
- } else {
97
- SMART_RDI::dcBase & prdi = rdi.dc(testSuiteName)
98
- .pin(_pin)
99
- .iForce(_forceValue)
100
- .measWait(_settlingTime)
101
- .relay(TA::ppmuRly_onPPMU_offACDC,TA::ppmuRly_onAC_offDCPPMU)
102
- .vMeas();
103
- filterRDI(prdi);
104
- prdi.execute();
105
-
106
- }
107
-
108
-
109
-
110
- } else {
111
-
112
- SMART_RDI::dcBase & prdi = rdi.dc(testSuiteName)
113
- .pin(_pin)
114
- .vForce(_forceValue)
115
- .relay(TA::ppmuRly_onPPMU_offACDC,TA::ppmuRly_onAC_offDCPPMU)
116
- .measWait(_settlingTime)
117
- .iRange(_iRange)
118
- .iMeas();
119
- filterRDI(prdi);
120
- prdi.execute();
121
- }
122
-
123
- if (_applyShutdown) rdi.func(testSuiteName + "f2").label(_shutdownPattern).execute();
124
-
125
- RDI_END();
126
-
127
- FOR_EACH_SITE_BEGIN();
128
- site = CURRENT_SITE_NUMBER();
129
- funcResultsPre[site] = rdi.id(testSuiteName + "f1").getPassFail();
130
- if (_applyShutdown) funcResultsPost[site] = rdi.id(testSuiteName + "f2").getPassFail();
131
- // TODO: This retrieval needs to move to the SMC func in the async case
132
- if (offline()) {
133
- if (!loLimit() && !hiLimit()) {
134
- results[site] = 0;
135
- } else if(loLimit() && hiLimit()) {
136
- results[site] = ((hiLimit() - loLimit()) / 2) + loLimit();
137
- } else if (loLimit()) {
138
- results[site] = loLimit();
139
- } else {
140
- results[site] = hiLimit();
141
- }
142
-
143
- } else {
144
- results[site] = rdi.id(testSuiteName).getValue();
145
- }
146
-
147
- FOR_EACH_SITE_END();
148
-
149
- ON_FIRST_INVOCATION_END();
150
-
151
- callPostTestFunc(this);
152
- }
153
-
154
- void DCMeasurement::serialProcessing(int site) {
155
- if (_processResults) {
156
- logFunctionalTest(testSuiteName, site, funcResultsPre[site] == 1, label);
157
- TESTSET().testnumber(testnumber()).cont(true).judgeAndLog_FunctionalTest(funcResultsPre[site] == 1);
158
-
159
- logParametricTest(testSuiteName, site, filterResult(results[site]), limits(), _pin);
160
- TESTSET().testnumber(testnumber() + 1).judgeAndLog_ParametricTest(_pin, testSuiteName, limits(), filterResult(results[site]));
161
-
162
- if (_applyShutdown && _checkShutdown) {
163
- logFunctionalTest(testSuiteName, site, funcResultsPost[site] == 1, _shutdownPattern);
164
- TESTSET().testnumber(testnumber() + 1).cont(true).judgeAndLog_FunctionalTest(funcResultsPost[site] == 1);
165
- }
166
- }
167
- }
168
-
169
- void DCMeasurement::SMC_backgroundProcessing() {
170
- for (int i = 0; i < activeSites.size(); i++) {
171
- int site = activeSites[i];
172
- processFunc(site);
173
- if (_processResults) {
174
- SMC_TEST(site, "", testSuiteName, LIMIT(TM::GE, 1, TM::LE, 1), funcResultsPre[site]);
175
- if (_applyShutdown && _checkShutdown) SMC_TEST(site, "", testSuiteName, LIMIT(TM::GE, 1, TM::LE, 1), funcResultsPost[site]);
176
- SMC_TEST(site, _pin, testSuiteName, limits(), filterResult(results[site]));
177
- }
178
- }
179
- }
180
-
181
- }
182
- }
@@ -1,59 +0,0 @@
1
- #ifndef ORIGEN_TEST_METHOD_DC_MEASUREMENT_INCLUDED
2
- #define ORIGEN_TEST_METHOD_DC_MEASUREMENT_INCLUDED
3
-
4
- #include "base.hpp"
5
- #include "mapi.hpp"
6
- #include "rdi.hpp"
7
-
8
- using namespace std;
9
-
10
- namespace Origen {
11
- namespace TestMethod {
12
-
13
- class DCMeasurement: public Base {
14
- void serialProcessing(int site);
15
-
16
- int _applyShutdown;
17
- string _shutdownPattern;
18
- int _checkShutdown;
19
- string _measure;
20
- double _settlingTime;
21
- string _pin;
22
- double _forceValue;
23
- double _iRange;
24
- int _processResults;
25
- int _badc;
26
-
27
- public:
28
- DCMeasurement();
29
- virtual ~DCMeasurement();
30
- void SMC_backgroundProcessing();
31
- void execute();
32
-
33
- DCMeasurement & applyShutdown(int v);
34
- DCMeasurement & shutdownPattern(string v);
35
- DCMeasurement & checkShutdown(int v);
36
- DCMeasurement & measure(string v);
37
- DCMeasurement & settlingTime(double v);
38
- DCMeasurement & pin(string v);
39
- DCMeasurement & forceValue(double v);
40
- DCMeasurement & iRange(double v);
41
- DCMeasurement & processResults(int v);
42
- DCMeasurement & badc(int v);
43
-
44
- protected:
45
- DCMeasurement & getThis();
46
-
47
- // Member/instance variables, declared outside the execute function body since
48
- // they may be useful to refer to in callback functions
49
- ARRAY_I activeSites;
50
- string testSuiteName;
51
- string label;
52
- vector<int> funcResultsPre;
53
- vector<int> funcResultsPost;
54
- vector<double> results;
55
- };
56
-
57
- }
58
- }
59
- #endif