origen_std_lib 0.10.1 → 0.13.1
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.
- checksums.yaml +5 -5
- data/config/application.rb +7 -19
- data/config/commands.rb +9 -0
- data/config/version.rb +1 -2
- data/lib/origen_std_lib/v93k.rb +17 -1
- data/{stdlib/v93k → src/advantest/smt7}/origen/.cproject +0 -0
- data/{stdlib/v93k → src/advantest/smt7}/origen/.project +0 -0
- data/src/advantest/smt7/origen/origen/helpers/console.cpp +94 -0
- data/src/advantest/smt7/origen/origen/helpers/misc.cpp +456 -0
- data/src/advantest/smt7/origen/origen/helpers/time.cpp +64 -0
- data/{stdlib/v93k → src/advantest/smt7}/origen/origen/helpers.hpp +25 -8
- data/src/advantest/smt7/origen/origen/site.cpp +237 -0
- data/src/advantest/smt7/origen/origen/site.hpp +50 -0
- data/src/advantest/smt7/origen/origen/test_method/base.cpp +231 -0
- data/src/advantest/smt7/origen/origen/test_method/base.hpp +155 -0
- data/src/advantest/smt7/origen/origen/test_method/dc_measurement.cpp +266 -0
- data/src/advantest/smt7/origen/origen/test_method/dc_measurement.hpp +58 -0
- data/src/advantest/smt7/origen/origen/test_method/empty.cpp +13 -0
- data/src/advantest/smt7/origen/origen/test_method/empty.hpp +24 -0
- data/src/advantest/smt7/origen/origen/test_method/frequency_measurement.cpp +133 -0
- data/src/advantest/smt7/origen/origen/test_method/frequency_measurement.hpp +46 -0
- data/src/advantest/smt7/origen/origen/test_method/functional_test.cpp +168 -0
- data/src/advantest/smt7/origen/origen/test_method/functional_test.hpp +53 -0
- data/{stdlib/v93k → src/advantest/smt7}/origen/origen/test_method.hpp +1 -3
- data/src/advantest/smt7/origen/origen/utils/version.cpp +72 -0
- data/{stdlib/v93k → src/advantest/smt7}/origen/origen/utils/version.hpp +20 -21
- data/{stdlib/v93k → src/advantest/smt7}/origen/origen/utils.hpp +1 -3
- data/src/advantest/smt7/origen/origen.cpp +18 -0
- data/{stdlib/v93k → src/advantest/smt7}/origen/origen.hpp +3 -3
- data/src/advantest/smt7/origen/test_methods/ApplyBin.cpp +37 -0
- data/src/advantest/smt7/origen/test_methods/DCMeasurement.cpp +90 -0
- data/src/advantest/smt7/origen/test_methods/FrequencyMeasurement.cpp +50 -0
- data/src/advantest/smt7/origen/test_methods/FunctionalTest.cpp +24 -0
- data/src/advantest/smt7/origen/test_methods/RecordBin.cpp +39 -0
- data/src/advantest/smt8/origen/common/Origen.java +334 -0
- data/src/advantest/smt8/origen/common/OrigenData.java +391 -0
- data/src/advantest/smt8/origen/common/OrigenHelpers.java +170 -0
- data/src/advantest/smt8/origen/test_methods/Base.java +265 -0
- data/src/advantest/smt8/origen/test_methods/DC_Measurement.java +302 -0
- data/src/advantest/smt8/origen/test_methods/Empty.java +12 -0
- data/src/advantest/smt8/origen/test_methods/Functional_test.java +474 -0
- data/templates/web/faq.md.erb +1 -52
- data/templates/web/guides/intro.md.erb +8 -0
- data/templates/web/guides/{v93k/intro.md.erb → v93ksmt7/capture.md.erb} +0 -2
- data/templates/web/guides/v93ksmt7/complete.md.erb +68 -0
- data/templates/web/guides/v93ksmt7/customizable.md.erb +139 -0
- data/templates/web/guides/v93ksmt7/helpers.md.erb +3 -0
- data/templates/web/guides/{v93k → v93ksmt7}/install.md.erb +1 -1
- data/templates/web/guides/v93ksmt7/integration.md.erb +3 -0
- data/templates/web/guides/v93ksmt7/intro.md.erb +8 -0
- data/templates/web/guides/v93ksmt7/patching.md.erb +3 -0
- data/templates/web/guides/v93ksmt8/intro.md.erb +9 -0
- data/templates/web/index.md.erb +23 -6
- data/templates/web/layouts/_guides.html.erb +15 -3
- data/templates/web/partials/_common_args.md.erb +13 -0
- data/templates/web/partials/_navbar.html.erb +2 -2
- metadata +52 -33
- data/stdlib/v93k/origen/origen/helpers/console.cpp +0 -105
- data/stdlib/v93k/origen/origen/helpers/misc.cpp +0 -311
- data/stdlib/v93k/origen/origen/site.cpp +0 -220
- data/stdlib/v93k/origen/origen/site.hpp +0 -51
- data/stdlib/v93k/origen/origen/test_method/base.hpp +0 -156
- data/stdlib/v93k/origen/origen/test_method/dc_measurement.cpp +0 -182
- data/stdlib/v93k/origen/origen/test_method/dc_measurement.hpp +0 -59
- data/stdlib/v93k/origen/origen/test_method/frequency_measurement.cpp +0 -107
- data/stdlib/v93k/origen/origen/test_method/frequency_measurement.hpp +0 -48
- data/stdlib/v93k/origen/origen/test_method/functional_test.cpp +0 -125
- data/stdlib/v93k/origen/origen/test_method/functional_test.hpp +0 -52
- data/stdlib/v93k/origen/origen/utils/version.cpp +0 -79
- data/stdlib/v93k/origen/origen.cpp +0 -22
- data/stdlib/v93k/origen/test_methods/ApplyBin.cpp +0 -41
- data/stdlib/v93k/origen/test_methods/DCMeasurement.cpp +0 -129
- data/stdlib/v93k/origen/test_methods/FrequencyMeasurement.cpp +0 -93
- data/stdlib/v93k/origen/test_methods/FunctionalTest.cpp +0 -94
- data/stdlib/v93k/origen/test_methods/RecordBin.cpp +0 -48
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
% render "templates/web/layouts/guides.html" do
|
|
2
|
+
|
|
3
|
+
The [Complete Tests](<%= path "guides/v93ksm7/complete" %>) provide a way to rapidly build a test program using
|
|
4
|
+
off-the-shelf building blocks, however in many cases it will be desired to run a slightly customized version of these
|
|
5
|
+
tests that is tweaked in some way to suit a particular application domain or for a few specific tests.
|
|
6
|
+
|
|
7
|
+
This is where the customizable test template system should be used to get an easy way to create the
|
|
8
|
+
following types of test methods:
|
|
9
|
+
|
|
10
|
+
* Application-specific test primitives, for example a functional test method which calls an applications-specific
|
|
11
|
+
power up function at the start, or which enforces the use of a particular test port.
|
|
12
|
+
* Test-specific variations on the primitive test methods, for example a functional test which will patch/overlay
|
|
13
|
+
the pattern with some data before running and/or capture and process some data at the end.
|
|
14
|
+
|
|
15
|
+
The key goal of this system is to give test engineers the ability to implement common customization scenarios
|
|
16
|
+
while writing an absolute minimum of application-specific code.
|
|
17
|
+
|
|
18
|
+
## Concept
|
|
19
|
+
|
|
20
|
+
To create a custom test based on a template, create a test method class that inherits from one of the template classes
|
|
21
|
+
[defined in `Origen::TestMethod`](<%= path "/v93k_smt7/html/namespace_origen_1_1_test_method.html" %>), such as
|
|
22
|
+
[`FunctionalTest`](<%= path "/v93k_smt7/html/class_origen_1_1_test_method_1_1_functional_test.html" %>):
|
|
23
|
+
|
|
24
|
+
~~~cpp
|
|
25
|
+
#include "origen/test_method/functional_test.hpp"
|
|
26
|
+
|
|
27
|
+
class Functional: public Origen::TestMethod::FunctionalTest {
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
~~~
|
|
31
|
+
|
|
32
|
+
The test template will take care of many of the low-level details of how to create test methods in SMT7,
|
|
33
|
+
such as having to remember to call `RDI_INIT()` and the use of `ON_FIRST_INVOCATION` and friends.
|
|
34
|
+
|
|
35
|
+
To achieve this, the template takes control of the conventional SMT7 integration functions `initialize()`,
|
|
36
|
+
`run()` and `SMC_backgroundProcessing()`, which means that you should not use these within your application code.
|
|
37
|
+
Instead, use the functions that are described here and these will allow you to hook into the test's
|
|
38
|
+
lifecycle at various points during execution of the test.
|
|
39
|
+
**Note that you do not have do define all of these, only the ones that you want to use.**
|
|
40
|
+
|
|
41
|
+
#### Common Lifecycle Functions
|
|
42
|
+
|
|
43
|
+
Here is a summary of the available lifecycle functions that should be supported by a majority of the
|
|
44
|
+
templates (exceptions will be noted in the documentation for each template below):
|
|
45
|
+
|
|
46
|
+
~~~cpp
|
|
47
|
+
// This should be used to define any test methods parameters/arguments, it is a direct equivalent of the standard
|
|
48
|
+
// initialize() function.
|
|
49
|
+
function init() {
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// This will be invoked once (applied to all sites) before executing the main body of the test.
|
|
53
|
+
// It should be used to do any setup that you wish to apply to all sites.
|
|
54
|
+
function preBody() {
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// This will be invoked once for each active site and the current site number will be passed in.
|
|
58
|
+
// It should be used to do any site-specific setup.
|
|
59
|
+
function preBody(int site) {
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// This is invoked once per site and can be thought of as roughly equivalent to the standard run() function.
|
|
63
|
+
function body() {
|
|
64
|
+
// By default it calls the test methods execute() method (more on this below), and this will internally apply
|
|
65
|
+
// ON_FIRST_INVOCATION wrappers as required so you should not add these around the call to origen.
|
|
66
|
+
origen.execute();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// This will be invoked once (applied to all sites) after executing the main body of the test.
|
|
70
|
+
// It should be used to do any teardown that you wish to apply to all sites.
|
|
71
|
+
// Note that this function is called synchronously, i.e. it will block execution of the test flow until it
|
|
72
|
+
// has completed.
|
|
73
|
+
function postBody() {
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// This will be invoked once for each active site and the current site number will be passed in.
|
|
77
|
+
// It should be used to do any site-specific teardown.
|
|
78
|
+
// Note that this function is called synchronously, i.e. it will block execution of the test flow until it
|
|
79
|
+
// has completed.
|
|
80
|
+
function postBody(int site) {
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
// This will be invoked once for each active site and is intended to be the place where any processing of the
|
|
85
|
+
// test result or captured data is performed.
|
|
86
|
+
// If async is enabled then it will be called asynchronously and will not block execution of the test flow.
|
|
87
|
+
// If async is not enabled then it will be called after postBody(int site), but is otherwise equivalent.
|
|
88
|
+
function process(int site) {
|
|
89
|
+
}
|
|
90
|
+
~~~
|
|
91
|
+
|
|
92
|
+
#### Common Configuration and Execute API
|
|
93
|
+
|
|
94
|
+
All test templates expose their core functionality via an API that is launched through an object called `origen`.
|
|
95
|
+
This is intended to provide a similar look and feel to the native SMT7 RDI API which is exposed through the `rdi` object.
|
|
96
|
+
|
|
97
|
+
As mentioned above, the default `body()` function implementation will call `origen.execute()` which as the name
|
|
98
|
+
suggests will execute the test.
|
|
99
|
+
|
|
100
|
+
Configuration can be done ahead of calling `execute()`, for example a majority of test templates support the concept
|
|
101
|
+
of selecting a port to execute the pattern on, that can be done like this:
|
|
102
|
+
|
|
103
|
+
~~~cpp
|
|
104
|
+
origen.port("MY_PORT_NAME");
|
|
105
|
+
origen.execute();
|
|
106
|
+
~~~
|
|
107
|
+
|
|
108
|
+
Or, if you prefer, these can be chained together similar to the RDI API:
|
|
109
|
+
|
|
110
|
+
~~~cpp
|
|
111
|
+
origen.port("MY_PORT_NAME").execute();
|
|
112
|
+
~~~
|
|
113
|
+
|
|
114
|
+
To see what configuration options are available from a given test
|
|
115
|
+
[defined in `Origen::TestMethod`](<%= path "/v93k_smt7/html/namespace_origen_1_1_test_method.html" %>), such as
|
|
116
|
+
|
|
117
|
+
#### Asynchronous Processing
|
|
118
|
+
|
|
119
|
+
Asynchronous processing of test results is not supported yet, how to enable it will be described here when it
|
|
120
|
+
is available.
|
|
121
|
+
|
|
122
|
+
The plan is to provide a global switch that will enable/disable asynchronous processing and then an
|
|
123
|
+
individual test-level switch to allow the global setting to be overridden.
|
|
124
|
+
|
|
125
|
+
In the meantime, do all processing that could be done asynchronously within the `process(int site)` function
|
|
126
|
+
described above. Your tests will then be ready to take advantage of the asynchronous feature when it becomes available.
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
### Available Templates
|
|
130
|
+
|
|
131
|
+
There now follows some template-specific guidance, which includes some usage examples:
|
|
132
|
+
|
|
133
|
+
* [FunctionalTest](#Functional_Test)
|
|
134
|
+
* [DCMeasurement](#DCMeasurement)
|
|
135
|
+
* [FrequencyMeasurement](#FrequencyMeasurement)
|
|
136
|
+
* [Empty](#Empty)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
% end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
% render "templates/web/layouts/guides.html" do
|
|
2
|
+
|
|
3
|
+
<div class="alert alert-danger" role="alert">
|
|
4
|
+
<strong>Sorry, Documentation Fail</strong>
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
Unfortunately this guide has not been written yet, the SMT8 library is still in initial development.
|
|
8
|
+
|
|
9
|
+
% end
|
data/templates/web/index.md.erb
CHANGED
|
@@ -4,18 +4,35 @@
|
|
|
4
4
|
%# formatting like this, but in most cases that is not required.
|
|
5
5
|
<h1><%= Origen.app.namespace %> <span style="font-size: 14px">(<%= Origen.app.version %>)</span></h1>
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### Introduction
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
Advantest V93000 tester that is freely available for anyone to use.
|
|
9
|
+
OrigenStdLib aims to provide a standard ATE library with the following goals:
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
* Be agnostic to any particular company or business so that anyone can use this
|
|
12
|
+
* Be higher level than the native functionality provided by the ATE vendors - reducing the amount of low-level knowledge required by test engineers and the footprint of custom code required to be written for a particular test program application
|
|
13
|
+
* Complement the Origen test program and test pattern generators (although it can still be used standalone with flows and patterns originating from any backend flow)
|
|
14
|
+
|
|
15
|
+
It should be noted that this library does not aim to provide a common API across different ATE platforms. Instead, the goal is to provide
|
|
16
|
+
a library which has a natural look and feel on each platform, while still providing a feature set which is broadly similar
|
|
17
|
+
across all platforms.
|
|
18
|
+
|
|
19
|
+
If abstraction of the test platform is required then that is expected to be done by higher level program generators, such
|
|
20
|
+
as Origen, which can provide a common API that compiles to tests which target different ATE implementations of
|
|
21
|
+
this library.
|
|
13
22
|
|
|
14
|
-
|
|
23
|
+
Generally, this library provides three main components:
|
|
15
24
|
|
|
25
|
+
* Helper functions for general use in custom application code
|
|
26
|
+
* Complete tests for use off-the-shelf
|
|
27
|
+
* Customizable test templates that provide core functionality with the ability to customize around the edges
|
|
28
|
+
|
|
29
|
+
[See the FAQ](<%= path "faq" %>) for more background.
|
|
16
30
|
|
|
17
|
-
###
|
|
31
|
+
### Supported Platforms
|
|
18
32
|
|
|
33
|
+
OrigenStdLib currently provides libraries for the following platforms:
|
|
19
34
|
|
|
35
|
+
* [Advantest V93K SMT7](<%= path 'guides/v93ksmt7/intro' %>)
|
|
36
|
+
* [Advantest V93K SMT8](<%= path 'guides/v93ksmt8/intro' %>)
|
|
20
37
|
|
|
21
38
|
% end
|
|
@@ -4,9 +4,21 @@ title: Origen Std Lib
|
|
|
4
4
|
<%= render "partials/navbar.html", tab: :guides %>
|
|
5
5
|
|
|
6
6
|
% index = {}
|
|
7
|
-
% index[
|
|
8
|
-
%
|
|
9
|
-
%
|
|
7
|
+
% index[nil] = {
|
|
8
|
+
% intro: "Introduction",
|
|
9
|
+
% }
|
|
10
|
+
% index["V93K SMT7"] = {
|
|
11
|
+
% v93ksmt7_intro: "Introduction",
|
|
12
|
+
% v93ksmt7_install: "How to Install",
|
|
13
|
+
% v93ksmt7_helpers: "Helper Functions",
|
|
14
|
+
% v93ksmt7_complete: "Complete Tests",
|
|
15
|
+
% v93ksmt7_customizable: "Customizable Tests",
|
|
16
|
+
% v93ksmt7_patching: "Patching Patterns (Overlay)",
|
|
17
|
+
% v93ksmt7_capture: "Data Capture",
|
|
18
|
+
% v93ksmt7_integration: "Origen Integration",
|
|
19
|
+
% }
|
|
20
|
+
% index["V93K SMT8"] = {
|
|
21
|
+
% v93ksmt8_intro: "Introduction",
|
|
10
22
|
% }
|
|
11
23
|
|
|
12
24
|
% opts = options.merge(index: index, root: "guides", prompt: "Search the guides...")
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
* **port (string)** - (Optional, Default="") The name of a port to execute the pattern on, will be
|
|
2
|
+
run on all pins ('@') if a port name is not supplied.
|
|
3
|
+
* **testName (string)** - (Optional) An explicit name to be used when logging the result of this
|
|
4
|
+
test, if not given the test suite name will be used
|
|
5
|
+
* **forcePass (int)** - (Optional, Default=0) When set to 1, the test will appear to always pass in the flow (produce
|
|
6
|
+
a green box), although the actual pass/fail result value will be logged to STDF. Normally this would be
|
|
7
|
+
used for tests in the flow which are for data collection only.
|
|
8
|
+
* **onPassFlag (string)** - (Optional) The name of a test flow variable to be set if the test fails, e.g.
|
|
9
|
+
setting this to "MY_FLAG" would cause "@MY_FLAG" to be set to 1 in the event of the test passing.
|
|
10
|
+
No modification will be made to the variable if the test fails.
|
|
11
|
+
* **onFailFlag (string)** - (Optional) The name of a test flow variable to be set if the test fails, e.g.
|
|
12
|
+
setting this to "MY_FLAG" would cause "@MY_FLAG" to be set to 1 in the event of the test failing.
|
|
13
|
+
No modification will be made to the variable if the test passes.
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
</div>
|
|
12
12
|
<div id="navbar" class="collapse navbar-collapse">
|
|
13
13
|
<ul class="nav navbar-nav">
|
|
14
|
-
<li class="<%= options[:tab] == :guides ? 'active' : '' %>"><a href="<%= path "/guides/
|
|
14
|
+
<li class="<%= options[:tab] == :guides ? 'active' : '' %>"><a href="<%= path "/guides/intro" %>">Guides</a></li>
|
|
15
15
|
|
|
16
16
|
<li class="<%= options[:tab] == :faq ? 'active' : '' %>"><a href="<%= path "/faq" %>">FAQ</a></li>
|
|
17
17
|
|
|
18
18
|
<li class="dropdown">
|
|
19
19
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">API <span class="caret"></span></a>
|
|
20
20
|
<ul class="dropdown-menu">
|
|
21
|
-
<li><a href="<%= path "/
|
|
21
|
+
<li><a href="<%= path "/v93k_smt7/html/annotated.html" %>">V93K SMT7</a></li>
|
|
22
22
|
</ul>
|
|
23
23
|
</li>
|
|
24
24
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: origen_std_lib
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.13.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stephen McGinty
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-09-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: origen
|
|
@@ -30,14 +30,14 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0.
|
|
33
|
+
version: 0.31.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 0.
|
|
40
|
+
version: 0.31.0
|
|
41
41
|
description:
|
|
42
42
|
email:
|
|
43
43
|
- stephen.mcginty@nxp.com
|
|
@@ -55,34 +55,53 @@ files:
|
|
|
55
55
|
- lib/origen_std_lib_dev/interface.rb
|
|
56
56
|
- lib/tasks/origen_std_lib.rake
|
|
57
57
|
- program/prb1.rb
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
58
|
+
- src/advantest/smt7/origen/.cproject
|
|
59
|
+
- src/advantest/smt7/origen/.project
|
|
60
|
+
- src/advantest/smt7/origen/origen.cpp
|
|
61
|
+
- src/advantest/smt7/origen/origen.hpp
|
|
62
|
+
- src/advantest/smt7/origen/origen/helpers.hpp
|
|
63
|
+
- src/advantest/smt7/origen/origen/helpers/console.cpp
|
|
64
|
+
- src/advantest/smt7/origen/origen/helpers/misc.cpp
|
|
65
|
+
- src/advantest/smt7/origen/origen/helpers/time.cpp
|
|
66
|
+
- src/advantest/smt7/origen/origen/site.cpp
|
|
67
|
+
- src/advantest/smt7/origen/origen/site.hpp
|
|
68
|
+
- src/advantest/smt7/origen/origen/test_method.hpp
|
|
69
|
+
- src/advantest/smt7/origen/origen/test_method/base.cpp
|
|
70
|
+
- src/advantest/smt7/origen/origen/test_method/base.hpp
|
|
71
|
+
- src/advantest/smt7/origen/origen/test_method/dc_measurement.cpp
|
|
72
|
+
- src/advantest/smt7/origen/origen/test_method/dc_measurement.hpp
|
|
73
|
+
- src/advantest/smt7/origen/origen/test_method/empty.cpp
|
|
74
|
+
- src/advantest/smt7/origen/origen/test_method/empty.hpp
|
|
75
|
+
- src/advantest/smt7/origen/origen/test_method/frequency_measurement.cpp
|
|
76
|
+
- src/advantest/smt7/origen/origen/test_method/frequency_measurement.hpp
|
|
77
|
+
- src/advantest/smt7/origen/origen/test_method/functional_test.cpp
|
|
78
|
+
- src/advantest/smt7/origen/origen/test_method/functional_test.hpp
|
|
79
|
+
- src/advantest/smt7/origen/origen/utils.hpp
|
|
80
|
+
- src/advantest/smt7/origen/origen/utils/version.cpp
|
|
81
|
+
- src/advantest/smt7/origen/origen/utils/version.hpp
|
|
82
|
+
- src/advantest/smt7/origen/test_methods/ApplyBin.cpp
|
|
83
|
+
- src/advantest/smt7/origen/test_methods/DCMeasurement.cpp
|
|
84
|
+
- src/advantest/smt7/origen/test_methods/FrequencyMeasurement.cpp
|
|
85
|
+
- src/advantest/smt7/origen/test_methods/FunctionalTest.cpp
|
|
86
|
+
- src/advantest/smt7/origen/test_methods/RecordBin.cpp
|
|
87
|
+
- src/advantest/smt8/origen/common/Origen.java
|
|
88
|
+
- src/advantest/smt8/origen/common/OrigenData.java
|
|
89
|
+
- src/advantest/smt8/origen/common/OrigenHelpers.java
|
|
90
|
+
- src/advantest/smt8/origen/test_methods/Base.java
|
|
91
|
+
- src/advantest/smt8/origen/test_methods/DC_Measurement.java
|
|
92
|
+
- src/advantest/smt8/origen/test_methods/Empty.java
|
|
93
|
+
- src/advantest/smt8/origen/test_methods/Functional_test.java
|
|
83
94
|
- templates/web/faq.md.erb
|
|
84
|
-
- templates/web/guides/
|
|
85
|
-
- templates/web/guides/
|
|
95
|
+
- templates/web/guides/intro.md.erb
|
|
96
|
+
- templates/web/guides/v93ksmt7/capture.md.erb
|
|
97
|
+
- templates/web/guides/v93ksmt7/complete.md.erb
|
|
98
|
+
- templates/web/guides/v93ksmt7/customizable.md.erb
|
|
99
|
+
- templates/web/guides/v93ksmt7/helpers.md.erb
|
|
100
|
+
- templates/web/guides/v93ksmt7/install.md.erb
|
|
101
|
+
- templates/web/guides/v93ksmt7/integration.md.erb
|
|
102
|
+
- templates/web/guides/v93ksmt7/intro.md.erb
|
|
103
|
+
- templates/web/guides/v93ksmt7/patching.md.erb
|
|
104
|
+
- templates/web/guides/v93ksmt8/intro.md.erb
|
|
86
105
|
- templates/web/img/install1.png
|
|
87
106
|
- templates/web/img/install2.png
|
|
88
107
|
- templates/web/img/install3.png
|
|
@@ -91,6 +110,7 @@ files:
|
|
|
91
110
|
- templates/web/index.md.erb
|
|
92
111
|
- templates/web/layouts/_basic.html.erb
|
|
93
112
|
- templates/web/layouts/_guides.html.erb
|
|
113
|
+
- templates/web/partials/_common_args.md.erb
|
|
94
114
|
- templates/web/partials/_navbar.html.erb
|
|
95
115
|
- templates/web/release_notes.md.erb
|
|
96
116
|
homepage:
|
|
@@ -111,8 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
111
131
|
- !ruby/object:Gem::Version
|
|
112
132
|
version: 1.8.11
|
|
113
133
|
requirements: []
|
|
114
|
-
|
|
115
|
-
rubygems_version: 2.6.7
|
|
134
|
+
rubygems_version: 3.1.4
|
|
116
135
|
signing_key:
|
|
117
136
|
specification_version: 4
|
|
118
137
|
summary: Test program interface drivers for the Origen tester standard library
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/** @file */
|
|
2
|
-
#include "../helpers.hpp"
|
|
3
|
-
#include <cerrno>
|
|
4
|
-
#include <stdlib.h>
|
|
5
|
-
#include "../../origen.hpp"
|
|
6
|
-
|
|
7
|
-
using namespace std;
|
|
8
|
-
|
|
9
|
-
namespace Origen {
|
|
10
|
-
|
|
11
|
-
/// Prints the result of a parametric test to the console
|
|
12
|
-
void logParametricTest(string name, int site, double result, LIMIT limits, string pin) {
|
|
13
|
-
|
|
14
|
-
cout << site << " ";
|
|
15
|
-
if (isPass(result, limits))
|
|
16
|
-
cout << " ";
|
|
17
|
-
else
|
|
18
|
-
cout << "FAIL ";
|
|
19
|
-
cout << left << setw(65) << setfill(' ') << name << " ";
|
|
20
|
-
cout << left << setw(20) << setfill(' ') << loStr(limits) << " ";
|
|
21
|
-
cout << left << setw(20) << setfill(' ') << result;
|
|
22
|
-
cout << left << setw(20) << setfill(' ') << hiStr(limits);
|
|
23
|
-
cout << pin << endl;
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/// Returns a LIMIT object with no limits enabled
|
|
28
|
-
LIMIT noLimits() {
|
|
29
|
-
return LIMIT(TM::NA, 0, TM::NA, 0);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/// Prints the result of a functional test to the console
|
|
33
|
-
void logFunctionalTest(string name, int site, bool passed, string pattern) {
|
|
34
|
-
cout << site << " ";
|
|
35
|
-
if (passed)
|
|
36
|
-
cout << " ";
|
|
37
|
-
else
|
|
38
|
-
cout << "FAIL ";
|
|
39
|
-
cout << left << setw(65) << setfill(' ') << name << " ";
|
|
40
|
-
cout << pattern << endl;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/// Converts the low limit in the given LIMIT object into a string, where an empty string will be returned if the limit is not enabled
|
|
44
|
-
string loStr(LIMIT limits) {
|
|
45
|
-
double lo = 0.0;
|
|
46
|
-
double * plo = &lo;
|
|
47
|
-
TM::COMPARE clo;
|
|
48
|
-
|
|
49
|
-
clo = limits.getLow(plo);
|
|
50
|
-
|
|
51
|
-
if (clo == TM::NA) {
|
|
52
|
-
return "";
|
|
53
|
-
} else {
|
|
54
|
-
stringstream val;
|
|
55
|
-
val << lo;
|
|
56
|
-
return val.str();
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/// Converts the high limit in the given LIMIT object into a string, where an empty string will be returned if the limit is not enabled
|
|
61
|
-
string hiStr(LIMIT limits) {
|
|
62
|
-
double hi = 0.0;
|
|
63
|
-
double * phi = &hi;
|
|
64
|
-
TM::COMPARE chi;
|
|
65
|
-
|
|
66
|
-
chi = limits.getHigh(phi);
|
|
67
|
-
|
|
68
|
-
if (chi == TM::NA) {
|
|
69
|
-
return "";
|
|
70
|
-
} else {
|
|
71
|
-
stringstream val;
|
|
72
|
-
val << hi;
|
|
73
|
-
return val.str();
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/// Returns true if the result is within the given limits
|
|
77
|
-
bool isPass(double val, LIMIT limits) {
|
|
78
|
-
double lo = 0.0;
|
|
79
|
-
double hi = 0.0;
|
|
80
|
-
double * plo = &lo;
|
|
81
|
-
double * phi = &hi;
|
|
82
|
-
TM::COMPARE clo, chi;
|
|
83
|
-
bool result;
|
|
84
|
-
|
|
85
|
-
clo = limits.getLow(plo);
|
|
86
|
-
chi = limits.getHigh(phi);
|
|
87
|
-
|
|
88
|
-
result = true;
|
|
89
|
-
|
|
90
|
-
if (clo != TM::NA) {
|
|
91
|
-
if (clo == TM::GE && val < lo)
|
|
92
|
-
result = false;
|
|
93
|
-
if (clo == TM::GT && val <= lo)
|
|
94
|
-
result = false;
|
|
95
|
-
}
|
|
96
|
-
if (chi != TM::NA) {
|
|
97
|
-
if (chi == TM::LE && val > hi)
|
|
98
|
-
result = false;
|
|
99
|
-
if (chi == TM::LT && val >= hi)
|
|
100
|
-
result = false;
|
|
101
|
-
}
|
|
102
|
-
return result;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
}
|