Class: HDLRuby::High::RefRange
- Inherits:
-
Low::RefRange
- Object
- Low::Expression
- Low::Ref
- Low::RefRange
- HDLRuby::High::RefRange
- Includes:
- HRef
- Defined in:
- lib/HDLRuby/hruby_high.rb,
lib/HDLRuby/hruby_rsim.rb,
lib/HDLRuby/hruby_rcsim.rb
Overview
Describes a range reference.
Constant Summary
Constants included from Low::Low2Symbol
Low::Low2Symbol::Low2SymbolPrefix, Low::Low2Symbol::Low2SymbolTable, Low::Low2Symbol::Symbol2LowTable
Instance Attribute Summary
Attributes inherited from Low::RefRange
Attributes inherited from Low::Expression
Attributes included from Low::Hparent
Instance Method Summary collapse
-
#assign(mode, value) ⇒ Object
Assigns +value+ the the reference.
-
#assign_at(mode, value, index) ⇒ Object
Assigns +value+ at +index+ (integer or range).
-
#execute(mode) ⇒ Object
Execute the expression.
-
#init_sim(systemT) ⇒ Object
Initialize the simulation for system +systemT+.
-
#to_low ⇒ Object
Converts the range reference to HDLRuby::Low.
-
#to_rcsim ⇒ Object
Generate the C description of the reference range.
-
#to_ref ⇒ Object
Converts to a new reference.
Methods included from HRef
#each, included, #objects, #to_event
Methods included from Enumerable
Methods inherited from Low::RefRange
#boolean_in_assign2select, #casts_without_expression!, #clone, #each_deep, #each_node, #each_node_deep, #eql?, #explicit_types, #from_systemI?, #hash, #immutable?, #initialize, #map_nodes!, #path_each, #replace_expressions!, #resolve, #set_range!, #set_ref!, #to_c, #to_c_signal, #to_hdr, #to_high, #to_verilog, #to_vhdl, #use_name?
Methods inherited from Low::Ref
#each_node, #each_node_deep, #eql?, #explicit_types, #hash, #map_nodes!, #path_each, #resolve, #to_c, #to_hdr, #to_vhdl
Methods inherited from Low::Expression
#boolean?, #break_types!, #clone, #each_node, #each_node_deep, #each_ref_deep, #eql?, #explicit_types, #extract_selects_to!, #hash, #immutable?, #initialize, #leftvalue?, #map_nodes!, #replace_expressions!, #replace_names!, #rightvalue?, #set_type!, #signal2subs!, #statement, #to_c, #to_c_expr, #to_hdr, #to_high, #to_vhdl, #use_name?
Methods included from Low::Low2Symbol
Methods included from Low::Hparent
#hierarchy, #no_parent!, #scope
Constructor Details
This class inherits a constructor from HDLRuby::Low::RefRange
Instance Method Details
#assign(mode, value) ⇒ Object
Assigns +value+ the the reference.
1317 1318 1319 1320 1321 1322 1323 |
# File 'lib/HDLRuby/hruby_rsim.rb', line 1317 def assign(mode,value) # Compute the index range. rng = (self.range.first.execute(mode).to_i).. (self.range.last.execute(mode).to_i) # Assigns. self.ref.assign_at(mode,value,rng) end |
#assign_at(mode, value, index) ⇒ Object
Assigns +value+ at +index+ (integer or range).
1326 1327 1328 1329 1330 1331 1332 1333 |
# File 'lib/HDLRuby/hruby_rsim.rb', line 1326 def assign_at(mode,value,index) # Get the refered value. refv = self.execute(mode) # Assign to it. refv = refv.assign_at(mode,value,index) # Update the refered value. self.assign(mode,refv) end |
#execute(mode) ⇒ Object
Execute the expression.
1307 1308 1309 1310 1311 1312 1313 1314 |
# File 'lib/HDLRuby/hruby_rsim.rb', line 1307 def execute(mode) # Recurse on the children. tmpr = self.ref.execute(mode) rng = (self.range.first.execute(mode)).. (self.range.last.execute(mode)) # puts "tmpr=#{tmpr} rng=#{rng} tmpr[rng]=#{tmpr[rng]}" return tmpr[rng] end |
#init_sim(systemT) ⇒ Object
Initialize the simulation for system +systemT+.
1302 1303 1304 |
# File 'lib/HDLRuby/hruby_rsim.rb', line 1302 def init_sim(systemT) self.ref.init_sim(systemT) end |
#to_low ⇒ Object
Converts the range reference to HDLRuby::Low.
3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 |
# File 'lib/HDLRuby/hruby_high.rb', line 3519 def to_low # return HDLRuby::Low::RefRange.new(self.type.to_low, # self.ref.to_low,self.range.to_low) refRangeL = HDLRuby::Low::RefRange.new(self.type.to_low, self.ref.to_low,self.range.to_low) # # For debugging: set the source high object # refRangeL.properties[:low2high] = self.hdr_id # self.properties[:high2low] = refRangeL return refRangeL end |
#to_rcsim ⇒ Object
Generate the C description of the reference range.
991 992 993 994 995 996 997 |
# File 'lib/HDLRuby/hruby_rcsim.rb', line 991 def to_rcsim # Create the reference range C object. return RCSim.rcsim_make_refRange(self.type.to_rcsim, self.range.first.to_rcsim, self.range.last.to_rcsim, self.ref.to_rcsim) end |