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
导入 docker镜像(这里可以使用外网机器下载导出)
docker load -i pgvector.tardocker images
创建相关目录
cd$SNPSAI_COPILOT_HOME/linux64/copilot/binmkdir -p docker/postgresql/{data,init}mkdir -p docker/knowledge# 将安装包的knowledge移过来
创建环境变量文件
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
创建 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
创建 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
启动
# 启动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');"
导入数据
配置 yaml指向路径
cp .synopsys_copilot.yaml ~/mkdir ~/.synopsys_copilotcat ~/.synopsys_copilot.yaml
准备 generic_tool.yaml
cp$SNPSAI_COPILOT_HOME/linux64/copilot/bin/_internal/config/generic_tool.yaml ~/.synopsys_copilot/# hostname、port、password可以根据实际情况填写
初始化数据库
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
使用脚本导入知识库
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
验证
$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
问题点
这里数据库用户 copilot_user的密码是所有用户都可以看到的,实际部署可能需要封装。知识库文件较少,目前有的这几个都没啥用。 软件发送的Embedding API 请求格式不同,需要修改服务端。
说明:软件源于网络,仅作学习交流使用,无任何商业用途,不提供分享。教程为本人使用过程的总结,并非官方文档,如有错误,可以指出。















































































