<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://simhard.com/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://simhard.com/wiki/index.php?action=history&amp;feed=atom&amp;title=UVM%2FUVM_Cookbook%2FDriver%2FBidirectional</id>
		<title>UVM/UVM Cookbook/Driver/Bidirectional - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://simhard.com/wiki/index.php?action=history&amp;feed=atom&amp;title=UVM%2FUVM_Cookbook%2FDriver%2FBidirectional"/>
		<link rel="alternate" type="text/html" href="http://simhard.com/wiki/index.php?title=UVM/UVM_Cookbook/Driver/Bidirectional&amp;action=history"/>
		<updated>2026-06-17T07:50:16Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.21.3</generator>

	<entry>
		<id>http://simhard.com/wiki/index.php?title=UVM/UVM_Cookbook/Driver/Bidirectional&amp;diff=4455&amp;oldid=prev</id>
		<title>ANA в 17:48, 25 июня 2014</title>
		<link rel="alternate" type="text/html" href="http://simhard.com/wiki/index.php?title=UVM/UVM_Cookbook/Driver/Bidirectional&amp;diff=4455&amp;oldid=prev"/>
				<updated>2014-06-25T17:48:52Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 17:48, 25 июня 2014&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; border=&amp;quot;0&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; border=&amp;quot;0&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;div dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt;class bidirect_bus_driver extends uvm_driver #(bus_seq_item);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;div dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;big&amp;gt;&amp;lt;source lang=&amp;quot;verilog&amp;quot;&lt;/ins&gt;&amp;gt;class bidirect_bus_driver extends uvm_driver #(bus_seq_item);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;`uvm_component_utils(bidirect_bus_driver)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;`uvm_component_utils(bidirect_bus_driver)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 58:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 58:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;endtask: run_phase&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;endtask: run_phase&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;endclass: bidirect_bus_driver&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;endclass: bidirect_bus_driver&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;source&amp;gt;&amp;lt;/big&lt;/ins&gt;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 67:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 67:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; border=&amp;quot;0&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; border=&amp;quot;0&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;div dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt;class bus_seq extends uvm_sequence #(bus_seq_item);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;div dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;big&amp;gt;&amp;lt;source lang=&amp;quot;verilog&amp;quot;&lt;/ins&gt;&amp;gt;class bus_seq extends uvm_sequence #(bus_seq_item);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;`uvm_object_utils(bus_seq)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;`uvm_object_utils(bus_seq)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 93:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 93:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;endtask: body&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;endtask: body&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;endclass: bus_seq&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;endclass: bus_seq&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;source&amp;gt;&amp;lt;/big&lt;/ins&gt;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 112:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 112:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; border=&amp;quot;0&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; border=&amp;quot;0&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;div dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt;// Alternative version of the driver run method&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;div dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;big&amp;gt;&amp;lt;source lang=&amp;quot;verilog&amp;quot;&lt;/ins&gt;&amp;gt;// Alternative version of the driver run method&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;task run_phase( uvm_phase phase );&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;task run_phase( uvm_phase phase );&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; bus_seq_item req;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; bus_seq_item req;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 166:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 166:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; uvm_report_info(&amp;quot;seq_body&amp;quot;, rsp.convert2string());&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; uvm_report_info(&amp;quot;seq_body&amp;quot;, rsp.convert2string());&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;endtask: body&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;endtask: body&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;source&amp;gt;&amp;lt;/big&lt;/ins&gt;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ANA</name></author>	</entry>

	<entry>
		<id>http://simhard.com/wiki/index.php?title=UVM/UVM_Cookbook/Driver/Bidirectional&amp;diff=4449&amp;oldid=prev</id>
		<title>ANA: Новая страница: «{{UVM TOC}}  &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;div&gt;http://uvm-stage.mentor.com//w/images/thumb/3/34/Bidirectional_sequence_driver_use_model.gif/500px-Bidirectional_sequence_driv…»</title>
		<link rel="alternate" type="text/html" href="http://simhard.com/wiki/index.php?title=UVM/UVM_Cookbook/Driver/Bidirectional&amp;diff=4449&amp;oldid=prev"/>
				<updated>2014-06-25T10:08:06Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «{{UVM TOC}}  &amp;lt;div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div&amp;gt;&amp;lt;div&amp;gt;http://uvm-stage.mentor.com//w/images/thumb/3/34/Bidirectional_sequence_driver_use_model.gif/500px-Bidirectional_sequence_driv…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{UVM TOC}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div&amp;gt;&amp;lt;div&amp;gt;http://uvm-stage.mentor.com//w/images/thumb/3/34/Bidirectional_sequence_driver_use_model.gif/500px-Bidirectional_sequence_driver_use_model.gif [[Файл:500px-Bidirectional_sequence_driver_use_model.gif|500px|Bidirectional sequence driver use model.gif]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One of the most common form of sequence driver use models is the scenario where the sequencer sends request sequence_items to the driver which executes the request phase of the pin level protocol, and then the driver responds to the response phase of the pin-level transaction returning the response back to the sequence. In this use model the flow of data is bidirectional and a new request phase cannot be started until the response phase has completed. An example of this kind of protocol would be a simple peripheral bus such as the AMBA APB.&lt;br /&gt;
&lt;br /&gt;
To illustrate how this use model would be implemented, a DUT containing a GPIO and a bus interface will be used. The bus protocol used is shown in the timing diagram. The request phase of the transaction is initiated by the valid signal becoming active, with the address and direction signal (RNW) indicating which type of bus transfer is taking place. The response phase of the transaction is completed when the ready signal becomes active.&lt;br /&gt;
&lt;br /&gt;
The driver that manages this protocol will collect a request sequence_item from the sequencer and then drive the bus request phase. The driver waits until the interface ready line becomes active and then returns the response information, which would consist of the error bit and the read data if a read has just taken place.&lt;br /&gt;
&lt;br /&gt;
The recommended way of implementing the driver is to use get_next_item() followed by item_done() as per the following example:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;div dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;pre&amp;gt;class bidirect_bus_driver extends uvm_driver #(bus_seq_item);&lt;br /&gt;
  &lt;br /&gt;
`uvm_component_utils(bidirect_bus_driver)&lt;br /&gt;
  &lt;br /&gt;
bus_seq_item req;&lt;br /&gt;
  &lt;br /&gt;
virtual bus_if BUS;&lt;br /&gt;
  &lt;br /&gt;
function new(string name = &amp;quot;bidirect_bus_driver&amp;quot;, uvm_component parent = null);&lt;br /&gt;
 super.new(name, parent);&lt;br /&gt;
endfunction&lt;br /&gt;
  &lt;br /&gt;
task run_phase( uvm_phase phase );&lt;br /&gt;
  &lt;br /&gt;
 // Default conditions:&lt;br /&gt;
 BUS.valid &amp;lt;= 0;&lt;br /&gt;
 BUS.rnw &amp;lt;= 1;&lt;br /&gt;
 // Wait for reset to end&lt;br /&gt;
 @(posedge BUS.resetn);&lt;br /&gt;
 forever begin&lt;br /&gt;
  seq_item_port.get_next_item(req); // Start processing req item&lt;br /&gt;
  repeat(req.delay) begin&lt;br /&gt;
   @(posedge BUS.clk);&lt;br /&gt;
  end&lt;br /&gt;
  BUS.valid &amp;lt;= 1;&lt;br /&gt;
  BUS.addr &amp;lt;= req.addr;&lt;br /&gt;
  BUS.rnw &amp;lt;= req.read_not_write;&lt;br /&gt;
  if(req.read_not_write == 0) begin&lt;br /&gt;
   BUS.write_data &amp;lt;= req.write_data;&lt;br /&gt;
  end&lt;br /&gt;
  while(BUS.ready != 1) begin&lt;br /&gt;
   @(posedge BUS.clk);&lt;br /&gt;
  end&lt;br /&gt;
  // At end of the pin level bus transaction&lt;br /&gt;
  // Copy response data into the req fields:&lt;br /&gt;
  if(req.read_not_write == 1) begin&lt;br /&gt;
   req.read_data = BUS.read_data; // If read - copy returned read data&lt;br /&gt;
  end&lt;br /&gt;
  req.error = BUS.error; // Copy bus error status&lt;br /&gt;
  BUS.valid &amp;lt;= 0; // End the pin level bus transaction&lt;br /&gt;
  seq_item_port.item_done(); // End of req item&lt;br /&gt;
 end&lt;br /&gt;
endtask: run_phase&lt;br /&gt;
  &lt;br /&gt;
endclass: bidirect_bus_driver&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;div&amp;gt; &amp;lt;div&amp;gt; &amp;lt;/div&amp;gt;http://uvm-stage.mentor.com//w/images/thumb/9/9c/Coupled_bus_timing.gif/500px-Coupled_bus_timing.gif [[Файл:500px-Coupled_bus_timing.gif|500px]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the driver is sending back the response to the sequence by updating the fields within the req sequence_item before making the item_done() call. At the sequence end of the transaction, the sequence is blocked in the finish_item() call until the item_done() occurs, when it is unblocked, its req handle is still pointing to the req object which has had its reponse fields updated by the driver. This means that the sequence can reference the response contents of the req sequence_item.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;div dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;pre&amp;gt;class bus_seq extends uvm_sequence #(bus_seq_item);&lt;br /&gt;
  &lt;br /&gt;
`uvm_object_utils(bus_seq)&lt;br /&gt;
  &lt;br /&gt;
bus_seq_item req;&lt;br /&gt;
  &lt;br /&gt;
rand int limit = 40; // Controls the number of iterations&lt;br /&gt;
  &lt;br /&gt;
function new(string name = &amp;quot;bus_seq&amp;quot;);&lt;br /&gt;
 super.new(name);&lt;br /&gt;
endfunction&lt;br /&gt;
  &lt;br /&gt;
task body();&lt;br /&gt;
 req = bus_seq_item::type_id::create(&amp;quot;req&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
 repeat(limit) begin&lt;br /&gt;
  start_item(req);&lt;br /&gt;
  // The address is constrained to be within the address of the GPIO function &lt;br /&gt;
  // within the DUT, The result will be a request item for a read or a write&lt;br /&gt;
  assert(req.randomize() with {addr inside {[32'h0100_0000:32'h0100_001C]};});&lt;br /&gt;
  finish_item(req);&lt;br /&gt;
  // The req handle points to the object that the driver has updated with response data&lt;br /&gt;
  uvm_report_info(&amp;quot;seq_body&amp;quot;, req.convert2string());&lt;br /&gt;
 end&lt;br /&gt;
endtask: body&lt;br /&gt;
  &lt;br /&gt;
endclass: bus_seq&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:Download-tarball.png|40px|Download-tarball.png]]&lt;br /&gt;
| Download a complete working example:&amp;lt;br /&amp;gt;(tarball: [https://verificationacademy.com/cookbook/download?file=/w/images/8/8a/Use_models_bidir_item_done_uvm.tgz use_models_bidir_item_done_uvm.tgz])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==   Alternative Implementation Option  ==&lt;br /&gt;
&lt;br /&gt;
'''''Although this option is discussed below, the recommended way to implement this sequence driver use model is as in the preceeding code.'''''&lt;br /&gt;
&lt;br /&gt;
===   Driver put, Sequence get_response  ===&lt;br /&gt;
&lt;br /&gt;
Alternatively, the code in the driver could use a get() method to collect the request sequence_item, this get() call would unblock the finish_item() call in the sequence execution. However, the driver should use the put() method to signal back to the sequence that it has fully completed the bus transfer cycle, and the sequence should use a blocking call to the get_response() method to wait for the driver to complete the transfer. Any response information from the pin level bus transaction can be sent from the driver to the sequence via the argument to the put() method.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;div dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;pre&amp;gt;// Alternative version of the driver run method&lt;br /&gt;
task run_phase( uvm_phase phase );&lt;br /&gt;
 bus_seq_item req;&lt;br /&gt;
 bus_seq_item rsp;&lt;br /&gt;
 // Default conditions:&lt;br /&gt;
 BUS.valid &amp;lt;= 0;&lt;br /&gt;
 BUS.rnw &amp;lt;= 1;&lt;br /&gt;
 // Wait for reset to end&lt;br /&gt;
 @(posedge BUS.resetn);&lt;br /&gt;
 forever begin&lt;br /&gt;
  seq_item_port.get(req); // Start processing req item&lt;br /&gt;
  repeat(req.delay) begin&lt;br /&gt;
   @(posedge BUS.clk);&lt;br /&gt;
  end&lt;br /&gt;
  BUS.valid &amp;lt;= 1;&lt;br /&gt;
  BUS.addr &amp;lt;= req.addr;&lt;br /&gt;
  BUS.rnw &amp;lt;= req.read_not_write;&lt;br /&gt;
  if(req.read_not_write == 0) begin&lt;br /&gt;
   BUS.write_data &amp;lt;= req.write_data;&lt;br /&gt;
  end&lt;br /&gt;
  while(BUS.ready != 1) begin&lt;br /&gt;
   @(posedge BUS.clk);&lt;br /&gt;
  end&lt;br /&gt;
  // At end of the pin level bus transaction&lt;br /&gt;
  // Copy response data into the rsp fields:&lt;br /&gt;
  $cast(rsp, req.clone()); // Clone the req&lt;br /&gt;
  rsp.set_id_info(req); // Set the rsp id = req id&lt;br /&gt;
  if(rsp.read_not_write == 1) begin&lt;br /&gt;
   rsp.read_data = BUS.read_data; // If read - copy returned read data&lt;br /&gt;
  end&lt;br /&gt;
  rsp.error = BUS.error; // Copy bus error status&lt;br /&gt;
  BUS.valid &amp;lt;= 0; // End the pin level bus transaction&lt;br /&gt;
  seq_item_port.put(rsp); // put returns the response&lt;br /&gt;
 end&lt;br /&gt;
endtask: run_phase&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
// Corresponding version of the sequence body method:&lt;br /&gt;
task body();&lt;br /&gt;
 bus_seq_item req;&lt;br /&gt;
 bus_seq_item rsp;&lt;br /&gt;
  &lt;br /&gt;
 req = bus_seq_item::type_id::create(&amp;quot;req&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
 repeat(limit) begin&lt;br /&gt;
  start_item(req);&lt;br /&gt;
  // The address is constrained to be within the address of the GPIO function&lt;br /&gt;
  // within the DUT, The result will be a request item for a read or a write&lt;br /&gt;
  assert(req.randomize() with {addr inside {[32'h0100_0000:32'h0100_001C]};});&lt;br /&gt;
  finish_item(req);&lt;br /&gt;
  get_response(rsp);&lt;br /&gt;
  // The rsp handle points to the object that the driver has updated with response data&lt;br /&gt;
  uvm_report_info(&amp;quot;seq_body&amp;quot;, rsp.convert2string());&lt;br /&gt;
 end&lt;br /&gt;
endtask: body&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For more information on this implementation approach, especially how to initialise the response item see the section on the get, put use model in the [https://verificationacademy.com/cookbook/Driver/Sequence_API '''''Driver/Sequence API'''''] article.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:Download-tarball.png|40px|Download-tarball.png]]&lt;br /&gt;
| Download a complete working example:&amp;lt;br /&amp;gt;(tarball: [https://verificationacademy.com/cookbook/download?file=/w/images/1/1a/Use_models_bidir_get_put_uvm.tgz use_models_bidir_get_put_uvm.tgz])&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>ANA</name></author>	</entry>

	</feed>