Проектирование и верификация цифровых устройств с помощью SystemC
Зачем изучать HDL-языки сегодня?
Что такое SystemC?
Уровни представления аппаратуры
Gates
Сравнение языков описания аппаратуры
Классический процесс разработки
Инкрементальное улучшение модулей
Процесс разработки при системном проектировании
Основные компоненты SystemC
Состав библиотеки SystemC
XOR
NAND header file
NAND source code file
XOR header file
XOR header file
XOR source code file
Соединение модулей: сигналы
Симулятор SystemC
Симулятор SystemC
Симулятор SystemC: запись временных диаграмм
Симулятор SystemC: просмотр временных диаграмм
Синтез SystemC
Синтез SystemC
Синтезируемое подмножество SystemC
Синтезируемое подмножество SystemC
Транслятор sc2v
Транслятор sc2v
Транслятор sc2v
Обзор лабораторных работ
767.55K
Category: electronicselectronics

SystemC 2020 (1)

1. Проектирование и верификация цифровых устройств с помощью SystemC

2. Зачем изучать HDL-языки сегодня?

Hardware description language (HDL) —
специализированный язык программирования,
используемый для описания структуры и
поведения цифровых логических схем.
Зачем изучать HDLязыки сегодня?
1.
Языки описания аппаратуры (HDL) нужны
для разработки “прошивок” FPGA / ASIC /
SoC
2.
FPGA / ASIC vs CPU/GPU:
+ Производительность/Ватт
− Сложность реализации, “другая”
логика вычислений
3.
Altera и Xilinx выпускают системы-накристалле (SoC) ARM+FPGA

3. Что такое SystemC?

• SystemC – язык моделирования и
проектирования цифровых устройств,
основанный на C++ (фактически
выполнен в виде библиотеки для C++)
• Развивается с 2000 года, последняя
версия – 2.3.3 (11.05.2018)

4. Уровни представления аппаратуры

5. Gates

6. Сравнение языков описания аппаратуры

7. Классический процесс разработки

Классический процесс подразумевает создание
алгоритма/модели сначала в программной реализации.
При ручном кодировании в HDL требуется тщательный
контроль ошибок:
Классический
процесс
разработки

8. Инкрементальное улучшение модулей

9. Процесс разработки при системном проектировании

10. Основные компоненты SystemC

11. Состав библиотеки SystemC

12. XOR

13. NAND header file

14. NAND source code file

15. XOR header file

16. XOR header file

17. XOR source code file

18. Соединение модулей: сигналы

• объявление:
sc_signal<sc_uint<4> > ctr_val;
• соединение:
module1.ctr_in(ctr_val);
module2.ctr_out(ctr_val);
• Каждый порт должен быть
подключён к одному сигналу, иначе
не будет работать симуляция. Сигнал
не может быть подключён к
нескольким выходным портам.
• особый сигнал – осциллятор:
sc_clock clk("clk", 5, SC_PS);

19. Симулятор SystemC

Кроме исследуемого модуля, создаётся
модуль теста, который:
• генерирует входные сигналы для
модуля
• проверяет выходные сигналы модуля

20. Симулятор SystemC

21. Симулятор SystemC: запись временных диаграмм

22. Симулятор SystemC: просмотр временных диаграмм

23. Синтез SystemC

• Verilog, VHDL - стандарты де-факто
для представления на уровне RTL
• Под синтезом SystemC понимается
трансляция на уровень RTL
Verilog/VHDL из исходных кодов
SystemC

24. Синтез SystemC

Проприетарные и “умные” (трансляция не с RTL-уровня
SystemC):
• Catapult C
• Forte DS
Синтез SystemC
• Xilinx Vivado HLS
Open-Source и “глупые” (трансляция с RTL-уровня
SystemC на RTL-уровень Verilog/VHDL):
• Sc2v
• sc2vhdl
• sysc2v

25. Синтезируемое подмножество SystemC

НЕ синтезируются конструкции SystemC
для симуляции:
• sc_thread
• sc_start
• sc_main
• sc_trace

26. Синтезируемое подмножество SystemC

НЕ синтезируются конструкции C++:
Синтезируемое
подмножество
SystemC
• объявления классов отличных от
SC_MODULE
• динамическое выделение памяти и
указатели
• исключения
• рекурсия
• функции стандартной библиотеки
• наследование
• вещественные типы данных

27. Транслятор sc2v

Транслирует SystemC RTL в Verilog RTL
Транслятор sc2v
Каждый SystemC-модуль должен
состоять из .h файла с объявлениями
портов, сигналов и процессов и .cppфайла c определением процессов
Использование: sc2v.bat <имя модуля>

28. Транслятор sc2v

Поддерживаемые типы данных:
• bool
• sc_uint<>
• sc_int <>
• sc_biguint <>
• sc_bigint<>

29. Транслятор sc2v

Ограничения:
• нет поддержки функций
• при записи в порт надо всегда
использовать метод .write()
• нет поддержки портов inout
• нет поддержки guard define
• нет поддержки clk.pos() (надо
использовать sensitive_pos)

30. Обзор лабораторных работ

1. Ознакомление с библиотекой
SystemC + индивидуальное задание
Обзор лабораторных
работ
2. Синтез RTL-моделей устройств на
SystemC
3. Высокоуровневое моделирование
обработки потоков данных с
использованием языка SystemC
English     Русский Rules