Генератор Регистровой Карты
Project description
regmapGen
regmapGen - это инструмент, который упрощает создание и поддержку Регистровой Карты для любого проекта на языке описания аппаратуры (HDL). Он позволяет описать карту регистров в одном файле, а затем сгенерировать HDL код, документацию, и другие элементы. Это позволяет эффективно устранять расхождения между различными аспектами разработки ИС - hardware, software и документацией, а также автоматизировать процесс разработки, верификации и переиспользования кода IP-блока.
Особенности
- Человеко-читаемые форматы ввода: JSON, YAML, EXCEL таблица или простая текстовая таблица
- Генерация HDL кода: SystemVerilog модуль с картой регистров, SV-Header или SV-package с define-макросами или параметрами, соответственно
- Генерация UVM регистровой модели и окружения для верификации
- Генерация документации: Markdown, AsciiDoc, Docx, HTML
- Генерация IP-XACT XML и CMSIS SVD описания регистров
- Генерация файлов, относящихся к software-части: C header, Python модуль
- Поддержка нескольких протоколов: APB, AXI-Lite, SPI, Avalon-MM
- Расширяемость: поддержка внешних генераторов
- API: cоздание пользовательского рабочего процесса с помощью API regmapGen
regmapGen документация доступна в ReadTheDocs.io.
Установка
В зависимости от вашей систем, исполняемый файл Python 3 может быть python
или python3
.
Если имеются ограничения с правами, можно использовать ключ --user
при установке.
Для установки последней версии:
python3 -m pip install -U regmapGen
Быстрый старт
Лучший способ быстро начать — создать шаблоны. Вы можете создать карту регистров в удобном для вас формате (выберите один из json
, yaml
, txt
, xls
) :
regmapGen -t yaml
Сгенерируется два файла: один файл с описанием регистров в выбранном формате regs.yaml
, и второй файл конфигурации - config
.
Карта регистров состоит из набора регистров, отображенных в память (также называемых как Control and Status Regiser - CSR), а регистры в свою очередь состоят из битовых полей. Например, карта регистров одного регистра в YAML выглядит так:
regmap:
- name: CTRL
description: Control register
address: 8
bitfields:
- name: BAUD
description: Baudrate value
reset: 0
width: 2
lsb: 0
access: rw
hardware: o
enums:
- name: B9600
description: 9600 baud
value: 0
- name: B38400
description: 38400 baud
value: 1
- name: B115200
description: 115200 baud
value: 2
YAML файл также может быть сгенерирован из Excel таблицы. Детали доступны в примере.
Чтобы узнать больше о регистрах, битовых полях и их атрибутах, пожалуйста, ознакомьтесь с документацией на странице Регистровая карта.
regmapGen - это инструмент, ориентированный на файлы конфигурации. По умолчанию он использует ini-файл конфигурации под названием config. В этом файле указываются все необходимые параметры для генерации: входной файл карты регистров, глобальные параметры и выходной файл (таргет). Вот пример:
[globcfg]
data_width = 32
address_width = 16
register_reset = sync_pos
[sv_module]
path = regs.sv
interface = axil
generator = SystemVerilog
[c_header]
path = regs.h
generator = CHeader
Для получения более подробной информации о файле config
, посмотрите страницу Конфигурационный файл, а для более общей информации о процессе ознакомтесь с разделом Введение.
config
также действует как сценарий сборки для regmapGen, поэтому просто запустите его в директории с файлом config
:
regmapGen
И далее произойдет "магия".
Есть дополнительные опции для замены рабочей директории, карты регистров или файла конфигурации - для получения справки просто запустите:
regmapGen -h
Если вы ищете дополнительные примеры, пожалуйста, проверьте директорию examples
.
Разработка
Пожалуйста, ознакомьтесь с Руководством разработчика.
Для PyPi:
rm -rf dist
pip3 install -e .
python3 setup.py sdist
twine upload dist/*
Лицензия
regmapGen лицензирован под Лицензией MIT.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file regmapGen-1.1.2.tar.gz
.
File metadata
- Download URL: regmapGen-1.1.2.tar.gz
- Upload date:
- Size: 216.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 502f4130362124122e1c4d00963d7ea8d315c517ac584f225fabc92fd60f6502 |
|
MD5 | 5068a7b5613ac0ddbc3d776c678cb774 |
|
BLAKE2b-256 | 5cf89d106de84f8ba5ad6b9a52bd489405de3ad7c6ce3e83b8e246f538382f52 |