夜雨聆风学习资料网

ARTICLE · 1313850

Synopsys.ai Copilot安装教程

Synopsys.ai Copilot安装教程

简介

Synopsys.ai Copilot 是 Synopsys 推出的 AI 智能辅助工具,结合大语言模型(LLM)和检索增强生成(RAG)技术,为芯片设计工程师提供智能问答、技术文档检索、EDA 工具使用指导及问题分析等功能。支持接入 OpenAI、DeepSeek 等 AI 模型服务,帮助工程师快速获取专业知识,提高芯片设计与仿真效率。

主要功能:

  • AI 智能问答: 通过自然语言交互,解答 EDA 工具使用及芯片设计相关问题。
  • 专业知识库检索: 结合 RAG 技术,快速检索 Synopsys 技术文档并生成回答。
  • EDA 工具辅助: 支持 Copilot、PrimeSim Pro、PrimeSim SPICE 等工具模式,辅助仿真分析与问题排查。
  • 多模型支持: 可通过兼容接口接入 OpenAI、DeepSeek 等大语言模型服务。
  • 企业多用户部署: 支持多个 Linux 用户共享 PostgreSQL 知识库及 AI 模型服务。

系统部署架构图:

安装

  • 安装包相关
  • 安装 copilot (这里使用命令行进行安装)

配置

  • modulefile
#%Module1.0module-whatis    "Synopsys snps_ai_copilot_vY-2026.03-SP3"setenv           SNPSAI_COPILOT_HOME    $env(SYNOPSYS_HOME)/copilot/Y-2026.03-SP3prepend-path     PATH                   $env(SNPSAI_COPILOT_HOME)/bin

部署postgres

  1. 导入 docker 镜像(这里可以使用外网机器下载导出)
docker load -i pgvector.tardocker images
  1. 创建相关目录
cd$SNPSAI_COPILOT_HOME/linux64/copilot/binmkdir -p docker/postgresql/{data,init}mkdir -p docker/knowledge# 将安装包的knowledge移过来
  1. 创建环境变量文件
POSTGRES_PASSWORD=$(openssl rand -hex 24)COPILOT_DB_PASSWORD=$(openssl rand -hex 24)COPILOT_ADMIN_PGPASSWORD=$(openssl rand -hex 24)cat > .env.copilot <<EOF# PostgreSQLPOSTGRES_USER=postgresPOSTGRES_DB=postgres# PostgreSQL superuser passwordPOSTGRES_PASSWORD=${POSTGRES_PASSWORD}# Synopsys application user passwordCOPILOT_DB_PASSWORD=${COPILOT_DB_PASSWORD}# Synopsys administrator passwordCOPILOT_ADMIN_PGPASSWORD=${COPILOT_ADMIN_PGPASSWORD}# LicenseSNPSLMD_LICENSE_FILE=27000@licEOF
  1. 创建 PostgreSQL 初始化脚本
cat > docker/postgresql/init/01-init.sh <<'EOSQL'#!/bin/bashset -euo pipefail: "${POSTGRES_USER:?required}": "${POSTGRES_DB:?required}": "${COPILOT_DB_PASSWORD:?required}": "${COPILOT_ADMIN_PGPASSWORD:?required}"echo"Initializing Synopsys Copilot PostgreSQL..."psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" \  -v app_password="$COPILOT_DB_PASSWORD" \  -v admin_password="$COPILOT_ADMIN_PGPASSWORD" <<'SQL'CREATE ROLE copilot_admin LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE PASSWORD :'admin_password';CREATE ROLE copilot_user  LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE PASSWORD :'app_password';CREATE DATABASE copilot_docs OWNER copilot_admin;CREATE DATABASE copilot_logs OWNER copilot_admin;\connect copilot_docsCREATE EXTENSION IF NOT EXISTS vector;GRANT CONNECT, TEMP ON DATABASE copilot_docs TO copilot_user;\connect copilot_logsCREATE EXTENSION IF NOT EXISTS vector;GRANT CONNECT, TEMP ON DATABASE copilot_logs TO copilot_user;SQLecho"PostgreSQL initialization completed."EOSQLchmod 755 docker/postgresql/init/01-init.sh
  1. 创建 Docker Compose file
cat > docker-compose-postgres.yml <<'EOF'services:  postgres:    image: pgvector/pgvector:0.8.7-pg16-bookworm    container_name: synopsys_copilot_postgres    restart: unless-stopped    environment:      POSTGRES_USER: ${POSTGRES_USER:-postgres}      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}      POSTGRES_DB: ${POSTGRES_DB:-postgres}      COPILOT_DB_PASSWORD: ${COPILOT_DB_PASSWORD:?COPILOT_DB_PASSWORD is required}      COPILOT_ADMIN_PGPASSWORD: ${COPILOT_ADMIN_PGPASSWORD:?COPILOT_ADMIN_PGPASSWORD is required}    ports:      - "127.0.0.1:5432:5432"    volumes:      - ./docker/postgresql/data:/var/lib/postgresql/data      - ./docker/postgresql/init:/docker-entrypoint-initdb.d:ro    healthcheck:test:        - CMD-SHELL        - pg_isready -U "$$POSTGRES_USER" -d "$$POSTGRES_DB"      interval: 10stimeout: 5s      retries: 10      start_period: 30sEOF
  1. 启动
# 启动docker compose \  --env-file .env.copilot \  -f docker-compose-postgres.yml \  up -d --pull never# 查看状态docker compose \  --env-file .env.copilot \  -f docker-compose-postgres.yml \  ps# 验证数据库docker exec synopsys_copilot_postgres \  psql -U postgres -d postgres \  -c "SELECT datname FROM pg_database      WHERE datname IN ('copilot_docs','copilot_logs');"

导入数据

  1. 配置 yaml 指向路径
cp .synopsys_copilot.yaml ~/mkdir ~/.synopsys_copilotcat ~/.synopsys_copilot.yaml
  1. 准备 generic_tool.yaml
cp$SNPSAI_COPILOT_HOME/linux64/copilot/bin/_internal/config/generic_tool.yaml ~/.synopsys_copilot/# hostname、port、password可以根据实际情况填写
  1. 初始化数据库
set -asource .env.copilotset +aexport COPILOT_ADMIN_PGUSER=copilot_adminexport PGHOST=127.0.0.1export PGPORT=5432export PGUSER="$POSTGRES_USER"export PGPASSWORD="$POSTGRES_PASSWORD"# 这里必须切换目录,不然会读取当前目录的.synopsys_copilot.yaml配置cd ~/$SNPSAI_COPILOT_HOME/linux64/copilot/bin/snpsai_copilot_admin_exec db init --type all
  1. 使用脚本导入知识库
cat > import-sch.sh <<'EOF'#!/bin/bashset -euo pipefail: "${SNPSAI_COPILOT_HOME:?SNPSAI_COPILOT_HOME must be set}"COPILOT_BIN="$SNPSAI_COPILOT_HOME/linux64/copilot/bin"KNOWLEDGE_DIR="$COPILOT_BIN/docker/knowledge"ADMIN_EXEC="$COPILOT_BIN/snpsai_copilot_admin_exec"FILES=(    copilot__ka_docs__Y-2026.03__20260409.sch    psim_pro__ka_docs__Y-2026.03__20260318.sch    psim_pro__ka_solvnetplus__all__20260623.sch    psim_spice__ka_docs__Y-2026.03__20260318.sch    psim_spice__ka_solvnetplus__all__20260623.sch)for file in"${FILES[@]}"; do    path="$KNOWLEDGE_DIR/$file"if [[ ! -f "$path" ]]; thenecho"ERROR: Missing SCH file: $path"exit 1fiecho"========================================"echo"Importing: $file"echo"========================================""$ADMIN_EXEC" docs restore "$path"doneecho"========================================"echo"All SCH imports completed."echo"========================================"EOFchmod +x import-sch.sh./import-sch.sh
  1. 验证
$SNPSAI_COPILOT_HOME/linux64/copilot/bin/snpsai_copilot_admin_exec docs list# 验证知识库数据docker exec synopsys_copilot_postgres \  psql -U postgres -d copilot_docs -c "SELECT    schemaname,    relname,    n_live_tupFROM pg_stat_user_tablesWHERE relname = 'ka_docs'ORDER BY schemaname;"# 检查向量字段docker exec synopsys_copilot_postgres \  psql -U postgres -d copilot_docs -c "SELECT    table_schema,    table_name,    column_name,    udt_nameFROM information_schema.columnsWHERE column_name LIKE 'v_textembedding%'ORDER BY table_schema;"

配置模型

vim ~/.synopsys_copilot/generic_tool.yaml

启动

snpsai_copilot -tool copilot
snpsai_copilot -tool psim_spice

问题点

  1. 这里数据库用户 copilot_user 的密码是所有用户都可以看到的,实际部署可能需要封装。
  2. 知识库文件较少,目前有的这几个都没啥用。
  3. 软件发送的Embedding API 请求格式不同,需要修改服务端。

说明:软件源于网络,仅作学习交流使用,无任何商业用途,不提供分享。教程为本人使用过程的总结,并非官方文档,如有错误,可以指出。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料