Method: HDLRuby::High::SystemI#choice
- Defined in:
- lib/HDLRuby/hruby_high.rb
#choice(configuration = {}) ⇒ Object
Adds alternative system +systemT+
2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 |
# File 'lib/HDLRuby/hruby_high.rb', line 2375 def choice(configuration = {}) # Process the argument. configuration.each do |k,v| k = k.to_sym unless v.is_a?(SystemT) then raise "Invalid class for a system type: #{v.class}" end # Create an eigen system. eigen = v.instantiate(HDLRuby.uniq_name(self.name)).systemT # Ensure its interface corresponds. my_signals = self.each_signal.to_a if (eigen.each_signal.with_index.find { |sig,i| !sig.eql?(my_signals[i]) }) then raise "Invalid system for configuration: #{systemT.name}." end # Add it. # At the HDLRuby::High level @choices = { self.name => self.systemT } unless @choices @choices[k] = eigen # At the HDLRuby::Low level self.add_systemT(eigen) end end |