Class: Origen::SubBlock
- Includes:
- Model
- Defined in:
- lib/origen/sub_blocks.rb
Overview
A simple class that will be instantiated by default when a sub block is defined without another class name specified
This class includes support for registers, pins, etc.
Instance Method Summary collapse
-
#method_missing(method, *args, &block) ⇒ Object
Used to create attribute accessors on the fly.
Methods included from Model
#==, #_initialized?, #_resolve_controller_class, #add_configuration, #add_mode, #clock!, #clock_apply, #clock_prepare, #configuration, #configuration=, #configurations, #current_configuration, #current_mode, #current_mode=, #delete_all_modes, #delete_all_specs_and_notes, #find_specs, #has_mode?, #inspect, #ip_name, #is_a_model_and_controller?, #is_an_origen_model?, #is_top_level?, #log, #model, #modes, #read_memory, #respond_to?, #respond_to_directly?, #to_json, #with_configuration, #with_each_mode, #with_mode, #wrap_in_controller, #write_memory
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
Used to create attribute accessors on the fly.
On first call of a missing method a method is generated to avoid the missing lookup next time, this should be faster for repeated lookups of the same method, e.g. reg
446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 |
# File 'lib/origen/sub_blocks.rb', line 446 def method_missing(method, *args, &block) super rescue NoMethodError return regs(method) if self.has_reg?(method) return ports(method) if self.has_port?(method) if method.to_s =~ /=$/ define_singleton_method(method) do |val| instance_variable_set("@#{method.to_s.sub('=', '')}", val) end else define_singleton_method(method) do instance_variable_get("@#{method}") end end send(method, *args, &block) end |