Class: OrigenTesters::IGXLBasedTester::Base::Levelset
- Inherits:
-
Object
- Object
- OrigenTesters::IGXLBasedTester::Base::Levelset
- Includes:
- Generator
- Defined in:
- lib/origen_testers/igxl_based_tester/base/levelset.rb
Direct Known Subclasses
Constant Summary collapse
- OUTPUT_PREFIX =
'LV'
Instance Attribute Summary collapse
-
#ls_sheet_pins ⇒ Object
Returns the value of attribute ls_sheet_pins.
-
#name ⇒ Object
Levelset name.
-
#pins ⇒ Object
Returns the value of attribute pins.
-
#spec_sheet ⇒ Object
Returns the value of attribute spec_sheet.
Attributes included from Generator
Instance Method Summary collapse
-
#add(lsname, pin, level, options = {}) ⇒ Object
Adds a pin level to the given levelset.
-
#add_level(pin, level) ⇒ Object
Assigns a level object to the given pin for this levelset.
- #finalize(options = {}) ⇒ Object
- #format_uflex_level(data, options = {}) ⇒ Object
-
#get_pin_objects(grp) ⇒ Object
Populate an array of pins based on the pin or pingroup.
-
#gsub_levels!(level, old_val, new_val) ⇒ Object
Globally modify text within the level object.
-
#initialize(options = {}) ⇒ Levelset
constructor
OUTPUT_POSTFIX = 'LV'.
-
#levels_eql?(level1, level2) ⇒ Boolean
Equality check to compare full contents of 2 level objects.
- #platform ⇒ Object
Methods included from Generator
#close, #collection, #collection=, #compiler, #current_dir, #dont_diff=, execute_source, #file_extension, #file_pipeline, #filename, #filename=, #identity_map, #import, #inhibit_output, #on_close, original_reference_file, original_reference_file=, #output_file, #output_inhibited?, #reference_file, #render, #set_flow_description, #stats, #to_be_written?, #write_from_template, #write_to_file
Constructor Details
#initialize(options = {}) ⇒ Levelset
OUTPUT_POSTFIX = 'LV'
17 18 19 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 17 def initialize( = {}) # :nodoc: @pins = {} end |
Instance Attribute Details
#ls_sheet_pins ⇒ Object
Returns the value of attribute ls_sheet_pins.
9 10 11 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 9 def ls_sheet_pins @ls_sheet_pins end |
#name ⇒ Object
Levelset name
12 13 14 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 12 def name @name end |
#pins ⇒ Object
Returns the value of attribute pins.
7 8 9 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 7 def pins @pins end |
#spec_sheet ⇒ Object
Returns the value of attribute spec_sheet.
8 9 10 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 8 def spec_sheet @spec_sheet end |
Instance Method Details
#add(lsname, pin, level, options = {}) ⇒ Object
Adds a pin level to the given levelset
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 24 def add(lsname, pin, level, = {}) = { spec_sheet: 'default' # defines which specset sheet to put variables in (e.g. func, scan) when generating specset files }.merge() lsname = lsname.to_sym unless lsname.is_a? Symbol pin = pin.to_sym unless pin.is_a? Symbol add_level(pin, level) @name = lsname @spec_sheet = [:spec_sheet] @ls_sheet_pins = [:ls_sheet_pins] unless @ls_sheet_pins end |
#add_level(pin, level) ⇒ Object
Assigns a level object to the given pin for this levelset
38 39 40 41 42 43 44 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 38 def add_level(pin, level) if @pins.key?(pin) Origen.log.error "Pin #{pin} already exists in levelset" else @pins[pin] = level end end |
#finalize(options = {}) ⇒ Object
46 47 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 46 def finalize( = {}) end |
#format_uflex_level(data, options = {}) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 92 def format_uflex_level(data, = {}) = { }.merge() if data !~ /^\s*$/ data = data.gsub(/^/, '=') end data = data.gsub(/(\W)([a-zA-Z])/, '\1_\2') data = data.gsub(/(\*\s*)_([kmun]{0,1}[AVs]{1}\W)/, '\1\2') data = data.gsub(/(\*\s*)_([kmun]{0,1}[AVs]{1})$/, '\1\2') end |
#get_pin_objects(grp) ⇒ Object
Populate an array of pins based on the pin or pingroup
50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 50 def get_pin_objects(grp) pins = [] if Origen.top_level.pin(grp).is_a?(Origen::Pins::Pin) || Origen.top_level.pin(grp).is_a?(Origen::Pins::FunctionProxy) pins << Origen.top_level.pin(grp) elsif Origen.top_level.pin(grp).is_a?(Origen::Pins::PinCollection) Origen.top_level.pin(grp).each do |pin| pins << pin end else Origen.log.error "Could not find pin class: #{grp} #{Origen.top_level.pin(grp).class}" end pins end |
#gsub_levels!(level, old_val, new_val) ⇒ Object
Globally modify text within the level object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 71 def gsub_levels!(level, old_val, new_val) # determine if object is a power level (conatins :vmain) or a SE pin level (:vil) if level.respond_to?(:vmain) level.vmain = level.vmain.gsub(/#{Regexp.escape(old_val)}/, new_val) level.valt = level.valt.gsub(/#{Regexp.escape(old_val)}/, new_val) level.ifold = level.ifold.gsub(/#{Regexp.escape(old_val)}/, new_val) # level.delay = level.delay.gsub(/#{Regexp.escape(old_val)}/, new_val) elsif level.respond_to?(:vil) level.vil = level.vil.gsub(/#{Regexp.escape(old_val)}/, new_val) level.vih = level.vih.gsub(/#{Regexp.escape(old_val)}/, new_val) level.vol = level.vol.gsub(/#{Regexp.escape(old_val)}/, new_val) level.voh = level.voh.gsub(/#{Regexp.escape(old_val)}/, new_val) level.vcl = level.vcl.gsub(/#{Regexp.escape(old_val)}/, new_val) level.vch = level.vch.gsub(/#{Regexp.escape(old_val)}/, new_val) level.vt = level.vt.gsub(/#{Regexp.escape(old_val)}/, new_val) level.voutlotyp = level.voutlotyp.gsub(/#{Regexp.escape(old_val)}/, new_val) level.vouthityp = level.vouthityp.gsub(/#{Regexp.escape(old_val)}/, new_val) level.dmode = level.dmode.gsub(/#{Regexp.escape(old_val)}/, new_val) end end |
#levels_eql?(level1, level2) ⇒ Boolean
Equality check to compare full contents of 2 level objects
66 67 68 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 66 def levels_eql?(level1, level2) level1 == level2 end |
#platform ⇒ Object
104 105 106 |
# File 'lib/origen_testers/igxl_based_tester/base/levelset.rb', line 104 def platform Origen.interface.platform end |