<?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%2FSession3_-_OVM_%22Hello_World%22</id>
		<title>OVM/Basic OVM/Session3 - OVM &quot;Hello World&quot; - История изменений</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%2FSession3_-_OVM_%22Hello_World%22"/>
		<link rel="alternate" type="text/html" href="http://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session3_-_OVM_%22Hello_World%22&amp;action=history"/>
		<updated>2026-04-12T06:20:21Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.21.3</generator>

	<entry>
		<id>http://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session3_-_OVM_%22Hello_World%22&amp;diff=3430&amp;oldid=prev</id>
		<title>Yura в 08:12, 24 ноября 2013</title>
		<link rel="alternate" type="text/html" href="http://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session3_-_OVM_%22Hello_World%22&amp;diff=3430&amp;oldid=prev"/>
				<updated>2013-11-24T08:12:53Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session3_-_OVM_%22Hello_World%22&amp;amp;diff=3430&amp;amp;oldid=3405&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Yura</name></author>	</entry>

	<entry>
		<id>http://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session3_-_OVM_%22Hello_World%22&amp;diff=3405&amp;oldid=prev</id>
		<title>ANA в 15:07, 21 ноября 2013</title>
		<link rel="alternate" type="text/html" href="http://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session3_-_OVM_%22Hello_World%22&amp;diff=3405&amp;oldid=prev"/>
				<updated>2013-11-21T15:07:14Z</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;Версия 15:07, 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_session3_ovm_hello_world_jaynsley.pdf|&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;page1&lt;/del&gt;|600px]]&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_session3_ovm_hello_world_jaynsley.pdf|&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;page=1&lt;/ins&gt;|600px]]&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;Здравствуйте, я – Джон Эйсли из компании  &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;/table&gt;</summary>
		<author><name>ANA</name></author>	</entry>

	<entry>
		<id>http://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session3_-_OVM_%22Hello_World%22&amp;diff=3397&amp;oldid=prev</id>
		<title>ANA: Новая страница: «{{OVM TOC}}  600px  Здравствуйте, я – Джон Эйсли из компани…»</title>
		<link rel="alternate" type="text/html" href="http://www.simhard.com/wiki/index.php?title=OVM/Basic_OVM/Session3_-_OVM_%22Hello_World%22&amp;diff=3397&amp;oldid=prev"/>
				<updated>2013-11-21T14:50:04Z</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_session3_ovm_hello_world_jaynsley.pdf&quot; title=&quot;Файл:Module basic ovm session3 ovm hello world jaynsley.pdf&quot;&gt;600px&lt;/a&gt;  Здравствуйте, я – Джон Эйсли из компани…»&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_session3_ovm_hello_world_jaynsley.pdf|page1|600px]]&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, я – Джон Эйсли из компании  &lt;br /&gt;
Doulos. &lt;br /&gt;
&lt;br /&gt;
Это третье занятие в серии Основы OVM &lt;br /&gt;
– OVM «Hello World». &lt;br /&gt;
&lt;br /&gt;
Сейчас мы перейдем от общей информации &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
об OVM и обратимся к конкретному коду &lt;br /&gt;
OVM. &lt;br /&gt;
&lt;br /&gt;
Оставшиеся занятия будут адресованы &lt;br /&gt;
инженерам-практикам. &lt;br /&gt;
&lt;br /&gt;
Вероятно, вы уже пользовались VHDL или &lt;br /&gt;
Verilog, может быть, вам уже что-то &lt;br /&gt;
&lt;br /&gt;
известно из SystemVerilog, и я помогу вам &lt;br /&gt;
начать пользоваться именно OVM. &lt;br /&gt;
&lt;br /&gt;
Итак, идея с OVM «Hello World» – в том, &lt;br /&gt;
чтобы дать вам реальный эквивалент в &lt;br /&gt;
&lt;br /&gt;
OVM программы C Hello World. &lt;br /&gt;
Если вы помните, программа Hello World &lt;br /&gt;
&lt;br /&gt;
на языке C – это знаменитая однострочная &lt;br /&gt;
программа, почти самая короткая из &lt;br /&gt;
&lt;br /&gt;
возможных программа на языке C, которая &lt;br /&gt;
просто что-то печатает и делает нечто &lt;br /&gt;
&lt;br /&gt;
разумное. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Теперь мы попытаемся сделать то же &lt;br /&gt;
самое с OVM. &lt;br /&gt;
&lt;br /&gt;
Однако, чтобы сделать ее осмысленной, &lt;br /&gt;
программа OVM Hello World фактически &lt;br /&gt;
&lt;br /&gt;
более сложна, чем программа на языке C, &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;
тестируемая система, или DUT. &lt;br /&gt;
&lt;br /&gt;
Это будет модуль SystemVerilog, который &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
может быть оберткой для компонента в &lt;br /&gt;
другом языке. &lt;br /&gt;
&lt;br /&gt;
Возможно, ваш DUT написан на VHDL – &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;
увидите, что верификационная среда OVM &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
разделяется на две части: фиксированную &lt;br /&gt;
&lt;br /&gt;
часть, называемую env, т.е. собственно &lt;br /&gt;
верификационную среду, и переменную &lt;br /&gt;
&lt;br /&gt;
часть, которая представляет собой &lt;br /&gt;
ovm_test. &lt;br /&gt;
&lt;br /&gt;
Верификационная среда в OVM основана на &lt;br /&gt;
&lt;br /&gt;
&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;
 модульной. &lt;br /&gt;
&lt;br /&gt;
Чтобы создать мостик между основанной &lt;br /&gt;
на классах верификационной среде и &lt;br /&gt;
&lt;br /&gt;
тестируемой системой, мы используем &lt;br /&gt;
интерфейс SystemVerilog. &lt;br /&gt;
&lt;br /&gt;
Оказывается, что интерфейс SystemVerilog &lt;br /&gt;
– самый практичный способ соединения в &lt;br /&gt;
&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;br /&gt;
&lt;br /&gt;
модуль и основанная на классах &lt;br /&gt;
верификационная среда. &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;
модуль SystemVerilog – этот модуль &lt;br /&gt;
SystemVerilog будет экземплифицировать &lt;br /&gt;
&lt;br /&gt;
нашу тестируемую систему, интерфейс &lt;br /&gt;
SystemVerilog и верификационную среду, &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
которая состоит из env и test. &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;
Логически интерфейс  SystemVerilog&lt;br /&gt;
должен быть первым для компиляции в &lt;br /&gt;
&lt;br /&gt;
SystemVerilog, поскольку он создает общий &lt;br /&gt;
интерфейс как для верификационной &lt;br /&gt;
&lt;br /&gt;
среды, так и для тестируемого устройства. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
И фактически в нашей программе «Hello &lt;br /&gt;
World» интерфейс пуст. &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;
DUT. &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;
SystemVerilog в первой строке, чтобы &lt;br /&gt;
&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;
&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;
нужно сделать – написать тестируемую &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
систему в Verilog или VHDL со списком &lt;br /&gt;
отдельных штырьков, входящих в &lt;br /&gt;
&lt;br /&gt;
тестируемую систему или выходящих из &lt;br /&gt;
нее, а затем просто положить это в &lt;br /&gt;
&lt;br /&gt;
обертку, которая содержит интерфейс &lt;br /&gt;
SystemVerilog. &lt;br /&gt;
&lt;br /&gt;
Это может быть реальный DUT или обертка &lt;br /&gt;
вокруг DUT. &lt;br /&gt;
&lt;br /&gt;
Теперь мы дошли до верхнего уровня. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Итак, верхним уровнем будет модуль &lt;br /&gt;
Verilog – он экземплифицирует интерфейс, &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;
Hello World. &lt;br /&gt;
Теперь обратимся к среде, основанной на &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;
оставшихся занятиях, будет основан на &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;
программированием SystemVerilog или &lt;br /&gt;
&lt;br /&gt;
другим языком программирования типа &lt;br /&gt;
C++ или Java, отлично. &lt;br /&gt;
&lt;br /&gt;
Если нет – без паники, я попытаюсь &lt;br /&gt;
объяснить по ходу дела. Здесь мы создаем &lt;br /&gt;
&lt;br /&gt;
определяемую пользователем &lt;br /&gt;
верификационную среду под названием &lt;br /&gt;
&lt;br /&gt;
my_env путем расширения ovm_env – &lt;br /&gt;
класса, встроенного в библиотеку OVM, и &lt;br /&gt;
&lt;br /&gt;
мы создаем свою собственную &lt;br /&gt;
верификационную среду, расширяя класс, &lt;br /&gt;
&lt;br /&gt;
встроенный в OVM; это – обычный вид &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;
В строке 2 класса нам нужно &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
зарегистрировать этот класс в библиотеке &lt;br /&gt;
OVM как компонент OVM. &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;
SystemVerilog. &lt;br /&gt;
&lt;br /&gt;
Так что нужно просто помнить, что это &lt;br /&gt;
нужно делать всегда, когда вы пишете &lt;br /&gt;
&lt;br /&gt;
компонент в OVM, но это также имеет &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;
конструктор – особая функция или метод, &lt;br /&gt;
который вы пишете внутри класса, который &lt;br /&gt;
&lt;br /&gt;
инициализирует объекты, когда они &lt;br /&gt;
создаются. Итак, в SystemVerilog &lt;br /&gt;
&lt;br /&gt;
конструктор – это специальная функция &lt;br /&gt;
под названием new. Если вам ничего не &lt;br /&gt;
&lt;br /&gt;
известно о System-Verilog или &lt;br /&gt;
объектно-ориентированном &lt;br /&gt;
&lt;br /&gt;
программировании, единственное, о чем &lt;br /&gt;
вам нужно знать здесь – это то, что каждый &lt;br /&gt;
&lt;br /&gt;
класс должен содержать функцию new, и &lt;br /&gt;
вам настоятельно рекомендуется &lt;br /&gt;
&lt;br /&gt;
пользоваться именно этим стандартным &lt;br /&gt;
кодом, когда вы пишете класс в OVM. &lt;br /&gt;
&lt;br /&gt;
Другими словами, нам нужна новая &lt;br /&gt;
функция с именно двумя параметрами – &lt;br /&gt;
&lt;br /&gt;
именем и предком, который внутри &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
содержит вызов super.new. super.new – еще &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;
конструктор класса ovm_env. &lt;br /&gt;
&lt;br /&gt;
Вам нужно знать о методе build &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;
Если вам удобно, когда я говорю о методе &lt;br /&gt;
build, можно понимать его как &lt;br /&gt;
&lt;br /&gt;
функцию. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Работа метода build – это создание &lt;br /&gt;
содержимого данной части &lt;br /&gt;
&lt;br /&gt;
верификационной среды. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В нашей программе «Hello World» &lt;br /&gt;
верификационная среда так проста, что &lt;br /&gt;
&lt;br /&gt;
метод build должен только вызывать &lt;br /&gt;
метод build суперкласса, или базового &lt;br /&gt;
&lt;br /&gt;
класса. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Поэтому очень важно, чтобы этот метод &lt;br /&gt;
build вызывал super.build, и если бы это &lt;br /&gt;
&lt;br /&gt;
была реальная верификационная среда, &lt;br /&gt;
которая бы не только умела говорить «Hello &lt;br /&gt;
&lt;br /&gt;
World», то метод build делал бы и &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
другие вещи. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Последний элемент в этом классе – метод &lt;br /&gt;
run класса, который в данном случае, &lt;br /&gt;
&lt;br /&gt;
как вы видите, представляет собой задачу &lt;br /&gt;
Verilog. &lt;br /&gt;
&lt;br /&gt;
Метод run в определенном смысле &lt;br /&gt;
является основным методом этого класса. &lt;br /&gt;
&lt;br /&gt;
Метод run содержит поведение, &lt;br /&gt;
которое реализуется при моделировании. &lt;br /&gt;
&lt;br /&gt;
Это обычно получается в Verilog путем &lt;br /&gt;
выписывания блока always или – в VHDL – &lt;br /&gt;
&lt;br /&gt;
путем выписывания оператора процесса. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Фактически задача прогона среды OVM &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ведет себя как процесс в VHDL или Verilog. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Так что методы new и build эффективно &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 исполняется при &lt;br /&gt;
моделировании одновременно с другими &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
процессами в модели SystemVerilog. &lt;br /&gt;
&lt;br /&gt;
Возможно, вы заметили, что метод build&lt;br /&gt;
– это функция, &lt;br /&gt;
&lt;br /&gt;
метод run – это задача, так &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
что именно метод run фактически &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
потребляет время, потраченное на &lt;br /&gt;
моделирование. &lt;br /&gt;
&lt;br /&gt;
В программе Hello World данный &lt;br /&gt;
конкретный метод run просто запускает &lt;br /&gt;
&lt;br /&gt;
моделирование на 10 единиц времени, так &lt;br /&gt;
что мы начинаем с контроля времени #10, &lt;br /&gt;
&lt;br /&gt;
который запускает моделирование на 10 &lt;br /&gt;
единиц времени, а затем эта &lt;br /&gt;
&lt;br /&gt;
верификационная среда останавливает &lt;br /&gt;
моделирование, вызывая запрос останова.&lt;br /&gt;
&lt;br /&gt;
Здесь мы видим метод top.stop_request. &lt;br /&gt;
Думаю, понятие запроса на останов не &lt;br /&gt;
&lt;br /&gt;
требует подробных объяснений – название &lt;br /&gt;
говорит само за себя, запрос останавливает &lt;br /&gt;
&lt;br /&gt;
моделирование. ovm_top – это имя &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;
Так, ovm_top – имя объекта, этот объект &lt;br /&gt;
является экземпляром класса, и этот &lt;br /&gt;
&lt;br /&gt;
объект – верхний уровень нашей &lt;br /&gt;
верификационной среды OVM. &lt;br /&gt;
&lt;br /&gt;
Это – верхний уровень верификационной &lt;br /&gt;
среды, как противоположность модулю &lt;br /&gt;
&lt;br /&gt;
верхнего уровня. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Так что ovm_top – это не модуль верхнего &lt;br /&gt;
уровня в иерархии модулей SystemVerilog, а &lt;br /&gt;
&lt;br /&gt;
что-то совсем другое. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ovm_top – объект верхнего уровня в &lt;br /&gt;
основанной на классах верификационной &lt;br /&gt;
&lt;br /&gt;
среде. Так что ovm_top основан на классах. &lt;br /&gt;
Это ПО, элемент программирования, в &lt;br /&gt;
&lt;br /&gt;
противоположность модулю верхнего &lt;br /&gt;
уровня Verilog или SystemVerilog. &lt;br /&gt;
&lt;br /&gt;
Итак, теперь мы видим среду OVM, &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
верификационную среду, давайте &lt;br /&gt;
рассмотрим test. &lt;br /&gt;
&lt;br /&gt;
Итак, test – еще один класс, определяемый &lt;br /&gt;
пользователем. &lt;br /&gt;
&lt;br /&gt;
Здесь у нас есть класс под названием &lt;br /&gt;
my_test и он написан путем расширения &lt;br /&gt;
&lt;br /&gt;
ovm_test. &lt;br /&gt;
Итак, опять, ovm_test – это класс, &lt;br /&gt;
&lt;br /&gt;
встроенный в библиотеку OVM, и мы &lt;br /&gt;
создаем определяемый пользователем тест &lt;br /&gt;
&lt;br /&gt;
путем расширения этого встроенного &lt;br /&gt;
класса test. &lt;br /&gt;
&lt;br /&gt;
Опять же, не следует забывать в строке 2 &lt;br /&gt;
зарегистрировать этот класс, &lt;br /&gt;
&lt;br /&gt;
определяемый пользователем с OVM с &lt;br /&gt;
помощью макроса ovm_component_utils. &lt;br /&gt;
&lt;br /&gt;
Тест тогда будет экземплифицировать &lt;br /&gt;
среду, так что в терминах структуры &lt;br /&gt;
&lt;br /&gt;
нашего кода SystemVerilog у нас есть test &lt;br /&gt;
вверху, и test сделает экземпляр среды в &lt;br /&gt;
&lt;br /&gt;
качестве компонента. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Итак, здесь, внутри этого класса, у нас есть&lt;br /&gt;
атрибут или свойство класса, которое &lt;br /&gt;
&lt;br /&gt;
можно считать переменной типа my_env и &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
имя переменной – my_env_h, и мы &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
сознательно используем суффикс _h при &lt;br /&gt;
создании этой переменной. &lt;br /&gt;
&lt;br /&gt;
Это рекомендуется, поскольку эта &lt;br /&gt;
переменная фактически используется как &lt;br /&gt;
&lt;br /&gt;
индекс. &lt;br /&gt;
В SystemVerilog при создании переменной &lt;br /&gt;
&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;br /&gt;
&lt;br /&gt;
Так что когда вы видите суффикс _h, это &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;
рассматривали, и это делается &lt;br /&gt;
сознательно. &lt;br /&gt;
&lt;br /&gt;
И метод build, снова метод build&lt;br /&gt;
вызывает super.build – это очень важно, но &lt;br /&gt;
&lt;br /&gt;
это другое дело. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В этом случае метод build будет &lt;br /&gt;
экземплифицировать верификационную &lt;br /&gt;
&lt;br /&gt;
среду, он будет экземплифицировать &lt;br /&gt;
компонент my_env, который мы видели &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;
У нас есть my_env::type_id::create. &lt;br /&gt;
&lt;br /&gt;
Мы вызываем метод create, который связан &lt;br /&gt;
с my_env::type, чтобы создать экземпляр &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
данной верификационной среды my_env. &lt;br /&gt;
&lt;br /&gt;
Затем мы сохраняем логический номер, &lt;br /&gt;
ссылку на только что созданный объект в &lt;br /&gt;
&lt;br /&gt;
переменной my_env. &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;
Нужно передать правильные аргументы в &lt;br /&gt;
 метод create. &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;
my_env_h, и имя индекса – тоже my_env_h. &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;
Второй аргумент для метода create – это &lt;br /&gt;
this. &lt;br /&gt;
&lt;br /&gt;
this – это имя, встроенное в SystemVerilog.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
this хранит ссылку на текущий объект. &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;
this в SystemVerilog дает индекс этого &lt;br /&gt;
конкретного объекта. &lt;br /&gt;
&lt;br /&gt;
Другими словами, что касается нашего &lt;br /&gt;
примера Hello World, здесь вы находимся &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
внутри тела test, и this указывает на сам &lt;br /&gt;
&lt;br /&gt;
объект test, который будет предком для &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;
представляющий test, и оказывается, что &lt;br /&gt;
&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;
Цель при этом – избежать введения &lt;br /&gt;
слишком большого количества имен в &lt;br /&gt;
&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;br /&gt;
&lt;br /&gt;
имен. Поэтому лучше определить все свои &lt;br /&gt;
классы внутри пакета, а затем &lt;br /&gt;
&lt;br /&gt;
единственное имя, которое входит в &lt;br /&gt;
глобальное пространство имен – это имя &lt;br /&gt;
&lt;br /&gt;
самого пакета, в данном случае – my_pkg. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Чтобы фактически скомпилировать любой &lt;br /&gt;
код OVM, а также написать классы и &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;
коде OVM – если помните, мы пользовались &lt;br /&gt;
&lt;br /&gt;
компонентом макроса регистрации – то нам &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
необходима директива включения Verilog &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ovm_macros.svh в верхней части файла; &lt;br /&gt;
&lt;br /&gt;
&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;
встроенные классы OVM. &lt;br /&gt;
&lt;br /&gt;
Они импортируются с помощью строки &lt;br /&gt;
import ovm_pkg::*. &lt;br /&gt;
&lt;br /&gt;
Звездочка – это символ, который &lt;br /&gt;
импортирует все содержимое пакета OVM. &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;
импорте. &lt;br /&gt;
&lt;br /&gt;
Мы импортируем содержание ovm_pkg, &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
импортируем содержание нашего &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
собственного пакета my_pkg::*, а затем из &lt;br /&gt;
процедурного блока – первоначальное &lt;br /&gt;
&lt;br /&gt;
утверждение Verilog – мы делаем вызов &lt;br /&gt;
run_test. &lt;br /&gt;
&lt;br /&gt;
Итак, run_test – это встроенный метод в &lt;br /&gt;
OVM, который будет фактически выбирать &lt;br /&gt;
&lt;br /&gt;
и запускать тест. &lt;br /&gt;
Имя теста, который мы запускаем, мы &lt;br /&gt;
&lt;br /&gt;
передаем как аргумент в метод run_test. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Именно здесь вы выбираете конкретный &lt;br /&gt;
тест, который вы хотите запустить. &lt;br /&gt;
&lt;br /&gt;
При выполнении run_test обнаружится &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
класс, который был назван my_test – это &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;
мы запускаем свою программу Hello World. &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;
выходящие из Questasim. &lt;br /&gt;
Если внимательно посмотреть, вы увидите, &lt;br /&gt;
&lt;br /&gt;
что мы запускаем версию 2.1 библиотеки &lt;br /&gt;
OVM. Мы запускаем оригинальные коды OVM – &lt;br /&gt;
&lt;br /&gt;
вы видите здесь уведомления об авторских&lt;br /&gt;
правах Mentor и Cadence. &lt;br /&gt;
&lt;br /&gt;
Далее здесь информационное сообщение о &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
том, что выполняется тест my_test. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
my_test – имя нашего конкретного теста, &lt;br /&gt;
&lt;br /&gt;
который запускается здесь. &lt;br /&gt;
Затем переходим к остальной части &lt;br /&gt;
&lt;br /&gt;
транскрипта. У нас есть краткий отчет OVM &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;
успешно в момент 10. &lt;br /&gt;
&lt;br /&gt;
Другими словами, наш запрос на останов &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
был исполнен по плану после того, как &lt;br /&gt;
наша верификационная среда потратила 10 &lt;br /&gt;
&lt;br /&gt;
единиц времени. &lt;br /&gt;
Это – как раз то, что мы хотели. &lt;br /&gt;
&lt;br /&gt;
Итак, это – эквивалент в OVM отображения &lt;br /&gt;
написанного сообщения Hello World. &lt;br /&gt;
&lt;br /&gt;
Итак, на этом занятии я привел очень &lt;br /&gt;
простой, но полный пример кода OVM, так  &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;
OVM, чтобы разделить переменную и &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>