origen 0.2.6 → 0.3.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 (158) hide show
  1. checksums.yaml +4 -4
  2. data/bin/origen +3 -1
  3. data/config/boot.rb +1 -7
  4. data/config/commands.rb +0 -1
  5. data/config/version.rb +2 -2
  6. data/lib/c99/{j750_interface.rb → ate_interface.rb} +3 -11
  7. data/lib/c99/doc_interface.rb +1 -1
  8. data/lib/origen.rb +9 -30
  9. data/lib/origen/application.rb +10 -8
  10. data/lib/origen/application/configuration.rb +13 -26
  11. data/lib/origen/application/plugins.rb +122 -0
  12. data/lib/origen/application/plugins_manager.rb +16 -254
  13. data/lib/origen/application/release.rb +2 -2
  14. data/lib/origen/application/runner.rb +2 -4
  15. data/lib/origen/chips.rb +0 -0
  16. data/lib/origen/chips/chip.rb +0 -0
  17. data/lib/origen/chips/design_entry.rb +0 -0
  18. data/lib/origen/chips/doc_entry.rb +0 -0
  19. data/lib/origen/chips/note.rb +0 -0
  20. data/lib/origen/commands.rb +4 -44
  21. data/lib/origen/commands/compile.rb +1 -2
  22. data/lib/origen/commands/generate.rb +1 -1
  23. data/lib/origen/commands/interactive.rb +1 -2
  24. data/lib/origen/commands/plugin.rb +49 -56
  25. data/lib/origen/commands/program.rb +1 -1
  26. data/lib/origen/commands/rc.rb +2 -2
  27. data/lib/origen/commands/version.rb +2 -17
  28. data/lib/origen/commands_global.rb +3 -0
  29. data/lib/origen/file_handler.rb +10 -10
  30. data/lib/origen/generator.rb +1 -1
  31. data/lib/origen/generator/job.rb +1 -1
  32. data/lib/origen/generator/pattern.rb +2 -2
  33. data/lib/origen/generator/pattern_finder.rb +10 -9
  34. data/lib/origen/pins/pin.rb +0 -0
  35. data/lib/origen/regression_manager.rb +0 -0
  36. data/lib/origen/remote_manager.rb +2 -8
  37. data/lib/origen/revision_control/design_sync.rb +0 -0
  38. data/lib/origen/revision_control/git.rb +0 -0
  39. data/lib/origen/specs.rb +0 -0
  40. data/lib/origen/specs/checkers.rb +0 -0
  41. data/lib/origen/specs/creation_info.rb +0 -0
  42. data/lib/origen/specs/exhibit.rb +0 -0
  43. data/lib/origen/specs/spec.rb +0 -0
  44. data/lib/origen/utility.rb +0 -1
  45. data/lib/origen/utility/diff.rb +0 -0
  46. metadata +42 -119
  47. data/lib/origen/import_manager.rb +0 -596
  48. data/lib/origen/nvm.rb +0 -6
  49. data/lib/origen/nvm/block_array.rb +0 -72
  50. data/lib/origen/tester.rb +0 -56
  51. data/lib/origen/tester/api.rb +0 -277
  52. data/lib/origen/tester/bdm/bdm.rb +0 -25
  53. data/lib/origen/tester/doc/doc.rb +0 -226
  54. data/lib/origen/tester/doc/generator.rb +0 -126
  55. data/lib/origen/tester/doc/generator/flow.rb +0 -71
  56. data/lib/origen/tester/doc/generator/flow_line.rb +0 -203
  57. data/lib/origen/tester/doc/generator/test.rb +0 -68
  58. data/lib/origen/tester/doc/generator/test_group.rb +0 -66
  59. data/lib/origen/tester/doc/generator/tests.rb +0 -47
  60. data/lib/origen/tester/doc/model.rb +0 -162
  61. data/lib/origen/tester/generator.rb +0 -271
  62. data/lib/origen/tester/generator/flow_control_api.rb +0 -606
  63. data/lib/origen/tester/generator/identity_map.rb +0 -25
  64. data/lib/origen/tester/generator/placeholder.rb +0 -13
  65. data/lib/origen/tester/generator/test_numberer.rb +0 -25
  66. data/lib/origen/tester/interface.rb +0 -154
  67. data/lib/origen/tester/j750/files.rb +0 -45
  68. data/lib/origen/tester/j750/generator.rb +0 -203
  69. data/lib/origen/tester/j750/generator/flow.rb +0 -123
  70. data/lib/origen/tester/j750/generator/flow_line.rb +0 -288
  71. data/lib/origen/tester/j750/generator/patgroup.rb +0 -111
  72. data/lib/origen/tester/j750/generator/patgroups.rb +0 -41
  73. data/lib/origen/tester/j750/generator/patset.rb +0 -111
  74. data/lib/origen/tester/j750/generator/patsets.rb +0 -41
  75. data/lib/origen/tester/j750/generator/templates/flow.txt.erb +0 -9
  76. data/lib/origen/tester/j750/generator/templates/instances.txt.erb +0 -16
  77. data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +0 -8
  78. data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +0 -10
  79. data/lib/origen/tester/j750/generator/test_instance.rb +0 -846
  80. data/lib/origen/tester/j750/generator/test_instance_group.rb +0 -60
  81. data/lib/origen/tester/j750/generator/test_instances.rb +0 -182
  82. data/lib/origen/tester/j750/j750.rb +0 -845
  83. data/lib/origen/tester/j750/j750_hpt.rb +0 -35
  84. data/lib/origen/tester/j750/parser.rb +0 -104
  85. data/lib/origen/tester/j750/parser/ac_spec.rb +0 -11
  86. data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
  87. data/lib/origen/tester/j750/parser/dc_spec.rb +0 -36
  88. data/lib/origen/tester/j750/parser/dc_specs.rb +0 -50
  89. data/lib/origen/tester/j750/parser/descriptions.rb +0 -340
  90. data/lib/origen/tester/j750/parser/flow.rb +0 -111
  91. data/lib/origen/tester/j750/parser/flow_line.rb +0 -207
  92. data/lib/origen/tester/j750/parser/flows.rb +0 -23
  93. data/lib/origen/tester/j750/parser/pattern_set.rb +0 -94
  94. data/lib/origen/tester/j750/parser/pattern_sets.rb +0 -33
  95. data/lib/origen/tester/j750/parser/test_instance.rb +0 -322
  96. data/lib/origen/tester/j750/parser/test_instances.rb +0 -26
  97. data/lib/origen/tester/j750/parser/timeset.rb +0 -15
  98. data/lib/origen/tester/j750/parser/timesets.rb +0 -0
  99. data/lib/origen/tester/jlink/jlink.rb +0 -33
  100. data/lib/origen/tester/parser.rb +0 -24
  101. data/lib/origen/tester/parser/description_lookup.rb +0 -64
  102. data/lib/origen/tester/parser/searchable_array.rb +0 -32
  103. data/lib/origen/tester/parser/searchable_hash.rb +0 -32
  104. data/lib/origen/tester/time.rb +0 -338
  105. data/lib/origen/tester/timing.rb +0 -253
  106. data/lib/origen/tester/ultraflex/files.rb +0 -45
  107. data/lib/origen/tester/ultraflex/generator.rb +0 -200
  108. data/lib/origen/tester/ultraflex/generator/flow.rb +0 -119
  109. data/lib/origen/tester/ultraflex/generator/flow_line.rb +0 -269
  110. data/lib/origen/tester/ultraflex/generator/patgroup.rb +0 -111
  111. data/lib/origen/tester/ultraflex/generator/patgroups.rb +0 -41
  112. data/lib/origen/tester/ultraflex/generator/patset.rb +0 -111
  113. data/lib/origen/tester/ultraflex/generator/patsets.rb +0 -41
  114. data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +0 -9
  115. data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +0 -16
  116. data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +0 -8
  117. data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +0 -10
  118. data/lib/origen/tester/ultraflex/generator/test_instance.rb +0 -622
  119. data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +0 -60
  120. data/lib/origen/tester/ultraflex/generator/test_instances.rb +0 -174
  121. data/lib/origen/tester/ultraflex/parser.rb +0 -104
  122. data/lib/origen/tester/ultraflex/parser/ac_spec.rb +0 -11
  123. data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
  124. data/lib/origen/tester/ultraflex/parser/dc_spec.rb +0 -36
  125. data/lib/origen/tester/ultraflex/parser/dc_specs.rb +0 -50
  126. data/lib/origen/tester/ultraflex/parser/descriptions.rb +0 -342
  127. data/lib/origen/tester/ultraflex/parser/flow.rb +0 -111
  128. data/lib/origen/tester/ultraflex/parser/flow_line.rb +0 -207
  129. data/lib/origen/tester/ultraflex/parser/flows.rb +0 -23
  130. data/lib/origen/tester/ultraflex/parser/pattern_set.rb +0 -94
  131. data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +0 -33
  132. data/lib/origen/tester/ultraflex/parser/test_instance.rb +0 -262
  133. data/lib/origen/tester/ultraflex/parser/test_instances.rb +0 -26
  134. data/lib/origen/tester/ultraflex/parser/timeset.rb +0 -15
  135. data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
  136. data/lib/origen/tester/ultraflex/ultraflex.rb +0 -759
  137. data/lib/origen/tester/v93k/generator.rb +0 -80
  138. data/lib/origen/tester/v93k/generator/flow.rb +0 -63
  139. data/lib/origen/tester/v93k/generator/flow_node.rb +0 -17
  140. data/lib/origen/tester/v93k/generator/flow_node/print.rb +0 -10
  141. data/lib/origen/tester/v93k/generator/pattern.rb +0 -16
  142. data/lib/origen/tester/v93k/generator/pattern_master.rb +0 -54
  143. data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +0 -6
  144. data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +0 -11
  145. data/lib/origen/tester/v93k/generator/templates/template.flow.erb +0 -121
  146. data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +0 -9
  147. data/lib/origen/tester/v93k/generator/test_function.rb +0 -103
  148. data/lib/origen/tester/v93k/generator/test_functions.rb +0 -79
  149. data/lib/origen/tester/v93k/generator/test_method.rb +0 -46
  150. data/lib/origen/tester/v93k/generator/test_methods.rb +0 -75
  151. data/lib/origen/tester/v93k/generator/test_suite.rb +0 -54
  152. data/lib/origen/tester/v93k/generator/test_suites.rb +0 -65
  153. data/lib/origen/tester/v93k/v93k.rb +0 -420
  154. data/lib/origen/tester/vector.rb +0 -86
  155. data/lib/origen/tester/vector_generator.rb +0 -637
  156. data/lib/origen/tester/vector_pipeline.rb +0 -150
  157. data/lib/origen/utility/design_sync.rb +0 -494
  158. data/lib/origen/version_checker.rb +0 -117
@@ -1,111 +0,0 @@
1
- module Origen
2
- module Tester
3
- class Ultraflex
4
- class Parser
5
- class Flow < Origen::Tester::Parser::SearchableArray
6
- require 'pathname'
7
-
8
- attr_accessor :parser, :file
9
-
10
- def initialize(file, options = {}) # :nodoc:
11
- @parser = options[:parser]
12
- @file = Pathname.new(file)
13
- parse
14
- end
15
-
16
- def description
17
- @parser.descriptions.flow_summary(file: file)
18
- end
19
- alias_method :summary, :description
20
-
21
- # Returns the filename of the sheet that contained the current flow
22
- def filename
23
- @file.basename.to_s
24
- end
25
- alias_method :name, :filename
26
-
27
- # Returns all flow lines that are tests, optionally supply a context to
28
- # have only the test that will execute in that context returned
29
- #
30
- # $tester.flow.first.tests.size
31
- # => 20
32
- # $tester.flow.first.tests(:job => "P1").size
33
- # => 10
34
- # $tester.flow.first.tests(:job => "P1", :enable => "data_collection").size
35
- # => 15
36
- def tests(context = {})
37
- run_context(context)
38
- end
39
-
40
- # Returns all tests in the current flow, regardless of context
41
- def all_tests
42
- where(opcode: %w(Test characterize), exact: true)
43
- end
44
-
45
- def run_context(context) # :nodoc:
46
- capture = true
47
- waiting_for_label = false
48
- select do |line|
49
- if capture
50
- if !waiting_for_label || waiting_for_label == line.label
51
- waiting_for_label = false
52
- case line.type
53
- when 'Test', 'characterize'
54
- line.executes_under_context?(context)
55
- when 'set-device', 'stop'
56
- capture = false if line.executes_under_context?(context)
57
- false
58
- when 'enable-flow-word'
59
- if line.executes_under_context?(context)
60
- context[:enable] = [context[:enable]].flatten
61
- context[:enable] << line.parameter
62
- end
63
- false
64
- when 'flag-true'
65
- if line.executes_under_context?(context)
66
- context[:true_flags] = [context[:true_flags]].flatten
67
- context[:true_flags] << line.parameter
68
- end
69
- false
70
- when 'flag-false'
71
- if line.executes_under_context?(context)
72
- context[:false_flags] = [context[:false_flags]].flatten
73
- context[:false_flags] << line.parameter
74
- end
75
- false
76
- when 'disable-flow-word'
77
- if line.executes_under_context?(context)
78
- context[:enable] = [context[:enable]].flatten
79
- context[:enable].delete(line.parameter)
80
- end
81
- false
82
- when 'logprint', 'nop', 'print'
83
- false
84
- when 'goto'
85
- waiting_for_label = line.parameter
86
- false
87
- else
88
- fail "Don't know how to process: #{line.type}, in file #{filename}"
89
- end
90
- else
91
- false
92
- end
93
- end
94
- end
95
- end
96
-
97
- def parse # :nodoc:
98
- File.readlines(@file).each do |line|
99
- l = FlowLine.new(line, parser: parser, flow: self)
100
- self << l if l.valid?
101
- end
102
- end
103
-
104
- def inspect # :nodoc:
105
- "<TestFlow: #{filename}, Lines: #{size}>"
106
- end
107
- end
108
- end
109
- end
110
- end
111
- end
@@ -1,207 +0,0 @@
1
- module Origen
2
- module Tester
3
- class Ultraflex
4
- class Parser
5
- class FlowLine
6
- attr_accessor :parser, :flow, :line
7
-
8
- TYPES = %w(
9
- Test characterize defaults enable-flow-word disable-flow-word error-print goto
10
- goto-on-all-done goto-on-all-lastfail goto-on-all-lastfaildoall logprint modify
11
- nop print reset set-device set-device-new set-error-bin set-retest-bin skip
12
- stop assign-integer create-integer delete-integer create-site-var assign-site-var
13
- flag-clear flag-clear-all flag-false flag-false-all flag-true flag-true-all
14
- state-clear-all state-false-all state-true-all
15
- )
16
-
17
- ATTRS = %w(
18
- label enable job part env opcode parameter
19
- tname tnum bin_pass bin_fail sort_pass sort_fail result flag_pass
20
- flag_fail state group_specifier group_sense group_condition group_name
21
- device_sense device_condition device_name debug_assume debug_sites
22
- comment
23
- )
24
-
25
- ALIASES = {
26
- bin: :bin_fail,
27
- softbin: :sort_fail,
28
- soft_bin: :sort_fail,
29
- name: :tname,
30
- number: :tnum,
31
- test_number: :tnum,
32
- test_num: :tnum,
33
- type: :opcode
34
- }
35
-
36
- # Make readers for each low level attribute
37
- ATTRS.each do |attr|
38
- attr_reader attr
39
- end
40
-
41
- # And the aliases
42
- ALIASES.each do |_alias, attr|
43
- define_method("#{_alias}") do
44
- send(attr)
45
- end
46
- end
47
-
48
- # Returns the test instance called by the given line or nil
49
- def self.extract_test(line)
50
- l = new(line)
51
- if l.valid? && l.test?
52
- l.test_instance_name
53
- end
54
- end
55
-
56
- def initialize(line, options = {})
57
- @parser = options[:parser]
58
- @flow = options[:flow]
59
- @line = line
60
- parse
61
- if valid?
62
- ATTRS.each_with_index do |attr, i|
63
- instance_variable_set("@#{attr}", components[i + 1])
64
- end
65
- end
66
- end
67
-
68
- def inspect # :nodoc:
69
- "<FlowLine: #{type}, Parameter: #{parameter}>"
70
- end
71
-
72
- def description
73
- from_instance = test_instance ? test_instance.description : ''
74
- from_flow = parser.descriptions.flow_line(name: test_instance_name, flow: flow.file)
75
- if !from_instance.empty? && !from_flow.empty?
76
- [from_instance, "\n", from_flow].flatten
77
- elsif from_instance.empty?
78
- from_flow
79
- else
80
- from_instance
81
- end
82
- end
83
-
84
- def parse
85
- @components = @line.split("\t") unless @line.strip.empty?
86
- end
87
-
88
- def valid?
89
- components[6] && TYPES.include?(components[6])
90
- end
91
-
92
- def components
93
- @components ||= []
94
- end
95
-
96
- def test?
97
- %w(Test characterize).include? opcode
98
- end
99
-
100
- def executes_under_context?(context)
101
- enable_conditions_met?(context) &&
102
- job_conditions_met?(context) &&
103
- part_conditions_met?(context) &&
104
- env_conditions_met?(context)
105
- end
106
-
107
- def enable_conditions_met?(context)
108
- conditions_met?(enable, context[:enable])
109
- end
110
-
111
- def job_conditions_met?(context)
112
- conditions_met?(job, context[:job])
113
- end
114
-
115
- def part_conditions_met?(context)
116
- conditions_met?(part, context[:part])
117
- end
118
-
119
- def env_conditions_met?(context)
120
- conditions_met?(env, context[:env])
121
- end
122
-
123
- def conditions_met?(conditions, values)
124
- if conditions.empty?
125
- true
126
- else
127
- values = [values].flatten
128
- conditions = conditions.split(',').map(&:strip)
129
- not_conditions = conditions.select { |c| c =~ /^!/ }
130
- conditions = conditions - not_conditions
131
- # Make sure all -ve conditions are not met
132
- if not_conditions.all? do |c|
133
- c =~ /^!(.*)/
134
- c = Regexp.last_match[1]
135
- !values.include?(c)
136
- end
137
- # And then any +ve conditions
138
- if conditions.empty?
139
- true
140
- else
141
- values.any? { |v| conditions.include?(v) }
142
- end
143
- else
144
- false
145
- end
146
- end
147
- end
148
-
149
- def test_instance_name
150
- parameter
151
- end
152
- alias_method :instance_name, :test_instance_name
153
-
154
- def test_instance
155
- instances = parser.test_instances.where(name: parameter, exact: true)
156
- if instances.size > 1
157
- puts "Warning multiple instances of #{name} found, using the first one"
158
- end
159
- if instances.size == 0
160
- nil
161
- else
162
- instances.first
163
- end
164
- end
165
- alias_method :instance, :test_instance
166
-
167
- # Returns an array of patterns used by the given test, if there are none
168
- # an empty array is returned.
169
- # Optionally supply patterns to exclude if you want to ignore common subroutine
170
- # patterns for example.
171
- def patterns(options = {})
172
- i = test_instance
173
- if i
174
- pats = i.patterns
175
- if options[:ignore] && pats
176
- pats.reject { |p| [options[:ignore]].flatten.include?(p) }
177
- else
178
- []
179
- end
180
- else
181
- []
182
- end
183
- end
184
- alias_method :pattern, :patterns
185
-
186
- # Returns a string summarizing any conditions (enable words, jobs, etc.) that
187
- # gate the execution of this line
188
- def conditions
189
- c = []
190
- c << "Enable: #{enable}" unless enable.empty?
191
- c << "Job: #{job}" unless job.empty?
192
- c << "Part: #{part}" unless part.empty?
193
- c << "Env: #{env}" unless env.empty?
194
- c.join('; ')
195
- end
196
-
197
- def vdd
198
- i = test_instance
199
- if i
200
- i.vdd
201
- end
202
- end
203
- end
204
- end
205
- end
206
- end
207
- end
@@ -1,23 +0,0 @@
1
- module Origen
2
- module Tester
3
- class Ultraflex
4
- class Parser
5
- class Flows < Origen::Tester::Parser::SearchableArray
6
- attr_accessor :parser
7
-
8
- def initialize(options = {})
9
- @parser = options[:parser]
10
- end
11
-
12
- def import(file)
13
- self << Flow.new(file, parser: parser)
14
- end
15
-
16
- def inspect
17
- "<TestFlows: #{size}>"
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,94 +0,0 @@
1
- module Origen
2
- module Tester
3
- class Ultraflex
4
- class Parser
5
- class PatternSet
6
- class Pattern
7
- attr_accessor :parser
8
-
9
- ATTRS = %w(pattern_set file_name start_label stop_label comment)
10
-
11
- ALIASES = {
12
- pattern: :file_name,
13
- file: :file_name,
14
- name: :file_name
15
- }
16
-
17
- # Generate readers for all attributes and their aliases
18
- ATTRS.each do |attr|
19
- attr_reader attr.to_sym
20
- end
21
-
22
- ALIASES.each do |_alias, attr|
23
- define_method("#{_alias}") do
24
- send(attr)
25
- end
26
- end
27
-
28
- def initialize(line)
29
- @line = line
30
- parse
31
- if valid?
32
- ATTRS.each_with_index do |attr, i|
33
- instance_variable_set("@#{attr}", components[i + 1])
34
- end
35
- end
36
- end
37
-
38
- def parse
39
- @components = @line.split("\t") unless @line.strip.empty?
40
- end
41
-
42
- def valid?
43
- components[1] && !components[1].empty? && components[1] != 'Pattern Set' &&
44
- components[2] && !components[2].empty?
45
- end
46
-
47
- def components
48
- @components ||= []
49
- end
50
- end
51
-
52
- def initialize(line, options = {})
53
- @parser = options[:parser]
54
- p = add_pattern_line(line)
55
- @name = p.pattern_set if p.valid?
56
- end
57
-
58
- def inspect # :nodoc:
59
- "<PatternSet: #{name}>"
60
- end
61
-
62
- def name
63
- @name
64
- end
65
-
66
- def patterns
67
- @patterns ||= []
68
- end
69
-
70
- def self.extract_name(line)
71
- new(line).name
72
- end
73
-
74
- def add_pattern_line(line)
75
- p = Pattern.new(line)
76
- patterns << Pattern.new(line) if p.valid?
77
- p
78
- end
79
-
80
- def valid?
81
- patterns.all?(&:valid?)
82
- end
83
-
84
- # Returns an array containing all pattern names contained in this
85
- # pattern set
86
- def pattern_names
87
- # This removes the path and extensions
88
- patterns.map { |pat| pat.name.gsub(/.*[\\\/]/, '').gsub(/\..*/, '') }
89
- end
90
- end
91
- end
92
- end
93
- end
94
- end
@@ -1,33 +0,0 @@
1
- module Origen
2
- module Tester
3
- class Ultraflex
4
- class Parser
5
- class PatternSets < Origen::Tester::Parser::SearchableHash
6
- attr_accessor :parser
7
-
8
- def initialize(options = {})
9
- @parser = options[:parser]
10
- end
11
-
12
- def import(file)
13
- File.readlines(file).each do |line|
14
- name = PatternSet.extract_name(line)
15
- if name
16
- if self[name]
17
- self[name].add_pattern_line(line)
18
- else
19
- l = PatternSet.new(line, parser: parser)
20
- self[l.name] = l if l.valid?
21
- end
22
- end
23
- end
24
- end
25
-
26
- def inspect
27
- "<Patsets: #{size}>"
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end