Class: HDLRuby::High::SignalC
- Inherits:
-
Low::SignalC
- Object
- Low::SignalI
- Low::SignalC
- HDLRuby::High::SignalC
- Includes:
- HRef, SimSignal, WithFullname
- Defined in:
- lib/HDLRuby/hruby_high.rb,
lib/HDLRuby/hruby_rsim.rb,
lib/HDLRuby/hruby_rcsim.rb,
lib/HDLRuby/hruby_high_fullname.rb
Overview
Describes a constant signal.
Constant Summary collapse
Constants included from Low::Low2Symbol
Low::Low2Symbol::Low2SymbolPrefix, Low::Low2Symbol::Low2SymbolTable, Low::Low2Symbol::Symbol2LowTable
Instance Attribute Summary collapse
-
#rcsignalC ⇒ Object
readonly
Extends the SignalC class for hybrid Ruby-C simulation.
Attributes included from SimSignal
Attributes inherited from Low::SignalI
Attributes included from Low::Hparent
Instance Method Summary collapse
-
#coerce(obj) ⇒ Object
Coerce by converting signal to an expression.
-
#initialize(name, type, value) ⇒ SignalC
constructor
Creates a new constant signal named +name+ typed as +type+ and +value+.
-
#to_expr ⇒ Object
Converts to a new expression.
-
#to_low(name = self.name) ⇒ Object
Converts the system to HDLRuby::Low and set its +name+.
-
#to_rcsim(rcowner) ⇒ Object
Generate the C description of the signal comming from object whose C description is +rcowner+.
-
#to_ref ⇒ Object
Converts to a new reference.
Methods included from WithFullname
Methods included from SimSignal
#add_anyedge, #add_negedge, #add_posedge, #assign, #assign_at, #each_anyedge, #each_negedge, #each_posedge, #execute, #fullname, #get_vars_with_fullname, #get_vars_with_idstr, #init_sim, #show_hierarchy
Methods included from HRef
#each, included, #objects, #to_event
Methods included from Enumerable
Methods inherited from Low::SignalC
Methods inherited from Low::SignalI
#add_signal, #clone, #each_deep, #each_signal, #explicit_types!, #get_by_name, #get_signal, #immutable?, #replace_names!, #set_name!, #set_type!, #set_value!, #to_c, #to_c_alias, #to_c_signal, #to_ch, #to_hdr, #to_high, #to_verilog, #to_vhdl, #width
Methods included from Low::Low2Symbol
Methods included from Low::Hparent
#absolute_ref, #hierarchy, #no_parent!, #scope
Constructor Details
#initialize(name, type, value) ⇒ SignalC
Creates a new constant signal named +name+ typed as +type+ and +value+.
4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 |
# File 'lib/HDLRuby/hruby_high.rb', line 4100 def initialize(name,type,value) # Check the value is a constant. value = value.to_expr.match_type(type) unless value.constant? then raise AnyError,"Non-constant value assignment to constant." end # Initialize the type structure. super(name,type,value) unless name.empty? then # Named signal, set the hdl-like access to the signal. obj = self # For using the right self within the proc High.space_reg(name) { obj } end # Hierarchical type allows access to sub references, so generate # the corresponding methods. if type.struct? then type.each_name do |name| self.define_singleton_method(name) do RefObject.new(self.to_ref, SignalC.new(name,type.get_type(name), value[name])) end end end end |
Instance Attribute Details
#rcsignalC ⇒ Object (readonly)
Extends the SignalC class for hybrid Ruby-C simulation.
460 461 462 |
# File 'lib/HDLRuby/hruby_rcsim.rb', line 460 def rcsignalC @rcsignalC end |
Instance Method Details
#coerce(obj) ⇒ Object
Coerce by converting signal to an expression.
4139 4140 4141 |
# File 'lib/HDLRuby/hruby_high.rb', line 4139 def coerce(obj) return [obj,self.to_expr] end |
#to_expr ⇒ Object
Converts to a new expression.
4134 4135 4136 |
# File 'lib/HDLRuby/hruby_high.rb', line 4134 def to_expr return self.to_ref end |
#to_low(name = self.name) ⇒ Object
Converts the system to HDLRuby::Low and set its +name+.
4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 |
# File 'lib/HDLRuby/hruby_high.rb', line 4144 def to_low(name = self.name) # return HDLRuby::Low::SignalC.new(name,self.type.to_low, # self.value.to_low) signalCL = HDLRuby::Low::SignalC.new(name,self.type.to_low, self.value.to_low) # Recurse on the sub signals if any. self.each_signal do |sig| signalCL.add_signal(sig.to_low) end # # For debugging: set the source high object # signalCL.properties[:low2high] = self.hdr_id # self.properties[:high2low] = signalCL return signalCL end |
#to_rcsim(rcowner) ⇒ Object
Generate the C description of the signal comming from object whose C description is +rcowner+
464 465 466 467 468 469 470 471 472 473 474 475 476 |
# File 'lib/HDLRuby/hruby_rcsim.rb', line 464 def to_rcsim(rcowner) # Create the signal C object. @rcsignalC = RCSim.rcsim_make_signal(self.name.to_s, self.type.to_rcsim) # Set the owner. RCSim.rcsim_set_owner(@rcsignalC,rcowner) # Set the initial value. RCSim.rcsim_set_signal_value(@rcsignalC,self.value.to_rcsim) return @rcsignalC end |