2 недели назад История
README.md

SOC Design Challenge 2024(Yadro)

трек: Системное программирование

команда: InnoSystemC

место: 4

О ЧЕМ ТРЕК

Системные программисты решают много интересных и амбициозных задач в маршруте проектирования систем на кристалле (СнК). Современные СнК включают в себя большое количество разнообразных подсистем — от низкоскоростной периферии до всевозможных ускорителей. На ранних этапах проектирования основной вызов для команд — это проверка соответствия заявленным требованиям, то есть верификация цифровой аппаратуры. При этом системные программисты первыми начинают разрабатывать всевозможные пользовательские функциональные сценарии, которые будут использованы в СнК. С помощью функциональных эмуляторов и RTL-симуляторов они могут проводить исследования и запускать различные сценарии проверки.

ЗАДАЧИ ТРЕКА

Участники смогут проявить свои возможности и таланты для решения задач функциональной верификации со стороны software-разработки. На основе функциональной модели СнК необходимо разработать на языке С сценарии проверки блоков, входящих в прототип исследуемого СнК. Подключить в режиме косимуляции дополнительное оборудование и оценить полноту проверок путем сбора покрытия.

КРИТЕРИИ ОЦЕНИВАНИЯ

Успех в соревнования будет определяться:

  • полнотой проверок для каждого блока из состава СнК;
  • скоростью разработки функциональных сценариев;
  • знаниями языка SystemVerilog и С в разработке сценариев тестового окружения с использованием функциональных эмуляторов и RTL-симуляторов в режиме косимуляции;
  • архитектурным подходом в разработке библиотек и программ на языке С.
  • Кроме процессора, участникам доступно окружение для тестирования и оценки производительности.

ТРЕБУЕМЫЙ ОПЫТ И НАВЫКИ

  • опыт разработка программ на С;
  • знакомство с языком описания аппаратуры SystemVerilog;
  • знакомство с Python для задач автоматизации проверок.

Структура репозитория

├───apb_uart
│   ├───cmake
│   ├───rtl
│   │   ├───sim.sv -  Top модуль. Здесь подключаются: renode, apb_uart, uart_requester и другие модули
│   │	├───apb_uart.sv
│   │	├───uart_interrupt.sv
│   │	├───uart_rx.sv
│   │	├───uart_rx.sv
│   │	└───io_generic_fifo.sv
│   └───sim
├───common
│	├───irq.c irq.h - обработка прерываний.
│	├───sc_print.c sc_print.h - реализация ввода/вывода в консоль
│	└───mem.h - обращения к памяти.
├───renode
│   ├───src
│       ├───Plugins
│           ├───VerilatorPlugin
│               └───VerilatorIntegrationLibrary
│                   ├───hdl
│                   │   ├───renode.sv - Обработка входящих запросов по DPI
│                   │   ├───imports
│                   │   │   └───renode_pkg.sv - Реализация DPI функций для взаимодействия Renode и Verilator.
│                   │   └───modules
│                   │       ├───apb3
│                   │       ├───axi
│                   │       ├───uart
│                   │       │   └───uart_requester.sv - Реализация коннектора DPI для UART, этот модуль предстоит реализовать!
│                   │       └──renode_interrupts.sv - Передача сигналов прерываний между Renode и Verilator.
│                   └───src
│                       ├───buses
│                       ├───communication
│                       └───peripherals
│
│       
│       
├───tests - Директория с тестами UART
│   └───apb_uart_example
│   	├───app.c - код теста
│	└───Makefile - мейкфайл теста
└───Makefile - Корневой мейкфайл проекта с таргетами для сборки и запуска тестов

Описание

Хакатан SOC design Challenge 2024 от компании Yadro. Трек "Системное программирование". Команда InnoSystemC - 4 место

Конвейеры
0 успешных
0 с ошибкой