taichi-ishitani/rggen

View on GitHub
lib/rggen/builtins/register/sub_block_model.rb

Summary

Maintainability
A
0 mins
Test Coverage
simple_item :register, :sub_block_model do
  ral do
    export :model_creation

    available? { register.type?(:external) }

    build do
      parameter :block_model, :model_type,
                data_type: :type,
                name:      type_name,
                default:   :rggen_ral_block
      variable  :block_model, :sub_block_model,
                data_type: type_name,
                name:      register.name,
                random:    true
    end

    def type_name
      register.name.upcase
    end

    def model_creation(code)
      code << subroutine_call('`rggen_ral_create_block_model', arguments) << nl
    end

    def arguments
      [register.name, string(register.name), offset_addess]
    end

    def offset_addess
      hex(register.start_address, register_block.local_address_width)
    end
  end
end