Class: HDLRuby::High::Value
- Inherits:
-
Low::Value
- Object
- Base::Expression
- Low::Expression
- Low::Value
- HDLRuby::High::Value
- Includes:
- HExpression, Vprocess
- Defined in:
- lib/HDLRuby/hruby_high.rb,
lib/HDLRuby/hruby_rsim.rb,
lib/HDLRuby/hruby_rcsim.rb
Overview
Extends the Value class for hybrid Ruby-C simulation.
Constant Summary
Constants included from Low::Low2Symbol
Low::Low2Symbol::Low2SymbolPrefix, Low::Low2Symbol::Low2SymbolTable, Low::Low2Symbol::Symbol2LowTable
Instance Attribute Summary
Attributes included from HExpression
Attributes inherited from Low::Value
Attributes inherited from Low::Expression
Attributes included from Low::Hparent
Instance Method Summary collapse
-
#constant? ⇒ Boolean
Tell if the expression is constant.
-
#execute(mode) ⇒ Object
Executes the expression.
-
#to_expr ⇒ Object
Converts to a new expression.
-
#to_low ⇒ Object
Converts the value to HDLRuby::Low.
-
#to_rcsim ⇒ Object
Generate the C description of the value.
-
#to_value ⇒ Object
Converts to a new value.
-
#to_value? ⇒ Boolean
Tell if the expression can be converted to a value.
Methods included from Vprocess
#cast, #coerce, concat, #to_f, #to_i, #to_vstr, #trunc, #zero?
Methods included from HExpression
#[], #as, #coerce, #inout, #input, #ljust, #lr, #ls, #match_type, #mux, orig_operator, #orig_operator, #output, #rjust, #rr, #rs, #sext, #to_bit, #to_unsigned, #zext
Methods inherited from Low::Value
#<=>, #boolean_in_assign2select, #casts_without_expression!, #clone, #each_deep, #eql?, #even?, #explicit_types, #hash, #immutable?, #initialize, #odd?, #set_content!, #to_arith, #to_c, #to_c_expr, #to_c_make, #to_ch, #to_getrange, #to_hdr, #to_high, #to_i, #to_verilog, #to_vhdl, #width
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!, #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::Value
Instance Method Details
#constant? ⇒ Boolean
Tell if the expression is constant.
3243 3244 3245 3246 |
# File 'lib/HDLRuby/hruby_high.rb', line 3243 def constant? # A value is a constant. return true end |
#execute(mode) ⇒ Object
Executes the expression.
826 827 828 |
# File 'lib/HDLRuby/hruby_rsim.rb', line 826 def execute(mode) return self end |
#to_expr ⇒ Object
Converts to a new expression.
3249 3250 3251 |
# File 'lib/HDLRuby/hruby_high.rb', line 3249 def to_expr return self.to_value end |
#to_low ⇒ Object
Converts the value to HDLRuby::Low.
3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 |
# File 'lib/HDLRuby/hruby_high.rb', line 3254 def to_low # Clone the content if possible content = self.content.frozen? ? self.content : self.content.clone # Create and return the resulting low-level value # return HDLRuby::Low::Value.new(self.type.to_low,self.content) valueL = HDLRuby::Low::Value.new(self.type.to_low,self.content) # # For debugging: set the source high object # valueL.properties[:low2high] = self.hdr_id # self.properties[:high2low] = valueL return valueL end |
#to_rcsim ⇒ Object
Generate the C description of the value.
747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 |
# File 'lib/HDLRuby/hruby_rcsim.rb', line 747 def to_rcsim # Create the value C object. if self.content.is_a?(::Integer) then if self.content.bit_length <= 63 then return RCSim.rcsim_make_value_numeric(self.type.to_rcsim, self.content) else str = self.content.to_s(2) if str[-1] == "-" then str[-1] = "1" elsif str[-1] == "1" then str = "0" + str end return RCSim.rcsim_make_value_bitstring(self.type.to_rcsim, str.reverse) end else return RCSim.rcsim_make_value_bitstring(self.type.to_rcsim, self.content.to_s.reverse) end end |
#to_value ⇒ Object
Converts to a new value.
3236 3237 3238 3239 3240 |
# File 'lib/HDLRuby/hruby_high.rb', line 3236 def to_value # # Already a value. # self return Value.new(self.type,self.content) end |
#to_value? ⇒ Boolean
Tell if the expression can be converted to a value.
3231 3232 3233 |
# File 'lib/HDLRuby/hruby_high.rb', line 3231 def to_value? return true end |