CircuitGen_Parameters
Данная библиотека предоставляет доступ для работы с Berkeley-abc с помощью надстройки в виде pipe для работы с командной строкой ОС Linux. Также библиотека поддерживает интеграцию с OpenLane для выполнения полного маршрута проектирования ASIC от Verilog до GDSII и расчета параметров схем на каждом этапе.
Функциональность
Библиотека предоставляет следующие возможности:
Работа с Yosys и ABC
- Оптимизация Verilog с помощью Yosys
- Синтез и оптимизация схем с помощью ABC
- Конвертация форматов (Verilog, FIRRTL)
Работа с OpenLane
- Создание и настройка проектов OpenLane
- Запуск полного маршрута проектирования от Verilog до GDSII
- Запуск отдельных этапов маршрута (синтез, планировка, размещение, CTS, трассировка)
- Сбор и анализ параметров схемы на каждом этапе
- Генерация отчетов о площади, мощности, временных характеристиках и других параметрах
- Инструмент
CircuitGenToOpenLane
для запуска схем через OpenLane с указанием пути до JSON-файла с параметрами и выбором шага
CLI интерфейс
- Интерфейс командной строки
CircuitGenCLI
на базе библиотеки alice - Удобное управление проектами OpenLane, Verilog-файлами и метриками схем
- Интерактивный режим с сохранением истории команд и автодополнением
- Запуск всех основных операций библиотеки через единый интерфейс
Установка и настройка
Зависимости
- 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;
Пример использования CircuitGenToOpenLane
Инструмент CircuitGenToOpenLane
позволяет запускать полный маршрут или отдельные шаги OpenLane, указывая путь к Verilog-файлу и JSON-файлу с конфигурацией:
# Запуск полного маршрута
CircuitGenToOpenLane path/to/design.v configs/config.json
# Запуск только до этапа размещения
CircuitGenToOpenLane path/to/design.v configs/config.json placement
# Запуск только синтеза с использованием JSON-конфигурации
CircuitGenToOpenLane path/to/design.v configs/high_speed_config.json synthesis
Подробная документация по использованию инструмента доступна в docs/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/cli_interface.md.
Документация
Документация проекта генерируется с использованием Doxygen.
Генерация документации
Чтобы сгенерировать документацию, вам понадобится установленный Doxygen. После установки выполните:
# Используя скрипт
./generate_docs.sh
# Или через CMake
cmake --build build --target docs
Сгенерированная документация будет доступна в директории docs/html/
.
Структура документации
Документация содержит:
- Описание классов и функций
- Описание параметров и возвращаемых значений
- Примеры использования
- Информацию о зависимостях
Руководство по документированию
Если вы хотите внести вклад в проект, пожалуйста, ознакомьтесь с руководством по внесению изменений, которое содержит информацию о стиле документирования кода.