origen_std_lib 0.7.0 → 0.8.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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/config/application.rb +13 -0
  3. data/config/version.rb +1 -1
  4. data/stdlib/v93k/origen/Debug/liborigen.so +0 -0
  5. data/stdlib/v93k/origen/Debug/makefile +63 -0
  6. data/stdlib/v93k/origen/Debug/objects.mk +8 -0
  7. data/stdlib/v93k/origen/Debug/origen.d +1477 -0
  8. data/stdlib/v93k/origen/Debug/origen.o +0 -0
  9. data/stdlib/v93k/origen/Debug/origen/helpers/console.d +1483 -0
  10. data/stdlib/v93k/origen/Debug/origen/helpers/console.o +0 -0
  11. data/stdlib/v93k/origen/Debug/origen/helpers/misc.d +1483 -0
  12. data/stdlib/v93k/origen/Debug/origen/helpers/misc.o +0 -0
  13. data/stdlib/v93k/origen/Debug/origen/helpers/subdir.mk +27 -0
  14. data/stdlib/v93k/origen/Debug/origen/site.d +1469 -0
  15. data/stdlib/v93k/origen/Debug/origen/site.o +0 -0
  16. data/stdlib/v93k/origen/Debug/origen/subdir.mk +24 -0
  17. data/stdlib/v93k/origen/Debug/origen/test_method/dc_measurement.d +1501 -0
  18. data/stdlib/v93k/origen/Debug/origen/test_method/dc_measurement.o +0 -0
  19. data/stdlib/v93k/origen/Debug/origen/test_method/frequency_measurement.d +1502 -0
  20. data/stdlib/v93k/origen/Debug/origen/test_method/frequency_measurement.o +0 -0
  21. data/stdlib/v93k/origen/Debug/origen/test_method/functional_test.d +1501 -0
  22. data/stdlib/v93k/origen/Debug/origen/test_method/functional_test.o +0 -0
  23. data/stdlib/v93k/origen/Debug/origen/test_method/subdir.mk +30 -0
  24. data/stdlib/v93k/origen/Debug/origen/utils/subdir.mk +24 -0
  25. data/stdlib/v93k/origen/Debug/origen/utils/version.d +4 -0
  26. data/stdlib/v93k/origen/Debug/origen/utils/version.o +0 -0
  27. data/stdlib/v93k/origen/Debug/sources.mk +32 -0
  28. data/stdlib/v93k/origen/Debug/subdir.mk +24 -0
  29. data/stdlib/v93k/origen/Debug/test_methods/ApplyBin.d +1487 -0
  30. data/stdlib/v93k/origen/Debug/test_methods/ApplyBin.o +0 -0
  31. data/stdlib/v93k/origen/Debug/test_methods/DCMeasurement.d +1508 -0
  32. data/stdlib/v93k/origen/Debug/test_methods/DCMeasurement.o +0 -0
  33. data/stdlib/v93k/origen/Debug/test_methods/FrequencyMeasurement.d +1508 -0
  34. data/stdlib/v93k/origen/Debug/test_methods/FrequencyMeasurement.o +0 -0
  35. data/stdlib/v93k/origen/Debug/test_methods/FunctionalTest.d +1511 -0
  36. data/stdlib/v93k/origen/Debug/test_methods/FunctionalTest.o +0 -0
  37. data/stdlib/v93k/origen/Debug/test_methods/RecordBin.d +1487 -0
  38. data/stdlib/v93k/origen/Debug/test_methods/RecordBin.o +0 -0
  39. data/stdlib/v93k/origen/Debug/test_methods/subdir.mk +36 -0
  40. data/stdlib/v93k/origen/origen.cpp +22 -0
  41. data/stdlib/v93k/origen/origen.hpp +22 -0
  42. data/stdlib/v93k/origen/origen/helpers.hpp +44 -0
  43. data/stdlib/v93k/origen/origen/helpers/console.cpp +105 -0
  44. data/stdlib/v93k/origen/origen/helpers/misc.cpp +305 -0
  45. data/stdlib/v93k/origen/origen/site.cpp +220 -0
  46. data/stdlib/v93k/origen/origen/site.hpp +51 -0
  47. data/stdlib/v93k/origen/origen/test_method.hpp +17 -0
  48. data/stdlib/v93k/origen/origen/test_method/base.hpp +151 -0
  49. data/stdlib/v93k/origen/origen/test_method/dc_measurement.cpp +182 -0
  50. data/stdlib/v93k/origen/origen/test_method/dc_measurement.hpp +59 -0
  51. data/stdlib/v93k/origen/origen/test_method/frequency_measurement.cpp +109 -0
  52. data/stdlib/v93k/origen/origen/test_method/frequency_measurement.hpp +48 -0
  53. data/stdlib/v93k/origen/origen/test_method/functional_test.cpp +119 -0
  54. data/stdlib/v93k/origen/origen/test_method/functional_test.hpp +51 -0
  55. data/stdlib/v93k/origen/origen/utils.hpp +12 -0
  56. data/stdlib/v93k/origen/origen/utils/version.cpp +79 -0
  57. data/stdlib/v93k/origen/origen/utils/version.hpp +64 -0
  58. data/stdlib/v93k/origen/test_methods/ApplyBin.cpp +41 -0
  59. data/stdlib/v93k/origen/test_methods/DCMeasurement.cpp +127 -0
  60. data/stdlib/v93k/origen/test_methods/FrequencyMeasurement.cpp +91 -0
  61. data/stdlib/v93k/origen/test_methods/FunctionalTest.cpp +92 -0
  62. data/stdlib/v93k/origen/test_methods/RecordBin.cpp +48 -0
  63. metadata +60 -1
@@ -0,0 +1,59 @@
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
@@ -0,0 +1,109 @@
1
+ #include "frequency_measurement.hpp"
2
+
3
+ using namespace std;
4
+
5
+ namespace Origen {
6
+ namespace TestMethod {
7
+
8
+
9
+ FrequencyMeasurement::FrequencyMeasurement() {
10
+ samples(2000);
11
+ processResults(1);
12
+ }
13
+ FrequencyMeasurement::~FrequencyMeasurement() { }
14
+
15
+ /// By default the limits are assumed to be expressed as a frequency, set this to 1 if they refer to a target period
16
+ FrequencyMeasurement & FrequencyMeasurement::periodBased(int v) { _periodBased = v; return *this; }
17
+ /// REQUIRED: The name of the pin being measured
18
+ FrequencyMeasurement & FrequencyMeasurement::pin(string v) { _pin = v; return *this; }
19
+ /// The number of samples captured by the pattern, the default is 2000
20
+ FrequencyMeasurement & FrequencyMeasurement::samples(int v) { _samples = v; return *this; }
21
+ /// REQUIRED: Supply the period of the captured vectors in nanoseconds
22
+ FrequencyMeasurement & FrequencyMeasurement::periodInNs(int v) { _periodInNs = v; return *this; }
23
+ /// When set to 0 the results of the test will not be judged or logged
24
+ FrequencyMeasurement & FrequencyMeasurement::processResults(int v) { _processResults = v; return *this; }
25
+
26
+ // All test methods must implement these functions
27
+ FrequencyMeasurement & FrequencyMeasurement::getThis() { return *this; }
28
+
29
+ void FrequencyMeasurement::execute() {
30
+
31
+ int site, physicalSites;
32
+ ARRAY_I sites;
33
+
34
+ RDI_INIT();
35
+
36
+ ON_FIRST_INVOCATION_BEGIN();
37
+
38
+ enableHiddenUpload();
39
+ GET_ACTIVE_SITES(activeSites);
40
+ physicalSites = GET_CONFIGURED_SITES(sites);
41
+ funcResults.resize(physicalSites + 1);
42
+ GET_TESTSUITE_NAME(testSuiteName);
43
+ label = Primary.getLabel();
44
+ pin(extractPinsFromGroup(_pin));
45
+
46
+ callPreTestFunc();
47
+
48
+ RDI_BEGIN();
49
+
50
+ SMART_RDI::DIG_CAP & prdi = rdi.digCap(testSuiteName)
51
+ .label(label)
52
+ .pin(_pin)
53
+ .bitPerWord(1)
54
+ .samples(_samples);
55
+
56
+ filterRDI(prdi);
57
+ prdi.execute();
58
+
59
+ RDI_END();
60
+
61
+ FOR_EACH_SITE_BEGIN();
62
+ site = CURRENT_SITE_NUMBER();
63
+ funcResults[site] = rdi.getBurstPassFail();
64
+ FOR_EACH_SITE_END();
65
+
66
+ ON_FIRST_INVOCATION_END();
67
+
68
+ callPostTestFunc(this);
69
+ }
70
+
71
+ void FrequencyMeasurement::serialProcessing(int site) {
72
+ if (_processResults) {
73
+ double result;
74
+ ARRAY_I captureData = rdi.site(site).id(testSuiteName).getVector();
75
+
76
+ if (_periodBased) {
77
+ result = calculatePeriod(captureData, _periodInNs);
78
+ } else {
79
+ result = calculateFrequency(captureData, _periodInNs);
80
+ }
81
+ logFunctionalTest(testSuiteName, site, funcResults[site] == 1, label);
82
+ TESTSET().judgeAndLog_FunctionalTest(funcResults[site] == 1);
83
+
84
+ logParametricTest(testSuiteName, site, filterResult(result), limits(), _pin);
85
+ TESTSET().judgeAndLog_ParametricTest(_pin, testSuiteName, limits(), filterResult(result));
86
+ }
87
+ }
88
+
89
+ void FrequencyMeasurement::SMC_backgroundProcessing() {
90
+ double result;
91
+
92
+ for (int i = 0; i < activeSites.size(); i++) {
93
+ int site = activeSites[i];
94
+ processFunc(site);
95
+ if (_processResults) {
96
+ ARRAY_I captureData = rdi.site(site).id(testSuiteName).getVector();
97
+ if (_periodBased) {
98
+ result = calculatePeriod(captureData, _periodInNs);
99
+ } else {
100
+ result = calculateFrequency(captureData, _periodInNs);
101
+ }
102
+ SMC_TEST(site, "", testSuiteName, LIMIT(TM::GE, 1, TM::LE, 1), funcResults[site]);
103
+ SMC_TEST(site, _pin, testSuiteName, limits(), filterResult(result));
104
+ }
105
+ }
106
+ }
107
+
108
+ }
109
+ }
@@ -0,0 +1,48 @@
1
+ #ifndef ORIGEN_TEST_METHOD_FREQUENCY_MEASUREMENT_INCLUDED
2
+ #define ORIGEN_TEST_METHOD_FREQUENCY_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 FrequencyMeasurement: public Base {
14
+ void serialProcessing(int site);
15
+
16
+ int _periodBased;
17
+ string _pin;
18
+ int _samples;
19
+ int _periodInNs;
20
+ int _processResults;
21
+
22
+ public:
23
+ FrequencyMeasurement();
24
+ virtual ~FrequencyMeasurement();
25
+ void SMC_backgroundProcessing();
26
+ void execute();
27
+
28
+ FrequencyMeasurement & periodBased(int v);
29
+ FrequencyMeasurement & pin(string v);
30
+ FrequencyMeasurement & samples(int v);
31
+ FrequencyMeasurement & periodInNs(int v);
32
+ FrequencyMeasurement & processResults(int v);
33
+
34
+ protected:
35
+ FrequencyMeasurement & getThis();
36
+
37
+ // Internal variables, declared outside the the execute function body since
38
+ // they may be useful in callback functions
39
+ ARRAY_I activeSites;
40
+ string testSuiteName;
41
+ string label;
42
+ vector<int> funcResults;
43
+
44
+ };
45
+
46
+ }
47
+ }
48
+ #endif
@@ -0,0 +1,119 @@
1
+ #include "functional_test.hpp"
2
+
3
+ using namespace std;
4
+
5
+ namespace Origen {
6
+ namespace TestMethod {
7
+
8
+
9
+ FunctionalTest::FunctionalTest() {
10
+ pin("");
11
+ capture(0);
12
+ processResults(1);
13
+ bitPerWord(1);
14
+ }
15
+
16
+ FunctionalTest::~FunctionalTest() { }
17
+
18
+ /// The functional test method can optionally capture data by supplying the number of vectors to capture
19
+ FunctionalTest & FunctionalTest::capture(int v) { _capture = v; return *this; }
20
+ /// If data capture is requested, supply the pin to capture data from
21
+ FunctionalTest & FunctionalTest::pin(string v) { _pin = v; return *this; }
22
+ /// Serial capture data will be grouped into words, specify how many bits per word in the serial stream (default 1)
23
+ FunctionalTest & FunctionalTest::bitPerWord(int v) { _bitPerWord = v; return *this; }
24
+ /// When set to 0 the results of the test will not be judged or logged
25
+ FunctionalTest & FunctionalTest::processResults(int v) { _processResults = v; return *this; }
26
+
27
+ // All test methods must implement this function
28
+ FunctionalTest & FunctionalTest::getThis() { return *this; }
29
+
30
+ void FunctionalTest::execute() {
31
+
32
+ int site, physicalSites;
33
+ ARRAY_I sites;
34
+
35
+ RDI_INIT();
36
+ ON_FIRST_INVOCATION_BEGIN();
37
+
38
+ enableHiddenUpload();
39
+ GET_ACTIVE_SITES(activeSites);
40
+ physicalSites = GET_CONFIGURED_SITES(sites);
41
+ results.resize(physicalSites + 1);
42
+ GET_TESTSUITE_NAME(testSuiteName);
43
+ // testSuiteName = testSuiteName + toStr(CURRENT_SITE_NUMBER());
44
+ // cout << testSuiteName << endl;
45
+ label = Primary.getLabel();
46
+
47
+ if (_capture) {
48
+ pinName = extractPinsFromGroup(_pin);
49
+ }
50
+
51
+ callPreTestFunc();
52
+
53
+ RDI_BEGIN();
54
+
55
+ if (_capture) {
56
+ SMART_RDI::DIG_CAP & prdi = rdi.digCap(testSuiteName)
57
+ .label(label)
58
+ .pin(pinName)
59
+ .bitPerWord(_bitPerWord)
60
+ .samples(_capture);
61
+ filterRDI(prdi);
62
+ prdi.execute();
63
+
64
+ } else {
65
+ SMART_RDI::FUNC & prdi = rdi.func(testSuiteName).label(label);
66
+ // SMART_RDI::FUNC & prdi = rdi.func(testSuiteName).burst(label);
67
+ filterRDI(prdi);
68
+ prdi.execute();
69
+ }
70
+
71
+ RDI_END();
72
+
73
+ FOR_EACH_SITE_BEGIN();
74
+ site = CURRENT_SITE_NUMBER();
75
+ if (_capture) {
76
+ results[site] = rdi.site(site).getBurstPassFail();
77
+ // cout << "PRE " << site << ": " << results[site] << endl;
78
+
79
+ } else {
80
+ results[site] = rdi.site(site).id(testSuiteName).getPassFail();
81
+ // cout << "PRE " << site << ": " << results[site] << endl;
82
+ }
83
+ FOR_EACH_SITE_END();
84
+
85
+ ON_FIRST_INVOCATION_END();
86
+
87
+ callPostTestFunc(this);
88
+ }
89
+
90
+ /// Returns the captured data for the site currently in focus
91
+ ARRAY_I FunctionalTest::capturedData() {
92
+ return rdi.id(testSuiteName).getVector(pinName);
93
+ }
94
+
95
+ /// Returns the captured data for the given site number
96
+ ARRAY_I FunctionalTest::capturedData(int site) {
97
+ return rdi.site(site).id(testSuiteName).getVector(pinName);
98
+ }
99
+
100
+ void FunctionalTest::serialProcessing(int site) {
101
+ if (_processResults) {
102
+ // cout << "POST " << site << ": " << results[site] << endl;
103
+ logFunctionalTest(testSuiteName, site, results[site] == 1, label);
104
+ TESTSET().judgeAndLog_FunctionalTest(results[site] == 1);
105
+ }
106
+ }
107
+
108
+ void FunctionalTest::SMC_backgroundProcessing() {
109
+ for (int i = 0; i < activeSites.size(); i++) {
110
+ int site = activeSites[i];
111
+ processFunc(site);
112
+ if (_processResults) {
113
+ SMC_TEST(site, "", testSuiteName, LIMIT(TM::GE, 1, TM::LE, 1), results[activeSites[i]]);
114
+ }
115
+ }
116
+ }
117
+
118
+ }
119
+ }
@@ -0,0 +1,51 @@
1
+ #ifndef ORIGEN_TEST_METHOD_FUNCTIONAL_TEST_INCLUDED
2
+ #define ORIGEN_TEST_METHOD_FUNCTIONAL_TEST_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 FunctionalTest: public Base {
14
+ void serialProcessing(int site);
15
+
16
+ string _pin;
17
+ int _capture;
18
+ int _bitPerWord;
19
+ int _processResults;
20
+
21
+ public:
22
+ FunctionalTest();
23
+
24
+ virtual ~FunctionalTest();
25
+ void SMC_backgroundProcessing();
26
+ void execute();
27
+
28
+ FunctionalTest & capture(int v);
29
+ FunctionalTest & pin(string v);
30
+ FunctionalTest & bitPerWord(int v);
31
+ FunctionalTest & processResults(int v);
32
+
33
+
34
+ protected:
35
+ FunctionalTest & getThis();
36
+ ARRAY_I capturedData();
37
+ ARRAY_I capturedData(int);
38
+
39
+ // Internal variables, declared outside the the execute function body since
40
+ // they may be useful in callback functions
41
+ ARRAY_I activeSites;
42
+ string testSuiteName;
43
+ string label;
44
+ vector<int> results;
45
+ string pinName;
46
+ };
47
+
48
+
49
+ }
50
+ }
51
+ #endif
@@ -0,0 +1,12 @@
1
+ #ifndef ORIGEN_UTILS_INCLUDED
2
+ #define ORIGEN_UTILS_INCLUDED
3
+
4
+ #include "utils/version.hpp"
5
+
6
+ namespace Origen {
7
+ namespace Utils {
8
+
9
+ }
10
+ }
11
+
12
+ #endif
@@ -0,0 +1,79 @@
1
+ #include "version.hpp"
2
+ using namespace std;
3
+
4
+ #include <sstream>
5
+
6
+ namespace Origen {
7
+ namespace Utils {
8
+
9
+ Version::Version(string ver) {
10
+ vector<int> v = parse(ver);
11
+ _major = v[0];
12
+ _minor = v[1];
13
+ _tiny = v[2];
14
+ }
15
+
16
+ int Version::major() {
17
+ return _major;
18
+ }
19
+ int Version::minor() {
20
+ return _minor;
21
+ }
22
+ int Version::tiny() {
23
+ return _tiny;
24
+ }
25
+
26
+ string Version::str() {
27
+ ostringstream str;
28
+ str << _major;
29
+ str << ".";
30
+ str << _minor;
31
+ str << ".";
32
+ str << _tiny;
33
+ return str.str();
34
+ }
35
+
36
+ bool Version::operator==(string rhs) {
37
+ vector<int> v = parse(rhs);
38
+ return _major == v[0] && _minor == v[1] && _tiny == v[2];
39
+ }
40
+
41
+ bool Version::operator!=(string rhs) {
42
+ vector<int> v = parse(rhs);
43
+ return _major != v[0] || _minor != v[1] || _tiny != v[2];
44
+ }
45
+
46
+ bool Version::operator<(string rhs) {
47
+ vector<int> v = parse(rhs);
48
+ return _major < v[0] || (_major == v[0] && _minor < v[1])
49
+ || (_major == v[0] && _minor == v[1] && _tiny < v[2]);
50
+ }
51
+
52
+ bool Version::operator<=(string rhs) {
53
+ return operator==(rhs) || operator<(rhs);
54
+ }
55
+
56
+ bool Version::operator>(string rhs) {
57
+ vector<int> v = parse(rhs);
58
+ return _major > v[0] || (_major == v[0] && _minor > v[1])
59
+ || (_major == v[0] && _minor == v[1] && _tiny > v[2]);
60
+ }
61
+
62
+ bool Version::operator>=(string rhs) {
63
+ return operator==(rhs) || operator>(rhs);
64
+ }
65
+
66
+ vector<int> Version::parse(string ver) {
67
+ vector<int> v(3);
68
+
69
+ istringstream parser(ver);
70
+ parser >> v[0];
71
+ for (int i = 1; i < 3; i++) {
72
+ parser.get(); //Skip dot
73
+ parser >> v[i];
74
+ }
75
+ return v;
76
+ }
77
+
78
+ }
79
+ }