Class: OrigenTesters::IGXLBasedTester::Base::DCSpecsets
- Inherits:
-
Object
- Object
- OrigenTesters::IGXLBasedTester::Base::DCSpecsets
- Includes:
- Generator
- Defined in:
- lib/origen_testers/igxl_based_tester/base/dc_specsets.rb
Direct Known Subclasses
Constant Summary collapse
- OUTPUT_PREFIX =
'SpecsDC'
Instance Attribute Summary collapse
-
#dc_specs ⇒ Object
Returns the value of attribute dc_specs.
-
#dc_specsets ⇒ Object
Returns the value of attribute dc_specsets.
Instance Method Summary collapse
-
#add(spec, attrs = {}) ⇒ Object
Assigns a DC spec value object to the given variable for this specset The attrs hash is expected to defined as follows: attrs = { specset: :specset_name, # if not defined, specset = :default # Spec selectors that contain both the scope and value of the spec nom: { typ: 1.8 }, # typ is an example of the UFlex scope, nom is the spec selector min: { min: 1.7 }, # Users can defined any number of selectors in this fashion max: { max: 1.9 } }.
-
#format_uflex_dc_spec(data, options = {}) ⇒ Object
Prepare the spec information for file output.
-
#initialize ⇒ DCSpecsets
constructor
OUTPUT_POSTFIX = ‘SpecsDC’.
Methods included from Generator
#close, #collection, #collection=, #compiler, #current_dir, #dont_diff=, execute_source, #file_extension, #file_pipeline, #filename, #filename=, #finalize, #identity_map, #import, #inhibit_output, #name, #on_close, original_reference_file, original_reference_file=, #output_file, #output_inhibited?, #platform, #reference_file, #render, #set_flow_description, #stats, #to_be_written?, #write_from_template, #write_to_file
Constructor Details
#initialize ⇒ DCSpecsets
OUTPUT_POSTFIX = ‘SpecsDC’
13 14 15 16 17 18 19 |
# File 'lib/origen_testers/igxl_based_tester/base/dc_specsets.rb', line 13 def initialize # :nodoc: ## Hash Autovivification l = ->(h, k) { h[k] = Hash.new(&l) } @dc_specs = [] @dc_specsets = Hash.new(&l) end |
Instance Attribute Details
#dc_specs ⇒ Object
Returns the value of attribute dc_specs.
7 8 9 |
# File 'lib/origen_testers/igxl_based_tester/base/dc_specsets.rb', line 7 def dc_specs @dc_specs end |
#dc_specsets ⇒ Object
Returns the value of attribute dc_specsets.
8 9 10 |
# File 'lib/origen_testers/igxl_based_tester/base/dc_specsets.rb', line 8 def dc_specsets @dc_specsets end |
Instance Method Details
#add(spec, attrs = {}) ⇒ Object
Assigns a DC spec value object to the given variable for this specset
The attrs hash is expected to defined as follows:
attrs = {
specset: :specset_name, # if not defined, specset = :default
# Spec selectors that contain both the scope and value of the spec
nom: { typ: 1.8 }, # typ is an example of the UFlex scope, nom is the spec selector
min: { min: 1.7 }, # Users can defined any number of selectors in this fashion
max: { max: 1.9 }
}
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/origen_testers/igxl_based_tester/base/dc_specsets.rb', line 30 def add(spec, attrs = {}) attrs = { specset: :default }.merge(attrs) specset = attrs.delete(:specset) @dc_specs << spec unless @dc_specs.include?(spec) attrs.each do |selector, value| @dc_specsets[specset][spec][selector] = value end end |
#format_uflex_dc_spec(data, options = {}) ⇒ Object
Prepare the spec information for file output
45 46 47 48 49 50 51 52 53 54 55 56 57 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 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/origen_testers/igxl_based_tester/base/dc_specsets.rb', line 45 def format_uflex_dc_spec(data, = {}) = { spec: nil }.update() case [:spec] when /(voh|vol|vt|vcl|vch|vdd)/i spec_type = 'volt' when /(ioh|iol)/i spec_type = 'curr' else spec_type = nil end case data when NilClass data_new = 0 when Fixnum, Float case when data == 0 data_new = data.to_s when data.abs < 1e-6 data_new = (data * 1_000_000_000).round(4).to_s + '*nV' if spec_type == 'volt' data_new = (data * 1_000_000_000).round(4).to_s + '*nA' if spec_type == 'curr' data_new = data.to_s if spec_type.nil? when data.abs < 1e-3 data_new = (data * 1_000_000).round(4).to_s + '*uV' if spec_type == 'volt' data_new = (data * 1_000_000).round(4).to_s + '*uA' if spec_type == 'curr' data_new = data.to_s if spec_type.nil? when data.abs < 1 data_new = data.to_s + '*V' if spec_type == 'volt' data_new = (data * 1_000).round(4).to_s + '*mA' if spec_type == 'curr' data_new = data.to_s if spec_type.nil? else data_new = data.to_s + '*V' if spec_type == 'volt' data_new = data.to_s + '*A' if spec_type == 'curr' data_new = data.to_s if spec_type.nil? end data_new = data_new.gsub(/^/, '=') when String data_new = data.gsub(/^/, '=').gsub(/(\W)([a-zA-Z])/, '\1_\2') # Remove underscores from unit designations data_new.gsub!(/(\W)_(nV|uV|mV|V|nA|uA|mA|A)(\W)/i, '\1\2\3') data_new.gsub!(/(\W)_(nV|uV|mV|V|nA|uA|mA|A)$/i, '\1\2') else Origen.log.error "Unknown class type (#{data.class}) for spec value: #{data}" fail end data_new end |