Sha256: 1a9eba86ebc86419431785d0c39613dc143fb0a0dd181179da780ac230da4837

Contents?: true

Size: 1.71 KB

Versions: 88

Compression:

Stored size: 1.71 KB

Contents

module Origen
  module Fuses
    # Currently just a simple data container most suited for import from Excel/CSV/XML
    # by stuffing all attributes into the options hash
    class FuseField
      attr_accessor :name, :size, :start_addr, :owner

      def initialize(name, start_addr, size, owner, options = {})
        options = {
          default_value: 0
        }.merge(options)
        @name, @start_addr, @size, @owner = name, start_addr, size, owner
        # Check if the start address is in Verilog format or includes the number base in it
        if @start_addr.is_a? String
          if @start_addr.is_verilog_number? || @start_addr.match(/^0[x,o,d,b]\S+/)
            @start_addr = @start_addr.to_dec
          end
        end
        unless @size.is_a?(Numeric) && @start_addr.size.is_a?(Numeric)
          Origen.log.error("Fuse fields must have numeric attributes for 'size' and 'start_addr'!")
          fail
        end
        # If the fuse field is owned by Top Level DUT then keep the start address as-is
        # If not, then add the fuse field start address to the base address of the IP
        unless owner.is_top_level?
          @start_addr += owner.base_address if owner.respond_to?(:base_address)
        end
        options.each do |o, val|
          instance_eval("def #{o};@#{o};end") # getter
          instance_eval("def #{o}=(val);@#{o}=val;end") # setter
          ivar_name = "@#{o}".to_sym
          instance_variable_set(ivar_name, options[o])
        end

        def reprogrammeable?
          self.respond_to?(:reprogrammeable) ? reprogrammeable : true
        end

        def customer_visible?
          self.respond_to?(:customer_visible) ? customer_visible : false
        end
      end
    end
  end
end

Version data entries

88 entries across 88 versions & 1 rubygems

Version Path
origen-0.60.7 lib/origen/fuses/fuse_field.rb
origen-0.60.6 lib/origen/fuses/fuse_field.rb
origen-0.60.5 lib/origen/fuses/fuse_field.rb
origen-0.60.4 lib/origen/fuses/fuse_field.rb
origen-0.60.3 lib/origen/fuses/fuse_field.rb
origen-0.60.2 lib/origen/fuses/fuse_field.rb
origen-0.60.1 lib/origen/fuses/fuse_field.rb
origen-0.60.0 lib/origen/fuses/fuse_field.rb
origen-0.59.8 lib/origen/fuses/fuse_field.rb
origen-0.59.7 lib/origen/fuses/fuse_field.rb
origen-0.59.6 lib/origen/fuses/fuse_field.rb
origen-0.59.5 lib/origen/fuses/fuse_field.rb
origen-0.59.4 lib/origen/fuses/fuse_field.rb
origen-0.59.3 lib/origen/fuses/fuse_field.rb
origen-0.59.2 lib/origen/fuses/fuse_field.rb
origen-0.59.1 lib/origen/fuses/fuse_field.rb
origen-0.59.0 lib/origen/fuses/fuse_field.rb
origen-0.58.0 lib/origen/fuses/fuse_field.rb
origen-0.57.2 lib/origen/fuses/fuse_field.rb
origen-0.57.1 lib/origen/fuses/fuse_field.rb