Reg model что это
register model
Смотреть что такое «register model» в других словарях:
Model View Controller — Konzept. Hinweis: die durchgezogene Linie symbolisiert eine direkte Assoziation, die gestrichelte eine indirekte Assoziation (zum Beispiel über einen Beobachter). Model View Controller (englisch model view controller (MVC), deutsch auch: M … Deutsch Wikipedia
Model Brick Home — Model Brick Home, 6 The Boulevard, Floreat Model Brick Home is the name, for heritage listing purposes, of a brick and tile house in Floreat, Western Australia. Designed by H. Howard Bonner in 1932, the plans won a competition for the design of… … Wikipedia
Model Timber Home — Model Timber Home, 12 The Boulevard Floreat Model Timber Home is the name, for heritage listing purposes, of a timber framed house in Floreat, Western Australia. Designed by Reg Summerhayes, the plans won a competition for the design of an ideal… … Wikipedia
Model Land Company Historic District — U.S. National Register of Historic Places U.S. Historic district … Wikipedia
Model-specific register — Model specific registers (MSRs) are control registers provided by processor implementations to provide system software with features that are provided on specific processor implementations, but not others. MSRs are used for performance monitoring … Wikipedia
Register machine — In mathematical logic and theoretical computer science a register machine is a generic class of abstract machines used in a manner similar to a Turing machine. All the models are Turing equivalent. Contents 1 Overview 2 Formal definition 3 … Wikipedia
Model (person) — For other uses, see Model (disambiguation). A model (from Middle French modèle),[1] sometimes called a mannequin, is a person who is employed to display, advertise and promote commercial products (notably fashion clothing) or to serve as a… … Wikipedia
Model (art) — For non artistic human models, see Model (person). Art model posing in a French painting school Art models are models who pose for photographers, painters, sculptors, and other artists as part of their work of art. Art models who pose in the nude … Wikipedia
Register (sociolinguistics) — For the phonological term, see Register (phonology). In linguistics, a register is a variety of a language used for a particular purpose or in a particular social setting. For example, when speaking in a formal setting an English speaker may be… … Wikipedia
model — I (New American Roget s College Thesaurus) n. prototype, pattern, mock up; copy, miniature, replica; style, type; mannequin, lay figure; exemplar, paragon. See representation, goodness, form, perfection, imitation, sculpture. II (Roget s IV) n. 1 … English dictionary for students
Model of computation — For computer models simulating complex systems, see Computational model. In model driven engineering, the model of computation explains how the behaviour of the whole system is the result of the behaviour of each of its components. In… … Wikipedia
UVM/Использование Register model
Implicit Prediction (неявное предсказание)
Implicit prediction является режимом, в котором над регистровой моделью выполняются команды read и write, которые обновляют состояние модели. Однако, для включения автомотического обновления модели необходимо вызвать функцию set_auto_predict со значением 1. Например:
Это должно быть выполнено в фазе connect_phase класса env (окружения). При использовании этого режима предсказания, модель «считает, что» она знает, чему равны значения регистров в DUT, потому что этот режим предсказания не собирает транзакции к регистрам проекта, которые происходят не от регистровой модели. Такое неявное предсказание хорошо подходит для последовательностей (sequences), потому что просто выполняются операции (чтения/записи), но это не достаточно для scoreboard, которому необходимо получить точную регистровую информацию для проверки функциональности.
Explicit Prediction
При явном предсказании, регистровая модель также интегрируется с монитором шины. Благодаря этой интеграции, регистровая модель может быть обновлена, даже если она не инициирует транзакцию, поскольку она обновляется с помощью монитора. В этом случае, в set_auto_predict будет передано значение 0, и uvm_reg_predictor должен быть создан.Предиктор является компонентом, который наблюдает транзакции от монитора, а затем вызывает функцию predict() в регистровой модели, чтобы обновить её. Схема иллюстрируют отношения между этими компонентами.
Рисунок 1: Register Predictor |
---|
В вашем окружении вы могли бы создать экземпляр uvm_reg_predictor параметрированный типом транзакции шины. В connect_phase вы могли бы сделать следующее:
Подключите предиктор к монитору.
Этот режим предсказания можно использовать для передачи транзакций шины, но также отлично подходит для проверки, так как он держит в актуальном состоянии модель в соответствии со значениями в RTL.
Passive Prediction
Пассивное предсказание такое же как и явное предсказание с одним исключением; регистровая модель не подключена к секвенсору. При отсутствии секвенсора, транзакции чтения и записи не могут быть переданы. Этот способ предсказания используется только для проверки.
Давайте рассмотрим пример кода, который вы бы добавили к существующему классу dut_env.
Я объявил два экземпляра регистровой модели: regmodel и sb_regmodel.Первый, regmodel, предназначен только для последовательностей и будет использовать неявное предсказание. Второй, sb_regmodel, будет использовать явное предсказание так, что он сможет выполнять точную проверку и что данные смогут быть использованы в scoreboard. В connect_phase, я создаю адаптер для regmodel и связываю адаптер и секвенсор этой модели с помощью метода карты(map) set_sequencer(). Затем я устанавливаю авто предсказание для неявного предсказания. Я делаю то же самое для sb_regmodel, но предиктором также настроен. Здесь я установил авто предсказание для явного прогнозирования и включил проверку с помощью функции чтения с вызовом set_check_on_read(). Было бы также вполне допустимо использовать пассивное предсказание здесь, поскольку sb_regmodel не будет передавать транзакции. Чтобы сделать пассивным предсказание, не нужно вызывать метод для карты set_sequencer().
Этой глава была призвана служить в качестве введения использования регистровой модели. Я настоятельно рекомендую вам взглянуть на руководство пользователя для получения дополнительной информации, как только вы начнёте разрабатывать свою модель.
UVM Register Model Example
In the previous few articles, we have seen what a register model is and how it can be used to access registers in a given design. Let us see a complete example of how such a model can be written for a given design, how it can be integrated into the environment and how it can be used to write and read into design fields.
Design
The following design has the following registers and fields that are accessible through an APB interface. The design essentially represents a traffic light controller which can be configured by writing into certain control registers.
This is not a complete design since our purpose is simply to show how registers in this design can be read/written using a UVM register model. All the signals listed as the module ports belong to APB specification.
Interface
Let us declare an interface with signals in the APB protocol and this interface can be passed to the testbench as a virtual interface for the driver to drive some values to the design. To keep things simple, let us not declare clocking blocks and modports, although they are recommended in a real project.
Register Model Example
A register model for the design registers discussed above can be developed as shown. In typical projects, this would be an automated flow where scripts read register specification formats like IPXACT and convert them into a register model. The register model can then be directly plugged into the register environment or any other component as desired.
Register Environment
Now that the register model is available, next step is to connect all components required for the register model to work in a separate environment. This will enable the environment to be directly plugged into the testbench and hides the connection between predictor, adapter and register model from the top level environment.
APB Agent Example
AMBA APB is a bus protocol used for low-bandwidth peripheral accesses and a typical application of the protocol is in the access of control registers in a device. The code shown below is a simple model of the APB agent required for our purpose. It does not handle many of the features in an actual APB protocol.
Testbench Environment
Now that we have the register environment and an APB agent, we can create a top level environment where these two can be placed and connected.
Sequences
This sequence helps to bring the DUT out of reset. It gets the virtual interface handle from uvm_config_db and toggles the DUT reset input directly from the sequence. Register acceses can be written inside a similar sequence, but for our purpose let us simply call them from the test class.
The first part of creating a test library is to develop a base test that configures the test and the environment. All other specific tests can be derived from this base test so that it can focus on starting stimulus sequences.
Использование верилятора как средства быстрого моделирования RTL проектов. Введение в UVM
В данной статье будут описаны установка и применение бесплатного ПО для моделирования схем цифровой логики на языке Verilog как альтернативы коммерческих продуктов Incisve от компании Cadense и ModelSim от компании MentorGraphics. Сравнение моделирования в ModelSim и Verilator. Так же будет рассмотрена универсальная методолгия верификации — UVM.
Установка ПО для SystemC UVM
1. Верилятор
Одним из языков описания аппаратуры является verilog. На этом языке можно написать модуль.
Например, есть схема счетика:
Его код будет выглядеть так:
После симуляции получим вейвформы:
Видно, что по фронту тактовой частоты в регистры счетчика будет записываться очередное значение, на единицу большее, чем предыдущее.
Написанный модуль может иметь и более сложную структуру, проверить все состояния которого вручную будет сложно. Нам понадобится автоматизированное тестирование. Для этого необходимо разработать тестовое окружение на одном из языков программирования. Тестовое окружение даст нам возможность провести полную функциональную проверку устройства.
Для тестирование кода проекта помимо таких языков как Verilog, SystemVerilog, Python (для написания моделей), можно использовать язык SystemC. SystemC — язык проектирования и верификации моделей системного уровня, реализованный в виде C++ библиотеки с открытым исходным кодом.
Один из способов верификации Verilog модулей с помощью SystemC является трансляция verilog файлов в С++. Поможет нам в этом Verilator.
Verilator — это самый быстрый бесплатный симулятор Verilog HDL, который превосходит большинство коммерческих симуляторов. Verilator компилирует синтезируемый SystemVerilog (обычно это не код тестового стенда), а также некоторые утверждения SystemVerilog и Synthesis в однопоточный или многопоточный код C ++ или SystemC. Verilator был разработан для больших проектов, где быстродействие симуляции имеет первостепенное значение, и особенно хорошо подходит для генерации исполняемых моделей процессоров для групп разработчиков встроенного программного обеспечения. Verilator используется для имитации многих очень больших многомиллионных конструкций шлюзов с тысячами модулей и поддерживается многими поставщиками IP-технологий, включая IP от Arm и всех известных поставщиков RISC-V IP.
Verilator, возможно, не лучший выбор, если вы ожидаете полнофункциональную замену NC-Verilog, VCS или другого коммерческого симулятора Verilog, или поведенческого симулятора Verilog для очень маленького проекта. Однако, если вы Ищите путь для переноса синтезируемого Verilog на C ++ или SystemC, и ваша команда может свободно писать только код на C ++, это бесплатный компилятор Verilog для Вас.
Для установки последней версии на Ubuntu: качаем архив по ссылке с официального сайта.
2. GTK Wave
GTKWave является полнофункциональным средством просмотра вейвформ а так же позволяет конвертировать файлы из формата vcd в формат fst, более удобный и быстрый.
3. SYSTEMC
Язык проектирования и верификации моделей системного уровня, реализованный в виде C++ библиотеки с открытым исходным кодом.
Как уже говорилось ранее, verilator поддерживает systemc, поэтому нужно создать проект, в котором тестбенч будет описан на systemc, а исходные файлы на синтезируемом verilog. Для этого нам понадобятся библиотеки для компилятора g++, которые предоставляет компания Accelera. Accellera Systems Initiative — это независимая некоммерческая организация, занимающаяся созданием, поддержкой, продвижением и продвижением стандартов проектирования, моделирования и верификации на уровне системы для использования во всемирной электронной промышленности.
4. UVM для SYSTEMC
В данной статье будет рассмотрен проект, в котором реализована средства верификации UVM. Верификация — это подтверждение соответствия конечного продукта предопределённым эталонным требованиям. Одним их инструментов верификации могут быть тесты. Для того чтобы запустить тестовые последовательности на моделях реальных устройств на уровне RTL описания необходимо разработать тестовое окружение.
UVM — (Universal Verification Methodology) универсальная методология верификации, стандарт, позволяющий эффективно разрабатывать и повторно использовать окружающую среду проверки IP-блоков. UVM — это методология верификации в задачи которой входит организация эффективного окружения вокруг тестируемого блока. Ее преимущества:
Так как systemc поддерживает методологию UVM, перейдем к установке необходимых библиотек.
Копируем в эту папку содержимое папок /usr/local/uvm_systemc_aliance/ и /usr/local/systemc-2.3.1/
Открываем папку verilator examples.
В папке rtl лежит описание устройства. В данном примере это ШИМ контроллер.
В папке sim makefile файл для сборки проекта.
В папке tb код для верилятора. В папке tb/uvm приведен пример uvm окружения. Файл main является входной точкой в тестировании, соединияет тестируемое устройство с uvm окружением.
Пробуем собрать проект из папки sim командой make all. Видим ошибку:
Исправляем заменой строки 120:
Еще раз пробуем запустить тестбенч и натыкаемся на warning:
Меняем auto_ptr на unique_ptr.
Сборка проекта и симуляция
Когда завершится симуляция запись wafeform закончится. Файл simu.vcd можно открыть программой gtkwave:
Для отображения сигналов слева выбираем SystemC, далее зажав Shift выбираем любые сигналы, и жмем Append. В панели инструментов при наведении курсора появляются подсказки. Скрол мыши работает, нужно зажать shift или cntrl.
Так же есть способы конвертировать этот файл в другой, меньшего размера.
Если есть modelsim сделаем конвертацию. В терминале введем команду vsim. В терминале modelsim:
Или с помощью gtkwave в терминале linux:
Для сравнения времени моделирования был создан похожий проект, но уже для Modelsim. Папка modelsim_example. Сходим образом создано UVM окружение. Синтаксис похожий несмотря на то что разные языки. Если установлен Modelsim с поддержкой uvm можно запустить командой make all.
Помимо окружения в обеих проектах сделан замер реального времени моделирования.
По времени получилась разница:
Среда | wafeform | команда для запуска | время моделирования (сек.) |
Modelsim | да | make sim TRACE=1 | 18 |
Verilator | да | make sim TRACE=1 | 9 |
Modelsim | нет | make sim TRACE=0 | 10 |
Verilator | нет | make sim TRACE=0 | 4 |
Как видно из таблицы verilator имеет преимущество. Данные представлены для ПК с 8Гб оперативной памяти, 8ми ядерным процессором, частотой 800 МГц, загрузкой одного ядра.
Сравним объем файлов:
simu.vcd | 807.7 MB |
simu.wlf (конвертация, создан в Verilator) | 41 MB |
simu.wlf (создан в modelsim) | 9.3 MB |
simu.lxt | 128 MB |
simu.lxt2 | 162 МБ |
Здесь verilator проигрывает, но можно поэкспериментировать с созданием вейвформ и глубиной трассировки, периодом записи (начало и конец записи вейвформ можно сместить). С каким файлом работать решать Вам.
В ходе тестирования, помимо времени самого моделирования, было обнаружено расхождение вычитывания входных данных с шины in. Если данные с шины in меняются во время фронта clk, Modelsim считал данные после фронта, verilator до:
При тестировании этот момент нужно учитывать, так как часть тестового окружения для разных симуляторов будет работать по-разному.
Также verilator не учитывает «x» состояния сигнала и переводит всё в «0»;
UVM TESTBENCH
Рассмотрим тестовое окружение, папка tb/uvm.
UVM testbench представляет собой окружение над устройством. В данном примере устройство ШИМ контроллер. Схема UVM окружения:
Как видно на схеме UVM состоит из блоков (классов). Каждый блок исполняет свои функции. В примере представлена одна из возможных компоновок тестового окружения. Название и функционал каждого класса соответствует классу от которого он наследован. Рассмотрим каждый класс подробнее.
Environment- файл env.h или env.svh. Это класс, который может содержать один или несколько классов agent, в которых происходит соединение трех классов: sequencer, driver, monitor. В примере агента нет, но его функция реализована в классе env. Для теста нам нужно написать некоторую последовательность действий — секвенс.
Перейдем к коду запуска секвенса:
Sequencer (секвенсор) — файл sequncer.h. В system verilog получилось использовать sequencer по умолчанию. Класс, который содержит одну или несколько последовательностей sequence (секвенс) (файлы sequence_a.h, sequence_a.svh). Каждая последовательность представляет собой цепочку действий. Одним из таких действий может быть отправка транзакции. Транзакция — передача данных из одного класса в другой. Класс, в котором описаны транзакции — bus_trans. Далее будет описание двух классов, каждый из которых идеологически имеет свои определенные функции: driver и monitor.
Driver — файл drv.h, drv.svh. Класс, который принимает транзакции от секвенсора и транслирует их в сигналы. Драйвер служит помощником секвенсора на более низком уровне. Рассмотрим отправку одной посылки.
Секвенс открывает окно транзакции, драйвер детектирует это событие и начинает принимать данные. Секвенс ждет ответа от драйвера. Драйвер моделирует сигналы для устройства, затем сигнализирует секвенсору что окно можно закрыть. Идея заключается в том, что секвенсер работает на высоком уровне, а драйвер на более низком.
Сигналы подключены через шину интерфейса к устройству. Интерфейс описан в файлах vip_if.h, vip_if.svh.
Далее необходимо проверить, совпадает ли выходные сигналы с ожидаемыми. Есть два пути решения:
В данном примере сигналы сразу проверяются. В случае расхождения ожидаемого значения с измеренным, тест останавливается.
Что такое IaaS
Совсем недавно в блоге мы рассказывали об ИТ-инфраструктуре. В неё могут входить серверы, персональные компьютеры, маршрутизаторы, веб-серверы, операционные системы, CMS и даже ЦОДы. ИТ-инфраструктура может принадлежать одной компании. Такой вид инфраструктуры называется традиционным. Также инфраструктуру можно арендовать у другой компании. Это называется арендованная инфраструктура. В этой статье мы поговорим об ИТ-инфраструктуре как услуге, а именно о IaaS.
Знаете ли вы суп «Том Ям»? Это азиатский суп на кокосовом молоке с морепродуктами, овощами и грибами. Готовится он легко. Все ингредиенты нужно бросить в кипящий бульон с кокосовым молоком, добавить специи и азиатский рыбный соус. Проблема этого супа в большом количестве ингредиентов и специй, которые есть только в Азии. Каждого ингредиента нужно понемногу, поэтому для одной трапезы покупать много экзотических (и кстати, дорогих) ингредиентов невыгодно. Разве стоит из-за этого отказываться от вкусного блюда? Нет. В крупных продуктовых магазинах можно встретить наборы на 2-4 порции. В наборе есть все необходимые овощи, морепродукты и экзотические специи, а также тот самый рыбный соус. Благодаря такому набору у жителей средней полосы есть возможность попробовать суп за приемлемую цену. К чему такая аналогия? IaaS ― это экзотический суп «Том Ям» в мире дорогих компьютерных технологий.
Модель IaaS ― что это такое
IaaS ― один из видов облачной инфраструктуры, по сути ― облачный сервис, который расшифровывается как Infrastructure as a Service (инфраструктура как сервис). Иногда можно встретить название Сloud IaaS. То есть не сама организация приобретает, настраивает и обслуживает все элементы инфраструктуры, а это делает сторонняя компания. Поставщик IaaS уже всё купил и собрал, обеспечил серверы электричеством и интернетом. Пользователю остаётся только подключиться к готовым вычислительным мощностям через интернет и использовать их для своих целей. Ну и заплатить за услуги, разумеется.
Какие возможности даёт облачная инфраструктура IaaS
Главная особенность IaaS (Infrastructure as a Service) ― полная свобода пользователя в выборе программного обеспечения. Самое очевидное применение IaaS — отказ от физических серверов и переход на облачную IT-инфраструктуру. С IaaS вы можете делать всё то же, что и с физическим сервером — хранить данные, настраивать CRM-систему, разворачивать любые сайты и приложения.
Почему облачная инфраструктура набирает популярность
На интерес к IaaS повлиял скачок в интернет-продажах. Люди в целом год за годом совершали всё больше покупок в интернете, а как только пришла пандемия, даже пользователи зрелого возраста перешли на онлайн-покупки. Умные бизнесмены заметили любовь потребителей к онлайн-шопингу и стали развивать свои сайты и приложения. Для развития маркетплейсов, крупных сайтов и приложений понадобилась не только помощь специалистов IT-сферы, но и компьютерные мощности, которых не было у предпринимателей. Также появилось множество новичков, которые не могли на начальном этапе позволить себе собственную инфраструктуру.
Также ещё одним толчком к использованию услуги IaaS в России стали изменения в законе об обработке и хранении персональных данных, которые были сделаны в 2015 году. В соответствии с этим законом, все персональные данные должны длительное время храниться в базах данных организации и при этом на территории РФ. Некоторые компании собирали настолько много данных, что с выходом закона им ничего не оставалось, как обратиться к арендованным ИТ-инфраструктурам, так как на свои не было ресурсов.
Преимущества IaaS
Стоит отметить, что два вышеописанных пункта больше подходят небольшим компаниям, которые только начинают свой путь в мире бизнеса.
Недостатки IaaS
Среди внушительного списка положительных сторон услуги есть и немного недостатков. В некоторых случаях они могут стать решающими при выборе переходить или не переходить на облачную инфраструктуру такого типа.
Основной минус ― цена. Фактически вы арендуете большое количество железа и программного обеспечения. Плюс ко всему о вашей машине 24/7 заботятся специалисты. В общем, IaaS-платформа значительно сэкономит бюджет начинающего бизнеса, если сравнивать с самостоятельной настройкой и обслуживанием инфраструктуры, но это не значит, что вы потратите копейки.
Хоть с самим железом будут работать специалисты, вопросы, связанные с управлением инфраструктурой, остаются на пользователе. Вам обязательно понадобится нанимать системного администратора или обучать своих сотрудников поддерживать систему в рабочем состоянии.
Для каких задач подходят облачные технологии IaaS
Когда стоит использовать IaaS? Облачная инфраструктура в модели IaaS подходит:
На выбор облачной инфраструктуры может также повлиять стиль работы организации. Если у компании много филиалов и она постоянно расширяется, для компании важно, чтобы ИТ-инфраструктура была доступной и самое важное ― гибкой. В любой момент инфраструктура должна быстро масштабироваться. А это основные положительные стороны IaaS для бизнеса.
Кроме IaaS, есть и другие виды облачных ИТ-инфраструктур: PaaS и SaaS. Они дают меньше возможностей, но дешевле. Поэтому перед тем как принимать решение о переходе на облачную инфраструктуру, изучите возможности и других услуг. В статье Сравнение IaaS, PaaS и SaaS мы подробно рассказали о каждом виде облачных ИТ-инфраструктур.