origen_testers 0.4.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.
- checksums.yaml +7 -0
- data/config/application.rb +140 -0
- data/config/commands.rb +73 -0
- data/config/development.rb +12 -0
- data/config/environment.rb +1 -0
- data/config/shared_commands.rb +47 -0
- data/config/users.rb +18 -0
- data/config/version.rb +8 -0
- data/lib/commands/build.rb +69 -0
- data/lib/origen_testers.rb +23 -0
- data/lib/origen_testers/api.rb +258 -0
- data/lib/origen_testers/basic_test_setups.rb +105 -0
- data/lib/origen_testers/callback_handlers.rb +58 -0
- data/lib/origen_testers/generator.rb +279 -0
- data/lib/origen_testers/generator/flow_control_api.rb +611 -0
- data/lib/origen_testers/generator/identity_map.rb +23 -0
- data/lib/origen_testers/generator/placeholder.rb +11 -0
- data/lib/origen_testers/generator/test_numberer.rb +23 -0
- data/lib/origen_testers/igxl_based_tester.rb +12 -0
- data/lib/origen_testers/igxl_based_tester/base.rb +641 -0
- data/lib/origen_testers/igxl_based_tester/base/flow.rb +171 -0
- data/lib/origen_testers/igxl_based_tester/base/flow_line.rb +322 -0
- data/lib/origen_testers/igxl_based_tester/base/generator.rb +217 -0
- data/lib/origen_testers/igxl_based_tester/base/patgroup.rb +109 -0
- data/lib/origen_testers/igxl_based_tester/base/patgroups.rb +38 -0
- data/lib/origen_testers/igxl_based_tester/base/patset.rb +68 -0
- data/lib/origen_testers/igxl_based_tester/base/patset_pattern.rb +56 -0
- data/lib/origen_testers/igxl_based_tester/base/patsets.rb +38 -0
- data/lib/origen_testers/igxl_based_tester/base/patsubr.rb +68 -0
- data/lib/origen_testers/igxl_based_tester/base/patsubr_pattern.rb +56 -0
- data/lib/origen_testers/igxl_based_tester/base/patsubrs.rb +38 -0
- data/lib/origen_testers/igxl_based_tester/base/test_instance.rb +326 -0
- data/lib/origen_testers/igxl_based_tester/base/test_instance_group.rb +58 -0
- data/lib/origen_testers/igxl_based_tester/base/test_instances.rb +179 -0
- data/lib/origen_testers/igxl_based_tester/files.rb +43 -0
- data/lib/origen_testers/igxl_based_tester/j750.rb +248 -0
- data/lib/origen_testers/igxl_based_tester/j750/flow.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/j750/flow_line.rb +19 -0
- data/lib/origen_testers/igxl_based_tester/j750/generator.rb +19 -0
- data/lib/origen_testers/igxl_based_tester/j750/patgroup.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750/patgroups.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/j750/patset.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750/patset_pattern.rb +18 -0
- data/lib/origen_testers/igxl_based_tester/j750/patsets.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/j750/patsubr.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750/patsubr_pattern.rb +18 -0
- data/lib/origen_testers/igxl_based_tester/j750/patsubrs.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/j750/templates/flow.txt.erb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750/templates/instances.txt.erb +16 -0
- data/lib/origen_testers/igxl_based_tester/j750/templates/patgroups.txt.erb +8 -0
- data/lib/origen_testers/igxl_based_tester/j750/templates/patsets.txt.erb +10 -0
- data/lib/origen_testers/igxl_based_tester/j750/templates/patsubrs.txt.erb +10 -0
- data/lib/origen_testers/igxl_based_tester/j750/test_instance.rb +547 -0
- data/lib/origen_testers/igxl_based_tester/j750/test_instance_group.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750/test_instances.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt.rb +34 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/flow.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/flow_line.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/generator.rb +19 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroup.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroups.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patset.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patset_pattern.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsets.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr_pattern.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubrs.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance.rb +515 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance_group.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instances.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/parser.rb +102 -0
- data/lib/origen_testers/igxl_based_tester/parser/ac_spec.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/parser/ac_specs.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/dc_spec.rb +33 -0
- data/lib/origen_testers/igxl_based_tester/parser/dc_specs.rb +48 -0
- data/lib/origen_testers/igxl_based_tester/parser/descriptions.rb +339 -0
- data/lib/origen_testers/igxl_based_tester/parser/flow.rb +109 -0
- data/lib/origen_testers/igxl_based_tester/parser/flow_line.rb +203 -0
- data/lib/origen_testers/igxl_based_tester/parser/flows.rb +21 -0
- data/lib/origen_testers/igxl_based_tester/parser/pattern_set.rb +92 -0
- data/lib/origen_testers/igxl_based_tester/parser/pattern_sets.rb +31 -0
- data/lib/origen_testers/igxl_based_tester/parser/test_instance.rb +341 -0
- data/lib/origen_testers/igxl_based_tester/parser/test_instances.rb +24 -0
- data/lib/origen_testers/igxl_based_tester/parser/timeset.rb +13 -0
- data/lib/origen_testers/igxl_based_tester/parser/timesets.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex.rb +477 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/flow.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/flow_line.rb +19 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/generator.rb +19 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patgroup.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patgroups.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patset.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patset_pattern.rb +18 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsets.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr_pattern.rb +18 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsubrs.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/flow.txt.erb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/instances.txt.erb +16 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patgroups.txt.erb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patsets.txt.erb +10 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patsubrs.txt.erb +10 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb +270 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance_group.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instances.rb +10 -0
- data/lib/origen_testers/interface.rb +183 -0
- data/lib/origen_testers/parser.rb +22 -0
- data/lib/origen_testers/parser/description_lookup.rb +62 -0
- data/lib/origen_testers/parser/searchable_array.rb +30 -0
- data/lib/origen_testers/parser/searchable_hash.rb +30 -0
- data/lib/origen_testers/pattern_compilers.rb +116 -0
- data/lib/origen_testers/pattern_compilers/assembler.rb +88 -0
- data/lib/origen_testers/pattern_compilers/job.rb +96 -0
- data/lib/origen_testers/pattern_compilers/ultraflex_pattern_compiler.rb +599 -0
- data/lib/origen_testers/program_generators.rb +55 -0
- data/lib/origen_testers/smartest_based_tester.rb +8 -0
- data/lib/origen_testers/smartest_based_tester/base.rb +411 -0
- data/lib/origen_testers/smartest_based_tester/base/flow.rb +188 -0
- data/lib/origen_testers/smartest_based_tester/base/flow_node.rb +476 -0
- data/lib/origen_testers/smartest_based_tester/base/generator.rb +123 -0
- data/lib/origen_testers/smartest_based_tester/base/pattern_compiler.rb +23 -0
- data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +47 -0
- data/lib/origen_testers/smartest_based_tester/base/test_method.rb +143 -0
- data/lib/origen_testers/smartest_based_tester/base/test_methods.rb +73 -0
- data/lib/origen_testers/smartest_based_tester/base/test_methods/ac_tml.rb +33 -0
- data/lib/origen_testers/smartest_based_tester/base/test_methods/base_tml.rb +38 -0
- data/lib/origen_testers/smartest_based_tester/base/test_methods/custom_tml.rb +19 -0
- data/lib/origen_testers/smartest_based_tester/base/test_methods/dc_tml.rb +147 -0
- data/lib/origen_testers/smartest_based_tester/base/test_methods/limits.rb +43 -0
- data/lib/origen_testers/smartest_based_tester/base/test_suite.rb +166 -0
- data/lib/origen_testers/smartest_based_tester/base/test_suites.rb +58 -0
- data/lib/origen_testers/smartest_based_tester/v93k.rb +8 -0
- data/lib/origen_testers/smartest_based_tester/v93k/builder.rb +89 -0
- data/lib/origen_testers/smartest_based_tester/v93k/builder/flow.rb +169 -0
- data/lib/origen_testers/smartest_based_tester/v93k/builder/pattern_master.rb +54 -0
- data/lib/origen_testers/smartest_based_tester/v93k/flow.rb +10 -0
- data/lib/origen_testers/smartest_based_tester/v93k/flow_node.rb +9 -0
- data/lib/origen_testers/smartest_based_tester/v93k/generator.rb +19 -0
- data/lib/origen_testers/smartest_based_tester/v93k/pattern_compiler.rb +10 -0
- data/lib/origen_testers/smartest_based_tester/v93k/pattern_master.rb +10 -0
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.aiv.erb +17 -0
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.flow.erb +201 -0
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.pmfl.erb +13 -0
- data/lib/origen_testers/smartest_based_tester/v93k/test_method.rb +9 -0
- data/lib/origen_testers/smartest_based_tester/v93k/test_methods.rb +9 -0
- data/lib/origen_testers/smartest_based_tester/v93k/test_suite.rb +9 -0
- data/lib/origen_testers/smartest_based_tester/v93k/test_suites.rb +9 -0
- data/lib/origen_testers/test/basic_interface.rb +17 -0
- data/lib/origen_testers/test/block.rb +21 -0
- data/lib/origen_testers/test/dut.rb +184 -0
- data/lib/origen_testers/test/dut2.rb +76 -0
- data/lib/origen_testers/test/j750_base_interface.rb +119 -0
- data/lib/origen_testers/test/j750_hpt_interface.rb +8 -0
- data/lib/origen_testers/test/j750_interface.rb +8 -0
- data/lib/origen_testers/test/nvm.rb +94 -0
- data/lib/origen_testers/test/ultraflex_interface.rb +110 -0
- data/lib/origen_testers/test/v93k_interface.rb +115 -0
- data/lib/origen_testers/timing.rb +362 -0
- data/lib/origen_testers/vector.rb +203 -0
- data/lib/origen_testers/vector_based_tester.rb +42 -0
- data/lib/origen_testers/vector_generator.rb +623 -0
- data/lib/origen_testers/vector_pipeline.rb +288 -0
- data/pattern/dc_instr.rb +7 -0
- data/pattern/delay.rb +7 -0
- data/pattern/mem_test.rb +8 -0
- data/pattern/multi_vector.rb +117 -0
- data/pattern/multi_vector_plus1.rb +125 -0
- data/pattern/nvm/j750/add_late_pins.rb +3 -0
- data/pattern/nvm/j750/iterator_postfix_test_x_bx.rb +8 -0
- data/pattern/nvm/j750/iterator_test_x_bx.rb +8 -0
- data/pattern/nvm/j750/j750_halt.rb +159 -0
- data/pattern/nvm/j750/j750_workout.rb +202 -0
- data/pattern/nvm/j750/timing.rb +73 -0
- data/pattern/nvm/v93k/v93k_workout.rb +136 -0
- data/pattern/read_write_reg.rb +58 -0
- data/pattern/reset.rb +4 -0
- data/pattern/subroutines.rb +38 -0
- data/program/_additional_erase.rb +7 -0
- data/program/_efa_resources.rb +7 -0
- data/program/_erase.rb +25 -0
- data/program/_erase_vfy.rb +5 -0
- data/program/_iv_resources.rb +10 -0
- data/program/basic_interface.rb +5 -0
- data/program/components/_prb2_main.rb +6 -0
- data/program/flow_control.rb +164 -0
- data/program/prb1.rb +226 -0
- data/program/prb1_resources.rb +28 -0
- data/program/prb2.rb +40 -0
- data/program/test.rb +20 -0
- data/templates/example.txt.erb +53 -0
- data/templates/j750/_vt_flow.txt.erb +8 -0
- data/templates/j750/_vt_instances.txt.erb +4 -0
- data/templates/j750/program_sheet.txt.erb +9 -0
- data/templates/manifest/v93k.yaml.erb +22 -0
- data/templates/web/index.md.erb +51 -0
- data/templates/web/layouts/_basic.html.erb +15 -0
- data/templates/web/partials/_navbar.html.erb +22 -0
- data/templates/web/release_notes.md.erb +5 -0
- metadata +332 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module IGXLBasedTester
|
|
3
|
+
class Base
|
|
4
|
+
module Generator
|
|
5
|
+
extend ActiveSupport::Concern
|
|
6
|
+
|
|
7
|
+
autoload :Placeholder, 'origen_testers/generator/placeholder'
|
|
8
|
+
|
|
9
|
+
included do
|
|
10
|
+
include Interface # adds the interface helpers/Origen hook-up
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# This is just to give all interfaces an initialize that takes
|
|
14
|
+
# one argument. The super is important for cases where this module
|
|
15
|
+
# is included late via Testers::ProgramGenerators
|
|
16
|
+
def initialize(options = {})
|
|
17
|
+
super
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# @api private
|
|
21
|
+
def at_flow_start
|
|
22
|
+
@@test_instances_filename = nil
|
|
23
|
+
@@patsets_filename = nil
|
|
24
|
+
@@patgroups_filename = nil
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @api private
|
|
28
|
+
def at_run_start
|
|
29
|
+
flow.at_run_start
|
|
30
|
+
@@test_instance_sheets = nil
|
|
31
|
+
@@patset_sheets = nil
|
|
32
|
+
@@flow_sheets = nil
|
|
33
|
+
@@patgroup_sheets = nil
|
|
34
|
+
end
|
|
35
|
+
alias_method :reset_globals, :at_run_start
|
|
36
|
+
|
|
37
|
+
# Convenience method to allow the current name for the test instance,
|
|
38
|
+
# patsets and patgroups sheets to be set to the same value.
|
|
39
|
+
#
|
|
40
|
+
# # my j750 interface
|
|
41
|
+
#
|
|
42
|
+
# resources_filename = "common"
|
|
43
|
+
#
|
|
44
|
+
# # The above is equivalent to:
|
|
45
|
+
#
|
|
46
|
+
# test_instances_filename = "common"
|
|
47
|
+
# patsets_filename = "common"
|
|
48
|
+
# patgroups_filename = "common"
|
|
49
|
+
def resources_filename=(name)
|
|
50
|
+
self.test_instances_filename = name
|
|
51
|
+
self.patsets_filename = name
|
|
52
|
+
self.patgroups_filename = name
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Set the name of the current test instances sheet. This does not change
|
|
56
|
+
# the name of the current sheet, but rather sets the name of the sheet that
|
|
57
|
+
# will be generated the next time you access test_instances.
|
|
58
|
+
def test_instances_filename=(name)
|
|
59
|
+
@test_instances_filename = name
|
|
60
|
+
@@test_instances_filename = name
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Set the name of the current pattern sets sheet. This does not change
|
|
64
|
+
# the name of the current sheet, but rather sets the name of the sheet that
|
|
65
|
+
# will be generated the next time you access patsets.
|
|
66
|
+
def patsets_filename=(name)
|
|
67
|
+
@patsets_filename = name
|
|
68
|
+
@@patsets_filename = name
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Set the name of the current pattern groups sheet. This does not change
|
|
72
|
+
# the name of the current sheet, but rather sets the name of the sheet that
|
|
73
|
+
# will be generated the next time you access patgroups.
|
|
74
|
+
def patgroups_filename=(name)
|
|
75
|
+
@patgroups_filename = name
|
|
76
|
+
@@patgroups_filename = name
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Returns the name of the current test instances sheet
|
|
80
|
+
def test_instances_filename
|
|
81
|
+
@@test_instances_filename ||= @test_instances_filename || 'global'
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Returns the name of the current pat sets sheet
|
|
85
|
+
def patsets_filename
|
|
86
|
+
@@patsets_filename ||= @patsets_filename || 'global'
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Returns the name of the current pat groups sheet
|
|
90
|
+
def patgroups_filename
|
|
91
|
+
@@patgroups_filename ||= @patgroups_filename || 'global'
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Returns a hash containing all test instance sheets
|
|
95
|
+
def test_instance_sheets
|
|
96
|
+
@@test_instance_sheets ||= {}
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Returns a hash containing all pat set sheets
|
|
100
|
+
def patset_sheets
|
|
101
|
+
@@patset_sheets ||= {}
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Returns a hash containing all flow sheets
|
|
105
|
+
def flow_sheets
|
|
106
|
+
@@flow_sheets ||= {}
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# Returns a hash containing all pat group sheets
|
|
110
|
+
def patgroup_sheets
|
|
111
|
+
@@patgroup_sheets ||= {}
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Returns an array containing all sheet generators where a sheet generator is a flow,
|
|
115
|
+
# test instance, patset or pat group sheet.
|
|
116
|
+
# All Origen program generators must implement this method
|
|
117
|
+
def sheet_generators # :nodoc:
|
|
118
|
+
g = []
|
|
119
|
+
[flow_sheets, test_instance_sheets, patset_sheets, patgroup_sheets].each do |sheets|
|
|
120
|
+
sheets.each do |name, sheet|
|
|
121
|
+
g << sheet
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
g
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Returns an array containing all flow sheet generators.
|
|
128
|
+
# All Origen program generators must implement this method
|
|
129
|
+
def flow_generators
|
|
130
|
+
g = []
|
|
131
|
+
flow_sheets.each do |name, sheet|
|
|
132
|
+
g << sheet
|
|
133
|
+
end
|
|
134
|
+
g
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# Returns the current test instances sheet (as defined by the current value of
|
|
138
|
+
# test_instances_filename).
|
|
139
|
+
#
|
|
140
|
+
# Pass in a filename argument to have a specific sheet returned instead.
|
|
141
|
+
#
|
|
142
|
+
# If the sheet does not exist yet it will be created.
|
|
143
|
+
def test_instances(filename = test_instances_filename)
|
|
144
|
+
f = filename.to_sym
|
|
145
|
+
return test_instance_sheets[f] if test_instance_sheets[f]
|
|
146
|
+
t = platform::TestInstances.new
|
|
147
|
+
t.filename = f
|
|
148
|
+
test_instance_sheets[f] = t
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Returns the current pattern sets sheet (as defined by the current value of
|
|
152
|
+
# patsets_filename).
|
|
153
|
+
#
|
|
154
|
+
# Pass in a filename argument to have a specific sheet returned instead.
|
|
155
|
+
#
|
|
156
|
+
# If the sheet does not exist yet it will be created.
|
|
157
|
+
def patsets(filename = patsets_filename)
|
|
158
|
+
f = filename.to_sym
|
|
159
|
+
return patset_sheets[f] if patset_sheets[f]
|
|
160
|
+
p = platform::Patsets.new
|
|
161
|
+
p.filename = f
|
|
162
|
+
patset_sheets[f] = p
|
|
163
|
+
end
|
|
164
|
+
alias_method :pat_sets, :patsets
|
|
165
|
+
alias_method :pattern_sets, :patsets
|
|
166
|
+
|
|
167
|
+
# Returns the current pattern subroutine sheet (as defined by the current value of
|
|
168
|
+
# patsubrs_filename).
|
|
169
|
+
#
|
|
170
|
+
# Pass in a filename argument to have a specific sheet returned instead.
|
|
171
|
+
#
|
|
172
|
+
# If the sheet does not exist yet it will be created.
|
|
173
|
+
def patsubrs(filename = patsubrs_filename)
|
|
174
|
+
f = filename.to_sym
|
|
175
|
+
return patsubr_sheets[f] if patsubr_sheets[f]
|
|
176
|
+
p = platform::Patsubrs.new
|
|
177
|
+
p.filename = f
|
|
178
|
+
patsubr_sheets[f] = p
|
|
179
|
+
end
|
|
180
|
+
alias_method :pat_subrs, :patsubrs
|
|
181
|
+
alias_method :pattern_subrs, :patsubrs
|
|
182
|
+
|
|
183
|
+
# Returns the current flow sheet (as defined by the name of the current top
|
|
184
|
+
# level flow source file).
|
|
185
|
+
#
|
|
186
|
+
# Pass in a filename argument to have a specific sheet returned instead.
|
|
187
|
+
#
|
|
188
|
+
# If the sheet does not exist yet it will be created.
|
|
189
|
+
def flow(filename = Origen.file_handler.current_file.basename('.rb').to_s)
|
|
190
|
+
# DH here need to reset the flow!!
|
|
191
|
+
f = filename.to_sym
|
|
192
|
+
return flow_sheets[f] if flow_sheets[f] # will return flow if already existing
|
|
193
|
+
p = platform::Flow.new
|
|
194
|
+
p.inhibit_output if Origen.interface.resources_mode?
|
|
195
|
+
p.filename = f
|
|
196
|
+
flow_sheets[f] = p
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# Returns the current pattern groups sheet (as defined by the current value of
|
|
200
|
+
# patgroups_filename).
|
|
201
|
+
#
|
|
202
|
+
# Pass in a filename argument to have a specific sheet returned instead.
|
|
203
|
+
#
|
|
204
|
+
# If the sheet does not exist yet it will be created.
|
|
205
|
+
def patgroups(filename = patgroups_filename)
|
|
206
|
+
f = filename.to_sym
|
|
207
|
+
return patgroup_sheets[f] if patgroup_sheets[f]
|
|
208
|
+
p = platform::Patgroups.new
|
|
209
|
+
p.filename = f
|
|
210
|
+
patgroup_sheets[f] = p
|
|
211
|
+
end
|
|
212
|
+
alias_method :pat_groups, :patgroups
|
|
213
|
+
alias_method :pattern_groups, :patgroups
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
end
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module IGXLBasedTester
|
|
3
|
+
class Base
|
|
4
|
+
class Patgroup
|
|
5
|
+
attr_accessor :index
|
|
6
|
+
|
|
7
|
+
class Pattern
|
|
8
|
+
ATTRS = %w(group_name pattern_file comment)
|
|
9
|
+
|
|
10
|
+
ALIASES = {
|
|
11
|
+
pattern: :pattern_file
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
DEFAULTS = {
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
# Generate accessors for all attributes and their aliases
|
|
18
|
+
ATTRS.each do |attr|
|
|
19
|
+
attr_accessor attr.to_sym
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
ALIASES.each do |_alias, val|
|
|
23
|
+
define_method("#{_alias}=") do |v|
|
|
24
|
+
send("#{val}=", v)
|
|
25
|
+
end
|
|
26
|
+
define_method("#{_alias}") do
|
|
27
|
+
send(val)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def initialize(patgroup, attrs = {})
|
|
32
|
+
# Set the defaults
|
|
33
|
+
DEFAULTS.each do |k, v|
|
|
34
|
+
send("#{k}=", v)
|
|
35
|
+
end
|
|
36
|
+
# Then the values that have been supplied
|
|
37
|
+
self.group_name = patgroup
|
|
38
|
+
attrs.each do |k, v|
|
|
39
|
+
send("#{k}=", v)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def to_s
|
|
44
|
+
l = "\t"
|
|
45
|
+
ATTRS.each do |attr|
|
|
46
|
+
l += "#{send(attr)}\t"
|
|
47
|
+
end
|
|
48
|
+
"#{l}"
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Specify multiple patterns by passing an array of attributes
|
|
53
|
+
# as the 2nd argument:
|
|
54
|
+
#
|
|
55
|
+
# Patset.new("mrd1_pgrp", :pattern => "nvm_mrd1.PAT")
|
|
56
|
+
#
|
|
57
|
+
# Patset.new("mrd1_pgrp", [{:pattern => "nvm_mrd1.PAT"},
|
|
58
|
+
# {:pattern => "nvm_global_subs.PAT},
|
|
59
|
+
# ])
|
|
60
|
+
def initialize(name, attrs = {})
|
|
61
|
+
attrs = [attrs] unless attrs.is_a? Array
|
|
62
|
+
attrs.each do |pattrs|
|
|
63
|
+
if pattrs[:pattern]
|
|
64
|
+
pat = Pathname.new(pattrs[:pattern].gsub('\\', '/')).basename('.*').to_s
|
|
65
|
+
Origen.interface.referenced_patterns << pat
|
|
66
|
+
end
|
|
67
|
+
lines << Pattern.new(name, pattrs)
|
|
68
|
+
end
|
|
69
|
+
self.name = name
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def ==(other_patgroup)
|
|
73
|
+
self.class == other_patgroup.class &&
|
|
74
|
+
name.to_s == other_patgroup.name.to_s &&
|
|
75
|
+
sorted_pattern_files == other_patgroup.sorted_pattern_files
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def name
|
|
79
|
+
@name
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def name=(n)
|
|
83
|
+
@name = n
|
|
84
|
+
lines.each { |l| l.group_name = n }
|
|
85
|
+
n
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Returns all lines in the pattern set
|
|
89
|
+
def lines
|
|
90
|
+
@lines ||= []
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Returns all pattern files in the pattern set in alphabetical order
|
|
94
|
+
def sorted_pattern_files
|
|
95
|
+
@lines.map(&:file_name).sort
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Returns the fully formatted pattern group for insertion into a patgroups sheet
|
|
99
|
+
def to_s
|
|
100
|
+
l = ''
|
|
101
|
+
lines.each do |line|
|
|
102
|
+
l += "#{line}\r\n"
|
|
103
|
+
end
|
|
104
|
+
l.chomp
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module IGXLBasedTester
|
|
3
|
+
class Base
|
|
4
|
+
class Patgroups
|
|
5
|
+
include ::OrigenTesters::Generator
|
|
6
|
+
|
|
7
|
+
OUTPUT_POSTFIX = 'patgroups'
|
|
8
|
+
|
|
9
|
+
def add(name, options = {})
|
|
10
|
+
p = platform::Patgroup.new(name, options)
|
|
11
|
+
collection << p
|
|
12
|
+
p
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def finalize(options = {})
|
|
16
|
+
uniq!
|
|
17
|
+
sort!
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Present the patgroups in the final sheet in alphabetical order
|
|
21
|
+
def sort!
|
|
22
|
+
collection.sort_by!(&:name)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Removes all duplicate patgroups
|
|
26
|
+
def uniq!
|
|
27
|
+
uniques = []
|
|
28
|
+
collection.each do |patgroup|
|
|
29
|
+
unless uniques.any? { |p| p == patgroup }
|
|
30
|
+
uniques << patgroup
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
self.collection = uniques
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module IGXLBasedTester
|
|
3
|
+
class Base
|
|
4
|
+
class Patset
|
|
5
|
+
attr_accessor :index
|
|
6
|
+
|
|
7
|
+
# Specify multiple patterns by passing an array of attributes
|
|
8
|
+
# as the 2nd argument:
|
|
9
|
+
#
|
|
10
|
+
# Patset.new("mrd1_pset", :pattern => "nvm_mrd1.PAT")
|
|
11
|
+
#
|
|
12
|
+
# Patset.new("mrd1_pset", [{:pattern => "nvm_mrd1.PAT"},
|
|
13
|
+
# {:pattern => "nvm_global_subs.PAT, :start_label => "subr"}
|
|
14
|
+
# ])
|
|
15
|
+
def initialize(name, attrs = {})
|
|
16
|
+
attrs = [attrs] unless attrs.is_a? Array
|
|
17
|
+
attrs.each do |pattrs|
|
|
18
|
+
if pattrs[:pattern]
|
|
19
|
+
pat = Pathname.new(pattrs[:pattern].gsub('\\', '/')).basename('.*').to_s
|
|
20
|
+
Origen.interface.referenced_patterns << pat
|
|
21
|
+
end
|
|
22
|
+
lines << platform::PatsetPattern.new(name, pattrs)
|
|
23
|
+
end
|
|
24
|
+
self.name = name
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def ==(other_patset)
|
|
28
|
+
self.class == other_patset.class &&
|
|
29
|
+
name.to_s == other_patset.name.to_s &&
|
|
30
|
+
sorted_pattern_files == other_patset.sorted_pattern_files
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def name
|
|
34
|
+
@name
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def name=(n)
|
|
38
|
+
@name = n
|
|
39
|
+
lines.each { |l| l.pattern_set = n }
|
|
40
|
+
n
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Returns all lines in the pattern set
|
|
44
|
+
def lines
|
|
45
|
+
@lines ||= []
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Returns all pattern files in the pattern set in alphabetical order
|
|
49
|
+
def sorted_pattern_files
|
|
50
|
+
@lines.map(&:file_name).sort
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Returns the fully formatted pattern set for insertion into a patset sheet
|
|
54
|
+
def to_s
|
|
55
|
+
l = ''
|
|
56
|
+
lines.each do |line|
|
|
57
|
+
l += "#{line}\r\n"
|
|
58
|
+
end
|
|
59
|
+
l.chomp
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def platform
|
|
63
|
+
Origen.interface.platform
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module IGXLBasedTester
|
|
3
|
+
class Base
|
|
4
|
+
class PatsetPattern
|
|
5
|
+
ALIASES = {
|
|
6
|
+
pattern: :file_name
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
def self.define
|
|
10
|
+
# Generate accessors for all attributes and their aliases
|
|
11
|
+
self::PATSET_ATTRS.each do |attr|
|
|
12
|
+
writer = "#{attr}=".to_sym
|
|
13
|
+
reader = attr.to_sym
|
|
14
|
+
attr_reader attr.to_sym unless method_defined? reader
|
|
15
|
+
attr_writer attr.to_sym unless method_defined? writer
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
ALIASES.each do |_alias, val|
|
|
19
|
+
writer = "#{_alias}=".to_sym
|
|
20
|
+
reader = _alias.to_sym
|
|
21
|
+
unless method_defined? writer
|
|
22
|
+
define_method("#{_alias}=") do |v|
|
|
23
|
+
send("#{val}=", v)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
unless method_defined? reader
|
|
27
|
+
define_method("#{_alias}") do
|
|
28
|
+
send(val)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def initialize(patset, attrs = {})
|
|
35
|
+
# Set the defaults
|
|
36
|
+
self.class::PATSET_DEFAULTS.each do |k, v|
|
|
37
|
+
send("#{k}=", v)
|
|
38
|
+
end
|
|
39
|
+
# Then the values that have been supplied
|
|
40
|
+
self.pattern_set = patset
|
|
41
|
+
attrs.each do |k, v|
|
|
42
|
+
send("#{k}=", v)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def to_s
|
|
47
|
+
l = "\t"
|
|
48
|
+
self.class::PATSET_ATTRS.each do |attr|
|
|
49
|
+
l += "#{send(attr)}\t"
|
|
50
|
+
end
|
|
51
|
+
"#{l}"
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|