mirror of
https://github.com/MPSU/APS.git
synced 2026-06-10 11:13:33 +00:00
English version draft
Assisted-by: Claude:claude-4.6-sonnet
This commit is contained in:
@@ -1,72 +1,72 @@
|
||||
# Как запустить симуляцию в Vivado
|
||||
# How to Run a Simulation in Vivado
|
||||
|
||||
Симуляция — это один из видов моделирования. Моделирование используется для проверки поведения разработанного устройства. Для этого, на входы модуля подаются тестовые воздействия, а с его выходов считывается результат. Параллельно этому процессу, те же самые тестовые воздействия отправляются и в эталонную модель устройства. Результат модели сверяют с результатом проектируемого устройства и, в случае расхождения, сигнализируют об ошибке.
|
||||
Simulation is one form of modeling. Modeling is used to verify the behavior of a designed device. To do this, test stimuli are applied to the module inputs and the results are read from its outputs. In parallel, the same test stimuli are also applied to a reference model of the device. The model's output is compared with the output of the design under test, and any discrepancy is reported as an error.
|
||||
|
||||
Генерация тестовых воздействий, подача их на верифицируемое устройство и модель, сверка результатов и логирование ошибок — все это выполняется средствами верификационного окружения, которое в рамках данных лабораторных работ будет именоваться как "тестбенч". Тестбенчи — это несинтезируемые модули, поэтому они не должны находиться в папке `Design Sources`, вместо этого для них есть папка `Simulation Sources` (см. ["Менеджер проекта"](03.%20Project%20manager.md)).
|
||||
Generating test stimuli, applying them to the device under verification and the reference model, comparing results, and logging errors — all of this is handled by the verification environment, referred to in these lab assignments as a "testbench". Testbenches are non-synthesizable modules and therefore must not be placed in the `Design Sources` folder; instead, the `Simulation Sources` folder is used for them (see ["Project Manager"](03.%20Project%20manager.md)).
|
||||
|
||||
Для каждого верифицируемого модуля в репозитории есть отдельный тестбенч. Перед запуском моделирования, необходимо убедиться, что в качестве модуля верхнего уровня в папке `Simulation Sources` выбран тестбенч того модуля, который вы собираетесь верифицировать.
|
||||
A separate testbench is provided in the repository for each module to be verified. Before launching a simulation, make sure that the testbench for the module you intend to verify is selected as the top-level module in the `Simulation Sources` folder.
|
||||
|
||||
Есть несколько способов запустить симуляцию, рассмотрим два из них:
|
||||
There are several ways to launch a simulation; two of them are described here:
|
||||
|
||||
1. На панели слева, в разделе `SIMULATION`, нажать `Run Simulation` → `Run Behavioral Simulation`.
|
||||
1. In the left panel, under the `SIMULATION` section, click `Run Simulation` → `Run Behavioral Simulation`.
|
||||
|
||||

|
||||
|
||||
_Рисунок 1. Запуск симуляции через вкладку `SIMULATION` окна `Flow Navigator`._
|
||||
_Figure 1. Launching a simulation via the `SIMULATION` tab of the `Flow Navigator`._
|
||||
|
||||
2. В иерархии проекта нажать по папке `sim_1` правой кнопкой мыши, далее выбрать `Run Simulation` → `Run Behavioral Simulation`.
|
||||
2. In the project hierarchy, right-click the `sim_1` folder and select `Run Simulation` → `Run Behavioral Simulation`.
|
||||
|
||||

|
||||
|
||||
_Рисунок 2. Запуск симуляции через контекстное меню папки `sim_1` в `Simulation Sources`._
|
||||
_Figure 2. Launching a simulation via the context menu of the `sim_1` folder in `Simulation Sources`._
|
||||
|
||||
После запуска симуляции будет промоделировано определенное количество времени, задаваемое через настройки проекта (после создания проекта мы сделали это количество равное одной секунде), после чего моделирование приостанавливается. Моделирование может быть остановлено досрочно самим тестбенчем.
|
||||
After the simulation is launched, a specified amount of simulation time will be modeled — this duration is set in the project settings (we set it to one second when creating the project) — after which the simulation pauses. The simulation can also be stopped early by the testbench itself.
|
||||
|
||||
## Окна для работы с симуляцией
|
||||
## Simulation Windows
|
||||
|
||||
После запуска симуляции в основной части окна Vivado откроется окно симуляции, представленное на _рис. 3_.
|
||||
After the simulation is launched, the simulation window shown in _Fig. 3_ will open in the main area of the Vivado window.
|
||||
|
||||

|
||||
|
||||
_Рисунок 3. Окно симуляции._
|
||||
_Figure 3. Simulation window._
|
||||
|
||||
Данное окно состоит из 4-х под-окон:
|
||||
This window consists of four sub-windows:
|
||||
|
||||
1. окно с вкладками `Scope` и `Sources`;
|
||||
2. окно с вкладками `Objects` и `Protocol Instances`;
|
||||
3. окно редактора с открытыми файлами и появившимся там окном временной диаграммы (которая также представляет собой файл);
|
||||
4. Окно c вкладками `Tcl Console`, `Messages` и `Log`.
|
||||
1. A window with the `Scope` and `Sources` tabs;
|
||||
2. A window with the `Objects` and `Protocol Instances` tabs;
|
||||
3. The editor window with open files and a waveform viewer (which is also represented as a file);
|
||||
4. A window with the `Tcl Console`, `Messages`, and `Log` tabs.
|
||||
|
||||
## Окно с вкладками Scope и Sources
|
||||
## The Scope and Sources Window
|
||||
|
||||
Вкладка Sources является той же самой вкладкой, что использовалась вами при добавлении и описании исходников и подробно разобрана в главе "[Менеджер проекта](./03.%20Project%20manager.md)".
|
||||
The `Sources` tab is the same tab used when adding and describing source files, and is described in detail in the chapter "[Project Manager](./03.%20Project%20manager.md)".
|
||||
|
||||
Вкладка Scope отображает область видимости симуляции, верхним уровнем в которой является модуль верхнего уровня `Simulation Sources` и библиотека `glbl`, которую в рамках данного курса можно будет игнорировать. Раскрыв модуль верхнего уровня, можно увидеть иерархию модулей подобную иерархии в `Simulation Sources`. Выбрав конкретный модуль во вкладке `Scope`, можно "отправить" его на временную диаграмму: либо перетащив его в область сигналов, либо нажав по нему правой кнопкой мыши, и выбрав `Add to Wave Window`. В этом случае, на временную диаграмму добавятся входы и выходы этого модуля, а также его внутренние сигналы. Кроме того, выбор модуля во вкладке `Scope` влияет на отображение содержимого окна с вкладкой `Objects`.
|
||||
The `Scope` tab displays the simulation scope. The top level consists of the top-level module from `Simulation Sources` and the `glbl` library, which can be ignored in this course. Expanding the top-level module reveals a module hierarchy similar to the one in `Simulation Sources`. Selecting a specific module in the `Scope` tab allows you to add it to the waveform viewer — either by dragging it into the signal area or by right-clicking it and selecting `Add to Wave Window`. In this case, the module's inputs, outputs, and internal signals will all be added to the waveform. In addition, selecting a module in the `Scope` tab updates the content displayed in the `Objects` tab.
|
||||
|
||||
На вкладке `Objects` находятся все объекты, содержащиеся в модуле, выбранном во вкладке `Scope`: его входы и выходы, внутренние провода и регистры, параметры этого модуля и т.п. С помощью данной вкладки можно добавлять отдельные объекты выбранного модуля.
|
||||
The `Objects` tab lists all objects contained in the module selected in the `Scope` tab: its inputs and outputs, internal wires and registers, module parameters, and so on. This tab can be used to add individual objects of the selected module to the waveform.
|
||||
|
||||
## Панель инструментов симуляции
|
||||
## Simulation Toolbar
|
||||
|
||||
После запуска симуляции, вверху окна Vivado меняется панель инструментов. На _рис. 3_ обозначены следующие кнопки:
|
||||
After the simulation is launched, the toolbar at the top of the Vivado window changes. The buttons shown in _Fig. 3_ are:
|
||||
|
||||
1. сбросить симуляцию (горячая клавиша `Ctrl+Shift+F5`);
|
||||
2. запустить симуляцию до тех пор, пока она не будет остановлена тестбенчем или вручную (горячая клавиша `F3`);
|
||||
3. запустить симуляцию на указанный справа от кнопки промежуток времени (горячая клавиша `Shift+F2`);
|
||||
4. перезапустить симуляцию (по умолчанию горячей клавиши нет, но может быть добавлена в настройках);
|
||||
5. закрыть симуляцию.
|
||||
1. Restart simulation (keyboard shortcut `Ctrl+Shift+F5`);
|
||||
2. Run simulation until stopped by the testbench or manually (keyboard shortcut `F3`);
|
||||
3. Run simulation for the time interval specified to the right of the button (keyboard shortcut `Shift+F2`);
|
||||
4. Relaunch simulation (no default keyboard shortcut, but one can be assigned in the settings);
|
||||
5. Close simulation.
|
||||
|
||||
Отличие сброса симуляции от её перезапуска заключается в следующем. При сбросе симуляции очищаются промоделированные значения добавленных на временную диаграмму сигналов (сами сигналы остаются на месте), при этом время симуляции перемещается на нулевую отметку (т.е симуляция начнется заново). Подобное действие может быть необходимо в случае отладки, или же если посреди моделирования вы добавили на временную диаграмму новые сигналы, и хотите увидеть их поведение с самого начала симуляции. При сбросе симуляции не выполняется компиляция исходников (даже если их содержимое было изменено).
|
||||
The difference between restarting and relaunching the simulation is as follows. When the simulation is restarted, the simulated values of all signals added to the waveform are cleared (the signals themselves remain), and the simulation time is reset to zero (i.e., the simulation starts over). This may be necessary during debugging, or when you have added new signals to the waveform in the middle of a simulation and want to see their behavior from the beginning. Restarting does not recompile the source files, even if their contents have been changed.
|
||||
|
||||
Перезапуск симуляции похож на закрытие симуляции и повторное её открытие. При этом, если в исходниках происходили изменения — файлы будут перекомпилированы. Обратите внимание, что Vivado в первую очередь обнаруживает только изменения, сделанные из собственного редактора. В случае, если файлы были изменены извне (в особенности это касается `mem`-файлов, которые начинают использоваться с четвертой лабораторной работы) — Vivado может не обнаружить новых изменений. В случае, если симуляция ранее уже запускалась и с тех пор Vivado не обнаружил изменений в файлах — повторная компиляция не производится, и симуляция запускается средствами уже скомпилированных объектов. В случае, если изменения были сделаны извне, но Vivado их не обнаружил, можно очистить предыдущую сборку, нажав правой кнопкой мыши по `Simulation` в окне `Flow Navigator` и выбрав `Reset Behavioral Simulation` (см. _рис. 4_).
|
||||
Relaunching the simulation is similar to closing and reopening it. If source files have been changed, they will be recompiled. Note that Vivado primarily detects only changes made through its own editor. If files were modified externally (this is especially relevant for `mem` files, which start being used from the fourth lab assignment), Vivado may not detect the new changes. If the simulation was previously launched and Vivado has not detected any changes in the files since then, the sources are not recompiled and the simulation runs using the previously compiled objects. If changes were made externally but Vivado did not detect them, you can clear the previous build by right-clicking `Simulation` in the `Flow Navigator` and selecting `Reset Behavioral Simulation` (see _Fig. 4_).
|
||||
|
||||

|
||||
|
||||
_Рисунок 4. Сброс файлов симуляции._
|
||||
_Figure 4. Resetting simulation files._
|
||||
|
||||
Таким образом, в случае если вы добавили сигналы на временную диаграмму, и хотите увидеть их поведение с нулевого момента времени, или же вы хотите очистить лог сообщений и увидеть сообщения только до определенного момента (т.е. все действия, которые не связаны с повторной компиляцией исходных кодов), имеет смысл сбросить симуляцию и выполнить моделирование повторно.
|
||||
Therefore, if you have added signals to the waveform and want to see their behavior from time zero, or if you want to clear the message log and see only the messages up to a certain point (i.e., perform any action that does not involve recompiling source files), it makes sense to restart the simulation and run it again.
|
||||
|
||||
В случае, если вы изменили исходный код какого-то из модулей, и хотите выполнить моделирование обновленного кода, симуляцию можно закрыть и запустить повторно теми же способами, которыми вы запустили её в прошлый раз, либо перезапустить симуляцию в с помощью кнопки `4`, представленной на _рис. 3_.
|
||||
If you have modified the source code of a module and want to simulate the updated code, you can close the simulation and relaunch it using the same methods as before, or relaunch it using button `4` shown in _Fig. 3_.
|
||||
|
||||
> Если вы изменили модуль верхнего уровня в `Simulation Sources`, вам необходимо закрыть текущую симуляцию. Без этого новая не сможет запуститься и будет выдавать ошибку "boost filesystem remove: Процесс не может получить доступ к файлу". Подробнее об этой ошибке рассказано можно прочесть в "[Списке типичных ошибок в Vivado](../Other/FAQ.md)".
|
||||
> If you have changed the top-level module in `Simulation Sources`, you must close the current simulation first. Without doing so, a new simulation cannot start and will produce the error "boost filesystem remove: The process cannot access the file". More information about this error can be found in the "[List of Common Vivado Errors](../Other/FAQ.md)".
|
||||
|
||||
Подробнее о поиске ошибок и работе с временной диаграммой рассказано в главе "[Руководство по поиску функциональных ошибок](05.%20Bug%20hunting.md)".
|
||||
More information about debugging and working with the waveform viewer is provided in the chapter "[Guide to Finding Functional Errors](05.%20Bug%20hunting.md)".
|
||||
|
||||
Reference in New Issue
Block a user