C

CircuitGen_Parameters

CircuitGen_Parameters

Alt

Данная библиотека предоставляет доступ для работы с 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/.

Структура документации

Документация содержит:

  • Описание классов и функций
  • Описание параметров и возвращаемых значений
  • Примеры использования
  • Информацию о зависимостях

Руководство по документированию

Если вы хотите внести вклад в проект, пожалуйста, ознакомьтесь с руководством по внесению изменений, которое содержит информацию о стиле документирования кода.