origen_std_lib 0.10.1 → 0.13.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
}
|