ref/ruby/classes/RubyVpi.src/M000029.html in ruby-vpi-14.0.0 vs ref/ruby/classes/RubyVpi.src/M000029.html in ruby-vpi-15.0.0

- old
+ new

@@ -77,38 +77,38 @@ 94: <span class="ruby-comment cmt"># set up the VPI utility layer</span> 95: <span class="ruby-constant">Object</span>.<span class="ruby-identifier">class_eval</span> <span class="ruby-keyword kw">do</span> 96: <span class="ruby-identifier">include</span> <span class="ruby-constant">Vpi</span> 97: <span class="ruby-keyword kw">end</span> 98: - 99: <span class="ruby-comment cmt"># load the design under test</span> -100: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">design</span> = <span class="ruby-identifier">vpi_handle_by_name</span>(<span class="ruby-node">&quot;#{testName}_bench&quot;</span>, <span class="ruby-keyword kw">nil</span>) -101: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Verilog bench for test #{testName.inspect} is inaccessible.&quot;</span> -102: <span class="ruby-keyword kw">end</span> -103: -104: <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">const_set</span>(<span class="ruby-identifier">aDesignId</span>, <span class="ruby-identifier">design</span>) -105: <span class="ruby-identifier">require</span> <span class="ruby-node">&quot;#{testName}_design.rb&quot;</span> -106: -107: <span class="ruby-comment cmt"># load the design's prototype</span> -108: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">usePrototype</span> -109: <span class="ruby-identifier">require</span> <span class="ruby-node">&quot;#{testName}_proto.rb&quot;</span> + 99: <span class="ruby-constant">Vpi</span>.<span class="ruby-identifier">module_eval</span> <span class="ruby-keyword kw">do</span> +100: <span class="ruby-identifier">define_method</span> <span class="ruby-identifier">:simulate</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">aSimulationCycle</span> +101: <span class="ruby-keyword kw">end</span> +102: +103: <span class="ruby-comment cmt"># load the design under test</span> +104: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">design</span> = <span class="ruby-identifier">vpi_handle_by_name</span>(<span class="ruby-node">&quot;#{testName}_bench&quot;</span>, <span class="ruby-keyword kw">nil</span>) +105: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Verilog bench for test #{testName.inspect} is inaccessible.&quot;</span> +106: <span class="ruby-keyword kw">end</span> +107: +108: <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">const_set</span>(<span class="ruby-identifier">aDesignId</span>, <span class="ruby-identifier">design</span>) +109: <span class="ruby-identifier">require</span> <span class="ruby-node">&quot;#{testName}_design.rb&quot;</span> 110: -111: <span class="ruby-constant">Vpi</span>.<span class="ruby-identifier">module_eval</span> <span class="ruby-keyword kw">do</span> -112: <span class="ruby-identifier">define_method</span> <span class="ruby-identifier">:simulate</span> <span class="ruby-keyword kw">do</span> -113: <span class="ruby-identifier">design</span>.<span class="ruby-identifier">simulate!</span> -114: <span class="ruby-keyword kw">end</span> -115: -116: <span class="ruby-identifier">define_method</span> <span class="ruby-identifier">:vpi_register_cb</span> <span class="ruby-keyword kw">do</span> -117: <span class="ruby-identifier">warn</span> <span class="ruby-value str">&quot;vpi_register_cb: callbacks not allowed when prototyping&quot;</span> +111: <span class="ruby-comment cmt"># load the design's prototype</span> +112: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">usePrototype</span> +113: <span class="ruby-identifier">require</span> <span class="ruby-node">&quot;#{testName}_proto.rb&quot;</span> +114: +115: <span class="ruby-constant">Vpi</span>.<span class="ruby-identifier">module_eval</span> <span class="ruby-keyword kw">do</span> +116: <span class="ruby-identifier">define_method</span> <span class="ruby-identifier">:advance_time</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-operator">*</span><span class="ruby-identifier">args</span><span class="ruby-operator">|</span> +117: <span class="ruby-constant">Integer</span>(<span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span> <span class="ruby-operator">||</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">times</span> { <span class="ruby-identifier">design</span>.<span class="ruby-identifier">simulate!</span> } 118: <span class="ruby-keyword kw">end</span> -119: <span class="ruby-keyword kw">end</span> -120: -121: <span class="ruby-constant">Vpi</span><span class="ruby-operator">::</span><span class="ruby-identifier">vpi_printf</span> <span class="ruby-node">&quot;#{Config::PROJECT_NAME}: prototype is enabled for test #{testName.inspect}\n&quot;</span> -122: -123: <span class="ruby-keyword kw">else</span> -124: <span class="ruby-constant">Vpi</span>.<span class="ruby-identifier">module_eval</span> <span class="ruby-keyword kw">do</span> -125: <span class="ruby-identifier">define_method</span> <span class="ruby-identifier">:simulate</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">aSimulationCycle</span> -126: <span class="ruby-keyword kw">end</span> -127: +119: +120: <span class="ruby-identifier">define_method</span> <span class="ruby-identifier">:vpi_register_cb</span> <span class="ruby-keyword kw">do</span> +121: <span class="ruby-identifier">warn</span> <span class="ruby-value str">&quot;vpi_register_cb: callbacks are ignored when prototype is enabled&quot;</span> +122: <span class="ruby-keyword kw">end</span> +123: <span class="ruby-keyword kw">end</span> +124: +125: <span class="ruby-constant">Vpi</span><span class="ruby-operator">::</span><span class="ruby-identifier">vpi_printf</span> <span class="ruby-node">&quot;#{Config::PROJECT_NAME}: prototype is enabled for test #{testName.inspect}\n&quot;</span> +126: +127: <span class="ruby-keyword kw">else</span> 128: <span class="ruby-comment cmt"># XXX: this completes the handshake, by calling relay_verilog, with pthread_mutex_lock() in relay_main() in the C extension</span> 129: <span class="ruby-identifier">advance_time</span> 130: <span class="ruby-keyword kw">end</span> 131: 132: <span class="ruby-comment cmt"># load the design's specification</span> \ No newline at end of file