Class: HDLRuby::High::Value
- Inherits:
-
Low::Value
- Object
- 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
Describes a value.
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.
-
#init_sim(systemT) ⇒ Object
Initialize the simulation for system +systemT+.
-
#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
#as, #cast, #coerce, concat, #eql?, #impedence?, #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, #sdownto, #seach, #sext, #stimes, #supto, #to_bit, #to_signed, #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!, #fix_scope_refnames!, #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
#absolute_ref, #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.
3369 3370 3371 3372 |
# File 'lib/HDLRuby/hruby_high.rb', line 3369 def constant? # A value is a constant. return true end |
#execute(mode) ⇒ Object
Executes the expression.
1047 1048 1049 |
# File 'lib/HDLRuby/hruby_rsim.rb', line 1047 def execute(mode) return self end |
#init_sim(systemT) ⇒ Object
Initialize the simulation for system +systemT+.
1040 1041 1042 |
# File 'lib/HDLRuby/hruby_rsim.rb', line 1040 def init_sim(systemT) # Nothing to do. end |
#to_expr ⇒ Object
Converts to a new expression.
3375 3376 3377 |
# File 'lib/HDLRuby/hruby_high.rb', line 3375 def to_expr return self.to_value end |
#to_low ⇒ Object
Converts the value to HDLRuby::Low.
3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 |
# File 'lib/HDLRuby/hruby_high.rb', line 3380 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.
886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 |
# File 'lib/HDLRuby/hruby_rcsim.rb', line 886 def to_rcsim # Create the value C object. if self.content.is_a?(::Integer) then # puts "self.type.width=#{self.type.width} and content=#{self.content}" ; $stdout.flush if self.type.width <= 64 then if self.content.bit_length <= 63 then return RCSim.rcsim_make_value_numeric(self.type.to_rcsim, self.content) else return RCSim.rcsim_make_value_numeric(self.type.to_rcsim, self.content & 0xFFFFFFFFFFFF) end else if self.content < 0 then str = (2**self.type.width + self.content).to_s(2) str = "1" * (self.type.width-str.length) + str else str = self.content.to_s(2) str = "0" * (self.type.width-str.length) + str end # puts "now str=#{str} (#{str.length})" ; $stdout.flush 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.
3362 3363 3364 3365 3366 |
# File 'lib/HDLRuby/hruby_high.rb', line 3362 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.
3357 3358 3359 |
# File 'lib/HDLRuby/hruby_high.rb', line 3357 def to_value? return true end |