origen_testers 0.9.8 → 0.9.9
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 +4 -4
- data/config/version.rb +1 -1
- data/lib/commands/run.rb +11 -7
- data/lib/origen_testers/api.rb +5 -0
- data/lib/origen_testers/interface.rb +24 -0
- data/lib/origen_testers/smartest_based_tester/base/flow.rb +41 -2
- data/lib/origen_testers/smartest_based_tester/base/generator.rb +3 -0
- data/lib/origen_testers/smartest_based_tester/base/variables_file.rb +5 -2
- data/lib/origen_testers/smartest_based_tester/base.rb +30 -4
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.tf.erb +6 -7
- data/program/prb2.rb +3 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a7d6f5f17bb69b966e7c3b833e91a8b593e226d
|
4
|
+
data.tar.gz: 54c251cd6238267287e6921dbe5dc32b27c56db0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eca1251500248c27679ccd44b438168f1e15a5c84e9f2165532490d8656945ac3c1637452df6cc2a1bbd6d7063b35c5e9e27ca577d2ea270064be5f44f1b6e94
|
7
|
+
data.tar.gz: 27388317149cb3eb64f4e4d998442b9076816a488f5d13c9954a74593efd7993c0b718a7bd6eaeeca1a3db65490f80feb105ac1230f4d61c2ebfc9966a8eb988
|
data/config/version.rb
CHANGED
data/lib/commands/run.rb
CHANGED
@@ -33,12 +33,16 @@ unless program
|
|
33
33
|
exit 1
|
34
34
|
end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
36
|
+
unless ARGV.first
|
37
|
+
if OrigenTesters.program.flows.keys.size == 1
|
38
|
+
ARGV << OrigenTesters.program.flows.keys.first
|
39
|
+
else
|
40
|
+
puts 'You must supply the name of the flow to execute, the current program has these flows'
|
41
|
+
puts OrigenTesters.program.flows.keys
|
42
|
+
exit 1
|
43
|
+
end
|
42
44
|
end
|
43
45
|
|
44
|
-
|
46
|
+
ARGV.each do |flow|
|
47
|
+
OrigenTesters.program.flows[flow.to_sym].run(options)
|
48
|
+
end
|
data/lib/origen_testers/api.rb
CHANGED
@@ -51,6 +51,30 @@ module OrigenTesters
|
|
51
51
|
OrigenTesters::Interface.write?
|
52
52
|
end
|
53
53
|
|
54
|
+
# Set to :enabled to have the current flow wrapped by an enable flow variable
|
55
|
+
# that is enabled by default (top-level flow has to disable modules it doesn't want).
|
56
|
+
#
|
57
|
+
# Set to :disabled to have the opposite, where the top-level flow has to enable all
|
58
|
+
# modules.
|
59
|
+
#
|
60
|
+
# Set to nil to have no wrapping. While this is the default, setting this to nil will
|
61
|
+
# override any setting of the attribute of the same name that has been set at
|
62
|
+
# tester-level by the target.
|
63
|
+
def add_flow_enable=(value)
|
64
|
+
return unless flow.respond_to?(:add_flow_enable=)
|
65
|
+
if value
|
66
|
+
if value == :enable || value == :enabled
|
67
|
+
flow.add_flow_enable = :enabled
|
68
|
+
elsif value == :disable || value == :disabled
|
69
|
+
flow.add_flow_enable = :disabled
|
70
|
+
else
|
71
|
+
fail "Unknown add_flow_enable value, #{value}, must be :enabled or :disabled"
|
72
|
+
end
|
73
|
+
else
|
74
|
+
flow.add_flow_enable = nil
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
54
78
|
# This identifier will be used to make labels and other references unique to the
|
55
79
|
# current application. This will help to avoid name duplication if a program is
|
56
80
|
# comprised of many modules generated by Origen.
|
@@ -9,6 +9,8 @@ module OrigenTesters
|
|
9
9
|
# Returns an array containing all runtime variables which get set by the flow
|
10
10
|
attr_reader :set_runtime_variables
|
11
11
|
|
12
|
+
attr_accessor :add_flow_enable
|
13
|
+
|
12
14
|
def var_filename
|
13
15
|
@var_filename || 'global'
|
14
16
|
end
|
@@ -39,11 +41,48 @@ module OrigenTesters
|
|
39
41
|
def at_flow_end
|
40
42
|
end
|
41
43
|
|
44
|
+
def flow_header
|
45
|
+
h = ['{']
|
46
|
+
if add_flow_enable
|
47
|
+
var = filename.sub(/\..*/, '').upcase
|
48
|
+
var = "#{var}_ENABLE"
|
49
|
+
if add_flow_enable == :enabled
|
50
|
+
flow_control_variables << [var, 1]
|
51
|
+
else
|
52
|
+
flow_control_variables << [var, 0]
|
53
|
+
end
|
54
|
+
h << " if @#{var} == 1 then"
|
55
|
+
h << ' {'
|
56
|
+
i = ' '
|
57
|
+
else
|
58
|
+
i = ''
|
59
|
+
end
|
60
|
+
|
61
|
+
h << i + ' {'
|
62
|
+
set_runtime_variables.each do |var|
|
63
|
+
h << i + " @#{var.to_s.upcase} = -1;"
|
64
|
+
end
|
65
|
+
h << i + ' }, open,"Init Flow Control Vars", ""'
|
66
|
+
h
|
67
|
+
end
|
68
|
+
|
69
|
+
def flow_footer
|
70
|
+
f = []
|
71
|
+
if add_flow_enable
|
72
|
+
f << ' }'
|
73
|
+
f << ' else'
|
74
|
+
f << ' {'
|
75
|
+
f << ' }'
|
76
|
+
end
|
77
|
+
f << "}, open,\"#{filename.sub(/\..*/, '').upcase}\", \"\""
|
78
|
+
f
|
79
|
+
end
|
80
|
+
|
42
81
|
def finalize(options = {})
|
43
82
|
super
|
44
83
|
test_suites.finalize
|
45
84
|
test_methods.finalize
|
46
|
-
@indent =
|
85
|
+
@indent = add_flow_enable ? 2 : 1
|
47
86
|
@lines = []
|
48
87
|
@stack = { on_fail: [], on_pass: [] }
|
49
88
|
m = Processors::IfRanCleaner.new.process(model.ast)
|
@@ -54,7 +93,7 @@ module OrigenTesters
|
|
54
93
|
end
|
55
94
|
|
56
95
|
def line(str)
|
57
|
-
@lines << ('
|
96
|
+
@lines << (' ' * @indent) + str
|
58
97
|
end
|
59
98
|
|
60
99
|
# def on_flow(node)
|
@@ -27,6 +27,9 @@ module OrigenTesters
|
|
27
27
|
# @api private
|
28
28
|
def at_flow_start
|
29
29
|
flow.at_flow_start
|
30
|
+
# Initialize this to the value currently set on the tester, any further setting of
|
31
|
+
# this by the interface will override
|
32
|
+
flow.add_flow_enable = tester.add_flow_enable
|
30
33
|
@pattern_master_filename = nil
|
31
34
|
end
|
32
35
|
|
@@ -18,8 +18,11 @@ module OrigenTesters
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def clean_flow_control_variables
|
21
|
-
|
22
|
-
|
21
|
+
flow_control_variables.uniq.sort do |x, y|
|
22
|
+
x = x[0] if x.is_a?(Array)
|
23
|
+
y = y[0] if y.is_a?(Array)
|
24
|
+
x <=> y
|
25
|
+
end
|
23
26
|
end
|
24
27
|
|
25
28
|
def clean_runtime_control_variables
|
@@ -6,10 +6,16 @@ module OrigenTesters
|
|
6
6
|
# Disable inline (end of vector) comments, enabled by default
|
7
7
|
attr_accessor :inline_comments
|
8
8
|
|
9
|
-
# Returns
|
10
|
-
#
|
11
|
-
#
|
12
|
-
|
9
|
+
# Returns whether the tester has been configured to wrap top-level flow modules with an
|
10
|
+
# enable or not.
|
11
|
+
#
|
12
|
+
# Returns nil if not.
|
13
|
+
#
|
14
|
+
# Returns :enabled if the enable is configured to be on by default, or :disabled if it is
|
15
|
+
# configured to be off by default.
|
16
|
+
attr_reader :add_flow_enable
|
17
|
+
|
18
|
+
def initialize(options = {})
|
13
19
|
@max_repeat_loop = 65_535
|
14
20
|
@min_repeat_loop = 33
|
15
21
|
@pat_extension = 'avc'
|
@@ -20,6 +26,26 @@ module OrigenTesters
|
|
20
26
|
@comment_char = '#'
|
21
27
|
@level_period = true
|
22
28
|
@inline_comments = true
|
29
|
+
if options[:add_flow_enable]
|
30
|
+
self.add_flow_enable = options[:add_flow_enable]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Set to :enabled to have all top-level flow modules wrapped by an enable flow variable
|
35
|
+
# that is enabled by default (top-level flow has to disable modules it doesn't want).
|
36
|
+
#
|
37
|
+
# Set to :disabled to have the opposite, where the top-level flow has to enable all
|
38
|
+
# modules.
|
39
|
+
#
|
40
|
+
# Note that the interface can override this setting for each flow during program generation.
|
41
|
+
def add_flow_enable=(value)
|
42
|
+
if value == :enable || value == :enabled
|
43
|
+
@add_flow_enable = :enabled
|
44
|
+
elsif value == :disable || value == :disabled
|
45
|
+
@add_flow_enable = :disabled
|
46
|
+
else
|
47
|
+
fail "Unknown add_flow_enable value, #{value}, must be :enabled or :disabled"
|
48
|
+
end
|
23
49
|
end
|
24
50
|
|
25
51
|
# Capture the pin data from a vector to the tester.
|
@@ -175,16 +175,15 @@ test_flow
|
|
175
175
|
<%= line %>
|
176
176
|
% end
|
177
177
|
% else
|
178
|
-
|
179
|
-
|
180
|
-
% set_runtime_variables.each do |var|
|
181
|
-
@<%= var.to_s.upcase %> = -1;
|
178
|
+
% flow_header.each do |line|
|
179
|
+
<%= line %>
|
182
180
|
% end
|
183
|
-
}, open,"Init Flow Control Vars", ""
|
184
181
|
% lines.each do |line|
|
185
|
-
|
182
|
+
<%= line %>
|
183
|
+
% end
|
184
|
+
% flow_footer.each do |line|
|
185
|
+
<%= line %>
|
186
186
|
% end
|
187
|
-
}, open,"<%= filename.sub(/\..*/, '').upcase %>", ""
|
188
187
|
% end
|
189
188
|
end
|
190
189
|
-------------------------------------------------
|
data/program/prb2.rb
CHANGED
@@ -2,6 +2,9 @@
|
|
2
2
|
# a single source file
|
3
3
|
Flow.create interface: 'OrigenTesters::Test::Interface' do
|
4
4
|
|
5
|
+
# Test that this can be overridden from the target at flow-level
|
6
|
+
self.add_flow_enable = :enabled
|
7
|
+
|
5
8
|
self.resources_filename = 'prb2'
|
6
9
|
|
7
10
|
func :erase_all, :duration => :dynamic
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: origen_testers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen McGinty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: origen
|
@@ -343,7 +343,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
343
343
|
version: 1.8.11
|
344
344
|
requirements: []
|
345
345
|
rubyforge_project:
|
346
|
-
rubygems_version: 2.
|
346
|
+
rubygems_version: 2.5.2
|
347
347
|
signing_key:
|
348
348
|
specification_version: 4
|
349
349
|
summary: This plugin provides Origen tester models to drive ATE type testers like
|