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
#_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?, #initialized?, #inspect, #ip_name, #is_an_origen_model?, #log, #model, #modes, #read_memory, #respond_to?, #respond_to_directly?, #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
321 322 323 324 325 326 327 328 329 330 331 332 333 334 |
# File 'lib/origen/sub_blocks.rb', line 321 def method_missing(method, *args, &block) 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 |