Рекомендуем

Ключевые слова:
ПЛИС
Язык Verilog в проектировании встраиваемых систем на FPGAСоловьев В.В. Язык Verilog в проектировании встраиваемых систем на FPGA
ПЛИС Xilinx. Языки описания аппаратуры VHDL и Verilog, САПР, приемы проектированияТарасов И.Е. ПЛИС Xilinx. Языки описания аппаратуры VHDL и Verilog, САПР, приемы проектирования
Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы XILINXЗотов В.Ю. Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы XILINX

Книга

Временной анализ программируемых логических интегральных схем

Тиражирование книги начато в 2018 г.
360 стр.
Формат 60х90/16 (145x215 мм)
Исполнение: в мягкой обложке
ISBN 978-5-9912-0709-6
ББК 32.852.3
УДК 621.38:[004.032.3+004.451.23+004.435]
Аннотация

Рассмотрены основные принципы работы с временным анализатором TimeQuest пакета Quartus фирмы Altera. Приведены теоретические основы статистического временного анализа цифровых систем на программируемых логических интегральных схемах (ПЛИС). Рассмотрены такие явления, как метастабильность регистров, пессимизм общих путей синхронизации, анализ синхросигналов как данные, латентность, неопределенность и перекос синхросигналов. Описаны методики создания временных ограничений (требований) на языках SDC и Tcl. Рассмотрены вопросы создания синхросигналов, виртуальных синхросигналов, групп синхросигналов, ограничений ввода-вывода, мультицикловых путей, максимальных и минимальных задержек, ложных путей и др. Показано применение средств временного анализа при проектировании цифровых систем на ПЛИС. Дано описание языка сценариев (скриптов) Tcl в случае его использования для временного анализа в пакете Quartus. В приложениях приведены описания команд языка SDC, расширения языка SDC в пакете Quartus, а также команд языка Tcl, относящихся к временному анализу.

Для разработчиков цифровых устройств и систем на основе ПЛИС, будет полезна преподавателям, аспирантам и студентам соответствующих специальностей вузов.

Оглавление

Предисловие

1. Начало работы с временным анализатором TimeQuest
1.1. Временной анализ в пакете Quartus с помощью анализатора TimeQuest
1.1.1. Настройки Quartus для выполнения временного анализа
1.1.2. Компиляция проекта для выполнения временного анализа
1.1.3. Запуск TimeQuest
1.1.4. Графический интерфейс GUI анализатора TimeQuest
1.1.5. Создание файла временных ограничений SDC
1.1.6. Корректировка файла временных ограничений SDC
1.2. Синхронизация ядра проекта
1.2.1. Получение помощи о командах SDC-файла
1.2.2. Определение синхросигналов источника (create_clock)
1.2.3. Просмотр результатов временного анализа
1.2.4. Диагностика временных ограничений
1.2.5. Определение групп синхросигналов (set_clock_groups)
1.2.6. Добавление команд derive_pll_clocks и derive_clock_uncertainty
1.3. Синхронизация ввода-вывода
1.3.1. Понятия виртуальных синхросигналов
1.3.2. Создание виртуальных синхросигналов (create clock)
1.3.3. Определение входных и выходных ограничении (set_input_delay, set_output_delay)
1.4. Анализ результатов
1.4.1. Итеративный метод анализа результатов
1.4.2. Отчеты анализатора TimeQuest
1.4.3. Временной анализ с помощью макроса Report All Summaries
1.4.4. Макросы TimeQuest
1.4.5. Отчеты пользователя
1.4.5.1. Отчет Report Timing Tree
1.4.5.2. Отчет Report False Path
1.4.5.3. Отчет Report Path
1.4.5.4. Отчет Report Exceptions
1.4.5.5. Отчет Report Bottlenecks
1.4.5.6. Отчет Report Net Timing
1.4.5.7. Задача Report Skew
1.4.5.8. Отчет Report Max Skew
1.4.5.9. Задача Report Net Delay
1.4.5.10. Отчет Report Metastability
1.4.5.11. Создание гистограммы временного запаса
1.4.5.12. Отчет Report Timing Closure Recommendations
1.4.6. Инструмент детального временного анализа report_timing
1.4.7. Отчеты спецификации
1.4.8. Отчеты специальных устройств FPGA
1.5. Выводы

2. Основы временного анализа
2.1. Терминология анализатора TimeQuest
2.1.1. Элементы временного анализа
2.1.2. Временной список соединений (Timing Netlist)
2.1.3. Пути синхронизации (Timing Paths)
2.1.4. Микрозадержки регистра (uTsu и uTh)
2.1.5. Отношения между синхросигналами
2.1.6. Фронт запуска и фронт захвата, отношение установки и отношение удержания
2.1.7. Время прибытия данных, требуемое время данных и временной запас
2.2. Проверки, выполняемые анализатором TimeQuest
2.2.1. Проверка установки синхросигналов
2.2.2. Проверка удержания синхросигналов
2.2.3. Проверка времени восстановления и времени удаления
2.3. Мультициклы и мультицикловые пути
2.4. Максимальная и минимальная задержки
2.4.1. Введение максимальных и минимальных задержек
2.4.2. Применение максимальных и минимальных задержек
2.4.3. Опасности применения максимальных и минимальных задержек
2.5. Метастабильность
2.5.1. Метастабильность регистров
2.5.2. Буферы против метастабильности регистров
2.5.3. Среднее время наработки на отказ (MTBF) из-за метастабильности регистров
2.5.4. Улучшение MTBF метастабильности
2.5.5. Управление метастабильностью
2.6. Удаление пессимизма общих путей синхронизации
2.7. Анализ синхросигналов как данные
2.8. Дополнительные параметры синхросигналов
2.8.1. Латентность синхросигналов
2.8.2. Неопределенность синхросигналов
2.9. Перекос синхросигналов
2.10. Выводы

3. Создание временных ограничений
3.1. Создание синхросигналов
3.1.1. Создание базовых синхросигналов (create_clock)
3.1.2. Автоматическое создание базовых синхросигналов (derive_clocks)
3.1.3. Создание виртуальных синхросигналов
3.1.4. Создание сгенерированных синхросигналов (create_generated_clock)
3.1.5. Автоматическое создание синхросигналов блока PLL (derive_pll_clocks)
3.1.6. Создание групп синхросигналов (set_clock_groups)
3.2. Создание ограничений ввода-вывода
3.2.1. Создание входных ограничений (set_input_delay)
3.2.2. Создание выходных ограничений (set_output_delay)
3.3. Создание мультицикловых путей (set_multicycle_path)
3.4. Определение максимальных и минимальных задержек (set_max_delay, set_min_delay)
3.5. Определение ложных путей (set_false_path)
3.6. Запрещение фронта синхронизации (set_disable_timing)
3.7. Определение задержки источника синхросигналов (set_clock_latency)
3.8. Определение неопределенности синхросигналов (derive_clock_uncertainty, set_clock_uncertainty)
3.9. Определение максимального перекоса синхросигналов (set_max_skew)
3.10. Создание ограничений сети (set_net_delay)
3.11. Изменение значений задержек по умолчанию (set_annotated_delay, set_timing_derate)
3.12. Определение активных синхросигналов (set_active_clock)
3.13. Определение формата времени (set_time_format)
3.14. Определение максимального размера анализируемого цикла (set_scc_mode)
3.15. Приоритет ограничений
3.15.1. Приоритет между различными ограничениями
3.15.2. Приоритет между равными ограничениями
3.15.3. Приоритет между многократными ограничениями одного и того же узла
3.15.4. Приоритет между созданными автоматически и пользовательскими ограничениями
3.16. Выводы

4. Применение временного анализа
4.1. Определение отношений установки и удержания по умолчанию
4.1.1. Прорисовка временных диаграмм на основании описаний в SDC-файлах
4.1.2. Определение отношений установки по умолчанию
4.1.3. Определение отношений удержания по умолчанию
4.1.4. Проверка вычисленных отношений установки и удержания по умолчанию с помощью анализатора TimeQuest
4.2. Некоторые особенности при определении отношений установки и удержания по умолчанию
4.2.1. Анализ отрицательного фронта
4.2.2. Периодичность
4.2.3. Отношение между несвязанными синхросигналами
4.2.4. Влияние фазового сдвига на установку и удержание
4.3. Применение мультициклов
4.3.1. Ослабление ограничений установки
4.3.2. Учет фазового сдвига
4.3.3. Определение отношений мультицикла
4.3.4. Применение мультицикла для модификации отношений установки
4.3.5. Определение отношения удержания по умолчанию в случае использования мультицикла
4.3.6. Применение мультицикла для модификации отношений удержания
4.3.7. Выполнение проверки задания значений мультицикла в TimeQuest
4.3.8. Проектирование с мультициклами
4.4. Синхронизация ввода-вывода
4.4.1. Создание виртуальных сигналов ввода-вывода
4.4.2. Добавление команд set_input_delay и set_output_delay для портов ввода-вывода
4.4.3. Определение отношений установки и удержания по умолчанию между синхросигналами FPGA и виртуальными синхросигналами
4.4.4. Добавление мультициклов
4.4.5. Определение значений задержек в опциях -min и -max
4.5. Выводы

5. Язык сценариев Tcl
5.1. Особенности языка Tcl
5.2. Элементы синтаксиса языка Tcl
5.2.1. Скрипты, команды, слова и комментарии
5.2.2. Вывод сообщений
5.2.3. Переменные
5.2.4. Подстановки и группирование аргументов
5.2.5. Выражения
5.2.6. Списки
5.2.7. Массивы
5.2.8. Управляющие структуры
5.2.9. Процедуры
5.2.9.1. Локальные и глобальные переменные
5.2.9.2. Значения по умолчанию
5.2.9.3. Переменное число аргументов
5.2.9.4. Вызов по ссылке
5.2.9.5. Создание новых управляющих структур
5.2.10. Фалы ввода-вывода
5.3. Реализация языка Tcl в программном обеспечении Quartus
5.3.1. Возможности языка Tcl в программном обеспечении Quartus
5.3.2. Пакеты команд языка Tcl в программном обеспечении Quartus
5.3.3. Получение помощи в пакетном режиме
5.3.4. Опции командной строки
5.3.5. Окно консоли Tcl
5.3.6. Маршрут процесса проектирования
5.4. Использование языка Tcl в программном обеспечении Quartus
5.4.1. Создание проекта и выполнение назначений
5.4.2. Компиляция проекта
5.4.3. Анализ отчетов
5.4.4. Доступ к аргументам командной строки
5.5. Применение языка Tcl для временного анализа
5.5.1. Наборы
5.5.2. Команды для работы с наборами
5.5.3. Генерация отчетов временного анализа
5.5.4. Определение максимальной частоты функционирования проекта
5.6. Выводы

Заключение
Приложения
Приложение A. Команды пакета sdc
all_clocks
all_inputs
all_outputs
all_registers
create_clock
create_generated_clock
derive_clocks
get_cells
get_clocks
get_nets
get_pins
get_ports
remove_clock_groups
remove_clock_latency
remove_clock_uncertainty
remove_disable_timing
remove_input_delay
remove_output_delay
reset_design
set_clock_groups
set_clock_latency
set_clock_uncertainty
set_disable_timing
set_false_path
set_input_delay
set_input_transition
set_max_delay
set_min_delay
set_multicycle_path
set_output_delay

Приложение Б. Команды пакета sdc_ext
derive_clock_uncertainty
derive_pll_clocks
get_assignment_groups
get_fanins
get_fanouts
get_keepers
get_nodes
get_partitions
get_registers
remove_annotated_delay
remove_clock
reset_timing_derate
set_active_clocks
set_annotated_delay
set_max_skew
set_net_delay
set_scc_mode
set_time_format
set_timing_derate

Приложение В. Команды пакета sta
add_to_collection
check_timing
create_report_histogram
create_slack_histogram
create_timing_netlist
create_timing_summary
delete_timing_netlist
enable_ccpp_removal
enable_sdc_extension_collections
get_available_operating_conditions
get_cell_info
get_clock_domain_info
get_clock_fmax_info
get_clock_info
get_datasheet
get_default_sdc_file_names
get_edge_info
get_edge_slacks
get_min_pulse_width
get_net_info
get_node_info
get_object_info
get_operating_conditions
get_operating_conditions_info
get_partition_info
get_path
get_path_info
get_pin_info
get_point_info
get_port_info
get_register_info
get_timing_paths
locate – 280
query_collection – 281
read_sdc
remove_from_collection
report_advanced_io_timing
report_bottleneck
report_clock_fmax_summary
report_clock_transfers
report_clocks
report_datasheet
report_ddr
report_exceptions
report_max_skew
report_metastability
report_min_pulse_width
report_net_delay
report_net_timing
report_partitions
report_path
report_rskm
report_sdc
report_skew
report_tccs
report_timing
report_ucp
set_operating_conditions
timing_netlist_exist
update_timing_netlist
use_timequest_style_escaping
write_sdc

Литература

Список сокращений

Предметный указатель