<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.simhard.com/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.simhard.com/wiki/index.php?action=history&amp;feed=atom&amp;title=OVM%2FBasic_OVM%2FSession7_-_Sequences_and_Tests</id>
		<title>OVM/Basic OVM/Session7 - Sequences and Tests - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.simhard.com/wiki/index.php?action=history&amp;feed=atom&amp;title=OVM%2FBasic_OVM%2FSession7_-_Sequences_and_Tests"/>
		<link rel="alternate" type="text/html" href="http://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session7_-_Sequences_and_Tests&amp;action=history"/>
		<updated>2026-07-02T14:58:56Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.21.3</generator>

	<entry>
		<id>http://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session7_-_Sequences_and_Tests&amp;diff=3409&amp;oldid=prev</id>
		<title>ANA в 19:24, 21 ноября 2013</title>
		<link rel="alternate" type="text/html" href="http://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session7_-_Sequences_and_Tests&amp;diff=3409&amp;oldid=prev"/>
				<updated>2013-11-21T19:24:04Z</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;Версия 19:24, 21 ноября 2013&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&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;{{OVM TOC}}&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;{{OVM TOC}}&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 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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=1]]&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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|center&lt;/ins&gt;|page=1]]&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 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;Это седьмое занятие по основам OVM. Его тема - последовательности и тесты.&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;Это седьмое занятие по основам OVM. Его тема - последовательности и тесты.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 9:&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 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 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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=2]]&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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|center&lt;/ins&gt;|page=2]]&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 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;Строка 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 27:&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 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 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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=3]]&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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|center&lt;/ins&gt;|page=3]]&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 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;Строка 57:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 57:&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 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 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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=4]]&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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|center&lt;/ins&gt;|page=4]]&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 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;Строка 89:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 89:&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 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 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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=5]]&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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|center&lt;/ins&gt;|page=5]]&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 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;Строка 140:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 140:&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 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 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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=7]]&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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|center&lt;/ins&gt;|page=7]]&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 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;Строка 156:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 156:&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 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 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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=8]]&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;[[File:Module basic ovm session7 sequences and tests jaynsley.pdf&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|center&lt;/ins&gt;|page=8]]&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 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://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session7_-_Sequences_and_Tests&amp;diff=3386&amp;oldid=prev</id>
		<title>ANA: Новая страница: «{{OVM TOC}}  page=1  Это седьмое занятие по основам OVM. Его те…»</title>
		<link rel="alternate" type="text/html" href="http://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session7_-_Sequences_and_Tests&amp;diff=3386&amp;oldid=prev"/>
				<updated>2013-11-20T20:14:07Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «{{OVM TOC}}  &lt;a href=&quot;/wiki/index.php/%D0%A4%D0%B0%D0%B9%D0%BB:Module_basic_ovm_session7_sequences_and_tests_jaynsley.pdf&quot; title=&quot;Файл:Module basic ovm session7 sequences and tests jaynsley.pdf&quot;&gt;page=1&lt;/a&gt;  Это седьмое занятие по основам OVM. Его те…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{OVM TOC}}&lt;br /&gt;
&lt;br /&gt;
[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=1]]&lt;br /&gt;
&lt;br /&gt;
Это седьмое занятие по основам OVM. Его тема - последовательности и тесты.&lt;br /&gt;
На нем мы более внимательно рассмотрим последовательности, являющиеся&lt;br /&gt;
важной частью OVM.&lt;br /&gt;
Я также покажу, как создавать последовательности в тесте.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=2]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ранее я рассказывал о понятии многоуровневого последовательного стимула.&lt;br /&gt;
Мы видели, что для подачи сигнала на отдельные контакты&lt;br /&gt;
тестируемого устройства используются транзакции, которые&lt;br /&gt;
могут быть составлены из последовательностей.&lt;br /&gt;
Последовательность может состоять как из нескольких индивидуальных транзакций,&lt;br /&gt;
так и из ряда других последовательностей.&lt;br /&gt;
Кроме того, последовательность может быть как полностью линейной и детерминированной,&lt;br /&gt;
так и совершенно случайной.&lt;br /&gt;
Допустимы и любые вариации между этими двумя крайними случаями.&lt;br /&gt;
На этом занятии мы приведем примеры каждой из этих ситуаций.&lt;br /&gt;
Начнем с рассмотрения последовательности транзакций.&lt;br /&gt;
На предыдущем занятии я показал очень простую последовательность транзакций,&lt;br /&gt;
а теперь поговорим об ограниченной случайной последовательности транзакций.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На этом слайде показан пример уже рассмотренной ранее&lt;br /&gt;
последовательности, определенной пользователем.&lt;br /&gt;
Здесь мы видим класс пользовательской последовательности read_modify_write,&lt;br /&gt;
который расширяет класс ovm_sequence.&lt;br /&gt;
Как следует из названия, класс read_modify_write выполняет чтение, за которым следует запись.&lt;br /&gt;
Следовательно, это детерминированная последовательность в том смысле, что&lt;br /&gt;
состоит из одной операции чтения, сопровождаемой ровно одной операцией записи.&lt;br /&gt;
Глядя на метод body класса последовательности,&lt;br /&gt;
стандартного метода для описания поведения последовательности,&lt;br /&gt;
мы видим, что он начинается с объявления транзакции типа my_transaction,&lt;br /&gt;
а затем создает транзакцию, применяя фабричный метод, как мы видели раньше.&lt;br /&gt;
Итак, выделенная жирным шрифтом строка&lt;br /&gt;
создает транзакцию типа my_transaction,&lt;br /&gt;
если только ее поведение не переопределено для данного теста,&lt;br /&gt;
поскольку это фабричный метод.&lt;br /&gt;
Описатель этой транзакции сохраняется в переменной tx,&lt;br /&gt;
а затем мы выполняем стандартный набор шагов:&lt;br /&gt;
запускаем последовательность,&lt;br /&gt;
производим некоторую рандомизацию и завершаем последовательность.&lt;br /&gt;
Поскольку речь идет о последовательности read_modify_write,&lt;br /&gt;
то на шаге рандомизации транзакции мы пользуемся встраиваемым ограничением&lt;br /&gt;
наряду с командой SystemVerilog randomize,&lt;br /&gt;
чтобы сделать эту транзакцию действительно транзакцией чтения.&lt;br /&gt;
Отсюда встраиваемое ограничение, в силу которого команда&lt;br /&gt;
имеет значение 0, что означает операцию чтение.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее в методе body мы встречаем&lt;br /&gt;
следующую часть последовательности read_modify_write, а именно modify.&lt;br /&gt;
В этом месте мы сохраняем значения фактического адреса и данных&lt;br /&gt;
из транзакции, которые были рандомизированы на предыдущем шаге.&lt;br /&gt;
Они записываются в локальные переменные, после чего значение данных модифицируется:&lt;br /&gt;
в данном примере увеличивается на единицу.&lt;br /&gt;
Так в нашем случае выглядит шаг модификации.&lt;br /&gt;
И наконец третья часть последовательности - запись.&lt;br /&gt;
Мы снова создаем транзакцию, вызываем метод start item,&lt;br /&gt;
рандомизируем транзакцию и вызываем finish item.&lt;br /&gt;
На это раз используется другое встраиваемое ограничение,&lt;br /&gt;
гарантирующее, что это действительно операция записи.&lt;br /&gt;
Рассмотрим по очереди все атрибуты транзакции.&lt;br /&gt;
На атрибут command наложено ограничение равенства 1,&lt;br /&gt;
то есть он полностью детерминирован. Поэтому транзакция будет операцией записи,&lt;br /&gt;
и мы ничего не оставляем на волю случая.&lt;br /&gt;
В поле адреса записывается a, то есть адрес из предыдущей транзакции&lt;br /&gt;
чтения, который был выбран случайным образом.&lt;br /&gt;
Стало быть, адрес рандомизирован, но в обеих транзакциях,&lt;br /&gt;
чтения и записи, совпадает.&lt;br /&gt;
В качестве значения данных используется значение, прочитанное&lt;br /&gt;
в предыдущей транзакции, а затем модифицированное.&lt;br /&gt;
Следовательно, данные детерминированы в том смысле, что совпадают с данными,&lt;br /&gt;
возвращенными предыдущей транзакцией.&lt;br /&gt;
Итак, хотя в этой транзакции и есть случайный элемент, о котором я еще скажу,&lt;br /&gt;
она без сомнения является ограниченной случайной транзакцией,&lt;br /&gt;
то есть находится где-то между двумя крайностями.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Это была последовательность read_modify_write.&lt;br /&gt;
А теперь рассмотрим последовательность последовательностей, для чего&lt;br /&gt;
создадим еще одну пользовательскую последовательность, sequence_of_commands.&lt;br /&gt;
Класс sequence_of_commands тоже расширяет ovm_sequence,&lt;br /&gt;
и мы пишем стандартный трафаретный код:&lt;br /&gt;
регистрируем последовательность методом ovm_object_utils&lt;br /&gt;
и объявляем rand-переменную,&lt;br /&gt;
которую будем использовать для управления работой последовательности.&lt;br /&gt;
В терминологии случайной верификации с ограничениями такая&lt;br /&gt;
переменная называется распорядителем (nob). Это управляемый распорядитель, применяемый&lt;br /&gt;
для управления работой последовательности.&lt;br /&gt;
Идея в том, что значение этой переменной представляет&lt;br /&gt;
собой нечто, способное уточнять поведение конкретной последовательности&lt;br /&gt;
причем само это значение можно ограничить извне.&lt;br /&gt;
В данном очень простом примере&lt;br /&gt;
целочисленное поле n определяет&lt;br /&gt;
количество генерируемых в этой последовательности команд.&lt;br /&gt;
Двигаясь дальше, мы видим, что последовательность содержит ограничение,&lt;br /&gt;
и, как я отмечал на предыдущем занятии,&lt;br /&gt;
очень полезно включать в транзакции и последовательности&lt;br /&gt;
ограничения по умолчанию, чтобы всем случайным полям&lt;br /&gt;
гарантированно присваивались разумные начальные значения.&lt;br /&gt;
Итак, при создании экземпляра такой последовательности и его выполнении&lt;br /&gt;
количество сгенерированных команд будет находиться в диапазоне от 2 до 4.&lt;br /&gt;
По умолчанию последовательность команд будет содержать от 2 до 4 последовательностей&lt;br /&gt;
read_modify_write.&lt;br /&gt;
Ранее я также отмечал, что ограничения являются мягкими,&lt;br /&gt;
то есть их всегда можно переопределить. Иными словами,&lt;br /&gt;
количество последовательностей необязательно должно быть числом от 2 до 4,&lt;br /&gt;
это просто разумное значение по умолчанию.&lt;br /&gt;
Далее, раз это класс последовательности, то в нем имеется метод body,&lt;br /&gt;
который и описывает основное поведение последовательности.&lt;br /&gt;
Метод body содержит цикл repeat, повторяемый в точности n раз.&lt;br /&gt;
Таким образом, n действительно равно числу команд,&lt;br /&gt;
генерируемых в данной последовательности. Значение n можно рандомизировать&lt;br /&gt;
перед созданием последовательности, а впоследствии оно будет определять&lt;br /&gt;
количество фактически сгенерированных команд.&lt;br /&gt;
А внутри цикла мы видим уже знакомый код&lt;br /&gt;
генерации нового элемента последовательности.&lt;br /&gt;
Затем мы отправляем этот элемент, вызывая методы start item и finish item.&lt;br /&gt;
В данном случае элемент последовательности - не транзакция, а другая последовательность.&lt;br /&gt;
Выше мы видели пример последовательности, генерирующей транзакции,&lt;br /&gt;
а эта последовательность генерирует новые последовательности.&lt;br /&gt;
Таким образом, каждый запущенный и завершенный элемент последовательности&lt;br /&gt;
сам является экземпляром последовательности read_modify_write.&lt;br /&gt;
То есть эта последовательность генерирует от 2 до 4 команд read_modify_write.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=7]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Итак, сейчас мы имеем две пользовательские последовательности:&lt;br /&gt;
read_modify_write и sequence_of_commands.&lt;br /&gt;
В принципе эти последовательности&lt;br /&gt;
следовало бы поместить в библиотеку последовательностей.&lt;br /&gt;
Такая библиотека представляет собой просто собрание последовательностей,&lt;br /&gt;
которые можно запускать из теста.&lt;br /&gt;
Библиотека последовательностей есть не что иное, как пакет SystemVerilog.&lt;br /&gt;
Пакет – это удобный механизм для организации последовательностей.&lt;br /&gt;
Он позволяет хранить их в одном месте, избегая чрезмерного количества глобальных имен.&lt;br /&gt;
Здесь мы определили пользовательский пакет my_sequence_library, в котором импортируются&lt;br /&gt;
все символы из библиотеки OVM, а затем определяются наши собственные последовательности.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Module basic ovm session7 sequences and tests jaynsley.pdf|page=8]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Итак, мы определили ряд последовательностей,&lt;br /&gt;
а теперь посмотрим, как запускать их из тестов.&lt;br /&gt;
Для этого рассмотрим определенный пользователем класс теста.&lt;br /&gt;
Класс test1 расширяет класс ovm_test, в нем имеется стандартный макрос регистрации,&lt;br /&gt;
описатель, которым мы воспользуемся для инстанцирования окружения,&lt;br /&gt;
и стандартный фазовый метод run, выполнение которого&lt;br /&gt;
и составляет собственно процесс моделирования.&lt;br /&gt;
В начале этот метод создает&lt;br /&gt;
экземпляр последовательности read_modify_write.&lt;br /&gt;
Здесь мы видим уже знакомый вызов фабричного метода. Он создает&lt;br /&gt;
последовательность read_modify_write, а затем запускает ее,&lt;br /&gt;
явно вызывая метод start.&lt;br /&gt;
Синтаксически это записывается в виде seq.start.&lt;br /&gt;
Последовательность всегда запускается на конкретном контроллере.&lt;br /&gt;
Поэтому аргумент метода start фактически идентифицирует тот сервер последовательностей,&lt;br /&gt;
на котором данная последовательность будет работать.&lt;br /&gt;
В данном случае контроллер идентифицируется своим полным именем в иерархии,&lt;br /&gt;
my_env_h.my_agent_h.my_sequencer_h.&lt;br /&gt;
Теперь рассмотрим второй тест.&lt;br /&gt;
Он очень похож на первый,&lt;br /&gt;
мы сами решаем, какой из них прогонять. Во втором&lt;br /&gt;
тесте из библиотеки последовательностей выбирается другой контроллер,&lt;br /&gt;
тот, что реализует последовательность команд.&lt;br /&gt;
Мы создаем экземпляр этой последовательности, сохраняем его описатель в переменной seq,&lt;br /&gt;
а затем рандомизируем последовательность, потому что она не вполне детерминирована.&lt;br /&gt;
Если помните, в классе sequence_of_commands имеется распорядитель, которым можно&lt;br /&gt;
манипулировать для задания точного поведения данной последовательности.&lt;br /&gt;
Последовательность sequence_of_commands генерирует от 2 до 4&lt;br /&gt;
команд read_modify_write,&lt;br /&gt;
а явный вызов метода sequence.randomize рандомизирует последовательность,&lt;br /&gt;
то есть вычисляет значение переменной n, распорядителя,&lt;br /&gt;
определяющее, сколько именно команд генерирует данная последовательность.&lt;br /&gt;
После этого мы, как и раньше, явно запускаем последовательность на конкретном контроллере.&lt;br /&gt;
Итак, мы рассмотрели примеры запуска двух разных последовательностей.&lt;br /&gt;
Теперь обратимся к третьему тесту.&lt;br /&gt;
Предположим, что существующие тесты, даже если завершаются успешно,&lt;br /&gt;
не дают достаточного покрытия,&lt;br /&gt;
и мы хотели более точно определить, какие именно последовательности&lt;br /&gt;
надлежит сгенерировать.&lt;br /&gt;
Это можно сделать, вмешавшись в процесс с целью задать точное поведение&lt;br /&gt;
созданной и запущенной последовательности.&lt;br /&gt;
Поэтому в классе test3 создается новый элемент последовательности,&lt;br /&gt;
а затем отключается ограничение, включенное в эту последовательность, -&lt;br /&gt;
с помощью встроенного в SystemVerilog метода constraint_mode.&lt;br /&gt;
Передача этому методу аргумента 0 в SystemVerilog означает, чтобы&lt;br /&gt;
ограничение следует отключить.&lt;br /&gt;
Подразумеваемое по умолчанию ограничение более не действует. Вместо того чтобы&lt;br /&gt;
применять ограничение по умолчанию, мы устанавливаем явное встраиваемое ограничение,&lt;br /&gt;
указав, что распорядитель последовательности должен лежать в диапазоне от 10 до 20.&lt;br /&gt;
В результате генерируется больше команд read_modify_write&lt;br /&gt;
с целью подвергнуть тестируемое устройство более жесткому испытанию.&lt;br /&gt;
Теперь мы имеем тест, который вручную ограничивает&lt;br /&gt;
точное поведение данного ограниченного случайного стимула&lt;br /&gt;
в момент запуска контроллера.&lt;br /&gt;
Итак, я продемонстрировал, как можно написать несколько тестов&lt;br /&gt;
таким образом, что каждый будет запускать разные последовательности,&lt;br /&gt;
а заодно как можно настраивать точное поведение этих последовательностей.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Теперь посмотрим, как выбирается конкретный тест для прогона.&lt;br /&gt;
Простейший способ мы уже видели:&lt;br /&gt;
нужно просто указать имя теста в команде run_test.&lt;br /&gt;
Здесь мы вызываем встроенную функцию run_test и задаем&lt;br /&gt;
имя теста, который хотим прогнать.&lt;br /&gt;
Ничего сложного.&lt;br /&gt;
Другой способ позволяет обойтись без указания имени теста&lt;br /&gt;
в качестве аргумент run_test.&lt;br /&gt;
Этот аргумент можно опустить, а имя теста&lt;br /&gt;
задать в командной строке.&lt;br /&gt;
Тогда в момент запуска модели SystemVerilog&lt;br /&gt;
мы можем указать имя теста в виде аргумента командной строки. К счастью,&lt;br /&gt;
компании Cadence и Mentor договорились о стандартном имени флага Verilog,&lt;br /&gt;
используемого в качестве плюс-аргумента для этой цели: ovm_testname.&lt;br /&gt;
Таким образом, запись ovm testname равно test3 позволяет задать тест в командной строке&lt;br /&gt;
без повторной компиляции и настройки кода SystemVerilog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Подведем итог. На этом занятии я подробнее рассказал о создании последовательностей&lt;br /&gt;
и о том, как выбирать конкретную последовательность для запуска.&lt;br /&gt;
Вы также видели, как тесты позволяют без труда модифицировать&lt;br /&gt;
окружение верификации&lt;br /&gt;
с целью точной настройки его поведения.&lt;/div&gt;</summary>
		<author><name>ANA</name></author>	</entry>

	</feed>