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
#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, #seach, #sext, #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!, #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::Value
Instance Method Details
#constant? ⇒ Boolean
Tell if the expression is constant.
3285 3286 3287 3288 |
# File 'lib/HDLRuby/hruby_high.rb', line 3285 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.
3291 3292 3293 |
# File 'lib/HDLRuby/hruby_high.rb', line 3291 def to_expr return self.to_value end |
#to_low ⇒ Object
Converts the value to HDLRuby::Low.
3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 |
# File 'lib/HDLRuby/hruby_high.rb', line 3296 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.
802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 |
# File 'lib/HDLRuby/hruby_rcsim.rb', line 802 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.
3278 3279 3280 3281 3282 |
# File 'lib/HDLRuby/hruby_high.rb', line 3278 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.
3273 3274 3275 |
# File 'lib/HDLRuby/hruby_high.rb', line 3273 def to_value? return true end |