Class: HDLRuby::High::Connection
- Inherits:
-
Low::Connection
- Object
- Base::Statement
- Low::Statement
- Low::Transmit
- Low::Connection
- HDLRuby::High::Connection
- Defined in:
- lib/HDLRuby/hruby_high.rb
Overview
Describes a connection.
Constant Summary collapse
Constants included from Low::Low2Symbol
Low::Low2Symbol::Low2SymbolPrefix, Low::Low2Symbol::Low2SymbolTable, Low::Low2Symbol::Symbol2LowTable
Instance Attribute Summary
Attributes inherited from Low::Transmit
Attributes included from Low::Hparent
Instance Method Summary collapse
-
#at(event) ⇒ Object
Creates a new behavior sensitive to +event+ including the connection converted to a transmission, and replace the former by the new behavior.
-
#hif(condition) ⇒ Object
Creates a new behavior with an if statement from +condition+ enclosing the connection converted to a transmission, and replace the former by the new behavior.
-
#to_expr ⇒ Object
Converts the connection to a comparison expression.
-
#to_low ⇒ Object
Converts the connection to HDLRuby::Low.
Methods inherited from Low::Connection
#array_connection, #break_concat_assigns, #eql?, #hash, #parent_system, #reassign_expressions!, #to_verilog, #top_block, #top_scope
Methods inherited from Low::Transmit
#boolean_in_assign2select!, #break_concat_assigns, #clone, #each_block, #each_block_deep, #each_node, #each_node_deep, #each_statement_deep, #eql?, #explicit_types!, #extract_selects!, #hash, #initialize, #map_nodes!, #replace_expressions!, #set_left!, #set_right!, #to_c, #to_high, #to_verilog, #to_vhdl, #use_name?
Methods inherited from Low::Statement
#add_blocks_code, #behavior, #block, #blocks2seq!, #break_types!, #clone, #delete_related!, #delete_unless!, #eql?, #explicit_types!, #extract_declares!, #hash, #mix?, #parent_system, #replace_expressions!, #replace_names!, #scope, #to_c, #to_high, #to_upper_space!, #to_vhdl, #top_block, #top_scope, #use_name?, #with_boolean!
Methods included from Low::Low2Symbol
Methods included from Low::Hparent
Constructor Details
This class inherits a constructor from HDLRuby::Low::Transmit
Instance Method Details
#at(event) ⇒ Object
Creates a new behavior sensitive to +event+ including the connection converted to a transmission, and replace the former by the new behavior.
3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 |
# File 'lib/HDLRuby/hruby_high.rb', line 3017 def at(event) # Creates the behavior. left, right = self.left, self.right # Detached left and right from their connection since they will # be put in a new behavior instead. left.parent = right.parent = nil # Create the new behavior replacing the connection. behavior = Behavior.new(:par,event) do left <= right end # Adds the behavior. High.top_user.add_behavior(behavior) # Remove the connection High.top_user.delete_connection!(self) end |
#hif(condition) ⇒ Object
Creates a new behavior with an if statement from +condition+ enclosing the connection converted to a transmission, and replace the former by the new behavior.
NOTE: the else part is defined through the helse method.
3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 |
# File 'lib/HDLRuby/hruby_high.rb', line 3038 def hif(condition) # Creates the behavior. left, right = self.left, self.right # Detached left and right from their connection since they will # be put in a new behavior instead. left.parent = right.parent = nil # Create the new behavior replacing the connection. behavior = Behavior.new(:par) do hif(condition) do left <= right end end # Adds the behavior. High.top_user.add_behavior(behavior) # Remove the connection High.top_user.delete_connection!(self) end |
#to_expr ⇒ Object
Converts the connection to a comparison expression.
NOTE: required because the <= operator is ambigous and by default produces a Transmit or a Connection.
3007 3008 3009 3010 3011 3012 |
# File 'lib/HDLRuby/hruby_high.rb', line 3007 def to_expr # Remove the connection from the system type. High.top_user.delete_connection(self) # Generate an expression. return Binary.new(:<=,self.left,self.right) end |
#to_low ⇒ Object
Converts the connection to HDLRuby::Low.
3057 3058 3059 3060 |
# File 'lib/HDLRuby/hruby_high.rb', line 3057 def to_low return HDLRuby::Low::Connection.new(self.left.to_low, self.right.to_low) end |