CircuitGen Parameters
Язык: Русский | English
Документация: Русский | English
Функционал: русский | English
Версионирование (SemVer): русский | English
Журнал изменений: русский | English
Вклад: русский | English
Запросы на слияние (MR): русский | English
Данная библиотека предоставляет доступ для работы с Berkeley-abc с помощью надстройки в виде pipe для работы с командной строкой ОС Linux. Также библиотека поддерживает интеграцию с OpenLane для выполнения полного маршрута проектирования ASIC от Verilog до GDSII и расчета параметров схем на каждом этапе.
Функциональность
Библиотека предоставляет следующие возможности:
Работа с Yosys и ABC
- Оптимизация Verilog с помощью Yosys
- Синтез и оптимизация схем с помощью ABC
- Конвертация форматов (Verilog, FIRRTL)
Работа с OpenLane
- Создание и настройка проектов OpenLane
- Запуск полного маршрута проектирования от Verilog до GDSII
- Запуск отдельных этапов маршрута (синтез, планировка, размещение, CTS, трассировка)
- Сбор и анализ параметров схемы на каждом этапе
- Генерация отчетов о площади, мощности, временных характеристиках и других параметрах
- Утилита
CircuitGenParameters(CMake-цельCircuitGenParameters_exe) для запуска схем через OpenLane; реализация вsrc/CircuitGenToOpenLane.cpp
CLI интерфейс
- Интерфейс командной строки
CircuitGenCLIна базе библиотеки alice - Удобное управление проектами OpenLane, Verilog-файлами и метриками схем
- Интерактивный режим с сохранением истории команд и автодополнением
- Запуск всех основных операций библиотеки через единый интерфейс
Новая структура и скрипты
-
scripts/config- source of truth для поддерживаемых ОС -
scripts/ci- entrypoint-скрипты CI (lint,tests,coverage,docsи др.) -
scripts/dev- локальные скрипты разработки -
scripts/setup- установка зависимостей по ОС -
scripts/docker- docker helper-скрипты -
scripts/docs- скрипты генерации документации -
scripts/release- скрипты релизной сборки/установки
Ключевые команды:
bash scripts/ci/generate-gitlab-os-matrix.sh --check
bash scripts/ci/run-task.sh lint
bash scripts/ci/run-task.sh tests
Подробнее: docs/README.md, docs/ru/BUILDING.md, docs/ru/HACKING.md, docs/ru/SCRIPTS.md.
Установка и настройка
Зависимости
- CMake 3.21 или выше
- C++17 совместимый компилятор
- Yosys
- Berkeley-abc
- Docker (для OpenLane)
- OpenLane (будет проверено и установлено скриптом)
Установка OpenLane
Для работы с OpenLane используйте скрипт проверки и установки:
chmod +x checkOpenLane.sh
./checkOpenLane.sh
Этот скрипт проверит наличие OpenLane и установит его, если необходимо.
Сборка библиотеки
mkdir build && cd build
cmake ..
make
Сборка с CLI интерфейсом
mkdir build && cd build
cmake .. -DBUILD_CLI=ON
make
Примеры использования
Пример работы с OpenLane через API
#include <OpenLaneUtils.hpp>
#include <map>
#include <string>
// Создание проекта OpenLane
OpenLaneUtils::createProject("my_project", "path/to/design.v", "/home/user");
// Настройка параметров проекта
std::map<std::string, std::string> config;
config["CLOCK_PERIOD"] = "10";
config["FP_CORE_UTIL"] = "50";
OpenLaneUtils::generateConfig("my_project", config, "/home/user");
// Запуск синтеза
OpenLaneUtils::runSynthesis("my_project", "/home/user");
// Получение метрик
OpenLaneUtils::CircuitMetrics metrics =
OpenLaneUtils::getMetrics("my_project", "run_latest", "/home/user");
// Вывод результатов
std::cout << "Площадь: " << metrics.area << " μm²" << std::endl;
std::cout << "Число ячеек: " << metrics.cellCount << std::endl;
Пример использования CircuitGenParameters
Утилита CircuitGenParameters (имя бинарника совпадает с CircuitGenGenerator / CircuitGenGraph) запускает полный маршрут или отдельные шаги OpenLane, указывая путь к Verilog-файлу и JSON-файлу с конфигурацией:
# Запуск полного маршрута
CircuitGenParameters path/to/design.v configs/config.json
# Запуск только до этапа размещения
CircuitGenParameters path/to/design.v configs/config.json placement
# Запуск только синтеза с использованием JSON-конфигурации
CircuitGenParameters path/to/design.v configs/high_speed_config.json synthesis
Подробная документация: docs/ru/openlane_integration.md (или docs/en/openlane_integration.md).
Пример использования CLI интерфейса
Инструмент CircuitGenCLI предоставляет интерактивный интерфейс командной строки для работы с библиотекой:
# Запуск CLI
./CircuitGenCLI
# Внутри CLI:
CircuitGen> create_project --name counter --verilog designs/counter.v
CircuitGen> config --clock_period 10 --core_util 50
CircuitGen> run_synthesis
CircuitGen> get_metrics
CircuitGen> print -m
Подробная документация по использованию CLI интерфейса доступна в docs/ru/cli_interface.md (англ.: docs/en/cli_interface.md).
Документация
Документация проекта генерируется с использованием Doxygen.
Генерация документации
Чтобы сгенерировать документацию, вам понадобится установленный Doxygen. После установки выполните:
# Используя скрипт
./generate_docs.sh
# Или через CMake
cmake --build build --target docs
Сгенерированная документация будет доступна в директории docs/html/.
Структура документации
Документация содержит:
- Описание классов и функций
- Описание параметров и возвращаемых значений
- Примеры использования
- Информацию о зависимостях
Руководство по документированию
Если вы хотите внести вклад в проект, ознакомьтесь с руководством по вкладу и стилем кода (в том числе правила Doxygen).