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