Arcas在线EDA MCP服务器
MCP(模型上下文协议)服务器,用于与Arcas OnlineEDA平台交互,这是一个全面的基于网络的电子设计自动化工具套件,用于形式验证、等效性检查、功耗分析、安全验证和FPGA设计。
概述
此MCP服务器通过web自动化提供对Arcas OnlineEDA平台的编程访问,使AI助手和自动化工作流程能够:
- 通过智能项目类型检测创建和管理EDA项目
- 上传具有自动格式识别功能的设计文件
- 使用可定制的参数执行各种验证类型
- 无缝导航平台
- 使用大量示例匹配处理自然语言查询
- 通过定义良好的URI访问平台资源
特性
核心能力
- 形式验证:验证设计属性、断言和安全要求
- 等价性检验:比较RTL和门级设计之间的功能等效性
- 功率分析:分析和优化动态和静态功耗
- 安全验证:检测漏洞、侧通道和信息泄漏
- FPGA验证:Xilinx、Intel/Altera设计的平台特定验证
可用工具
- arcas_onlineed_navigation -导航平台部分
- 行动: home, projects, new-project, documentation, settings - 具有会话状态保存功能的智能导航
- arcas_onlineed_project -全面的项目管理
- 行动: create, open, list, delete - 项目类型: formal, equivalence, power, security, fpga - 从上下文自动检测项目类型
- arcas_onlineed_upload_file -智能文件上传
- 支持的格式:Verilog(.v)、SystemVerilog(.sv)、VHDL(.vhd/.VHDL) - 约束文件:用于定时和放置的SDC、XDC - 自动文件类型检测
- arcas_onlineed_run_验证 -高级验证执行
- 类型: formal, equivalence, power, security, fpga - 可配置参数:超时、深度、特定属性 - 实时进度监控
- arcas_onlineed_natural_语言 -人工智能驱动的自然语言界面
- 用于高置信度匹配的广泛示例数据库 - 工作流程建议和多步骤指导 - 情境感知建议
可用资源
通过以下URI访问平台数据:
arcas://projects-以JSON格式列出所有项目arcas://verification-results-最新验证结果arcas://platform-status-当前平台和连接状态arcas://documentation-Markdown中的平台文档
安装
# Clone the repository
git clone
cd arcas-onlineeda-mcp
# Install dependencies
npm install
# Build the server
npm run build
# Optional: Run setup script for browser dependencies
npm run setup配置
环境变量
创建一个 .env 项目根目录中的文件:
# Arcas OnlineEDA credentials (optional - will prompt if not set)
ONLINEEDA_USERNAME=your_username
ONLINEEDA_PASSWORD=your_password
# Browser settings
ONLINEEDA_HEADLESS=true # Set to false to see browser actions
ONLINEEDA_TIMEOUT=30000 # Page load timeout in ms
# Logging
LOG_LEVEL=info # Options: error, warn, info, debug
LOG_FILE=arcas-onlineeda.log # Log file locationMCP配置
添加到您的MCP设置文件(例如。, ~/.mcp/settings.json):
{
"mcpServers": {
"arcas-onlineeda": {
"command": "node",
"args": ["/path/to/arcas-onlineeda-mcp/dist/index.js"],
"env": {
"ONLINEEDA_USERNAME": "your_username",
"ONLINEEDA_PASSWORD": "your_password"
}
}
}
}使用示例
基本工具使用
创建正式验证项目
{
"tool": "arcas_onlineeda_project",
"arguments": {
"action": "create",
"projectName": "risc_v_core_verification",
"projectType": "formal"
}
}上传多个设计文件
{
"tool": "arcas_onlineeda_upload_file",
"arguments": {
"projectId": "proj_123",
"filePath": "./rtl/cpu_core.v",
"fileType": "verilog"
}
}运行安全验证
{
"tool": "arcas_onlineeda_run_verification",
"arguments": {
"projectId": "proj_123",
"verificationType": "security",
"options": {
"timeout": 600,
"properties": ["information_leakage", "timing_attacks", "power_analysis"]
}
}
}自然语言示例
自然语言界面可以理解各种各样的查询:
项目创建查询
- “我想为我的CPU设计创建一个新的正式验证项目”
- “让我们开始GPU控制器的功耗分析项目”
- “在RTL和门级网表之间设置等效性检查”
- “为我的AES加密模块创建安全验证项目”
验证查询
- “检查我的RISC-V内核是否符合所有安全特性”
- “验证优化设计在功能上与原始设计等效”
- “分析不同操作模式下的功耗”
- “查找我的加密模块中的安全漏洞”
- “运行20个循环深度的正式验证”
文件操作查询
- “上传我的Verilog文件到内存控制器”
- “将SystemVerilog测试台添加到项目中”
- “导入SDC时间限制”
- “从设计目录加载所有RTL文件”
导航和状态查询
- “显示我的所有验证项目”
- “转到文档”
- “我当前的验证状态如何?”
- “导航到项目设置”
复杂的工作流查询
- “我需要验证我的AES加密模块是否符合FIPS标准”
- “比较优化前后的功耗”
- “为我的SoC设计建立完整的验证流程”
- “帮助我调试形式验证中失败的断言”
访问资源
// List all projects
{
"action": "read_resource",
"uri": "arcas://projects"
}
// Check platform status
{
"action": "read_resource",
"uri": "arcas://platform-status"
}
// Get documentation
{
"action": "read_resource",
"uri": "arcas://documentation"
}高级用法
工作流程自动化
通过链接工具创建复杂的工作流程:
// Complete verification workflow
const workflow = [
{
tool: "arcas_onlineeda_project",
args: { action: "create", projectType: "formal", projectName: "soc_verification" }
},
{
tool: "arcas_onlineeda_upload_file",
args: { filePath: "./rtl/soc_top.v", fileType: "verilog" }
},
{
tool: "arcas_onlineeda_upload_file",
args: { filePath: "./constraints/timing.sdc", fileType: "constraints" }
},
{
tool: "arcas_onlineeda_run_verification",
args: { verificationType: "formal", options: { depth: 30, timeout: 1200 } }
}
];自定义验证属性
定义目标验证的特定属性:
{
"tool": "arcas_onlineeda_run_verification",
"arguments": {
"projectId": "proj_456",
"verificationType": "formal",
"options": {
"properties": [
"assert property (@(posedge clk) req |-> ##[1:3] ack);",
"assert property (@(posedge clk) !overflow);"
],
"depth": 50
}
}
}建筑
服务器采用模块化架构:
arcas-onlineeda-mcp/
├── src/
│ ├── index.ts # Main server entry point
│ ├── tools/ # Tool implementations
│ │ ├── base.ts # Abstract tool class
│ │ ├── navigate.ts # Navigation tool
│ │ ├── project.ts # Project management
│ │ ├── upload-file.ts # File upload handling
│ │ ├── run-verification.ts # Verification execution
│ │ └── natural-language.ts # NLP interface
│ ├── utils/ # Utility modules
│ │ ├── browser.ts # Puppeteer browser management
│ │ └── logger.ts # Winston logging
│ └── types/ # TypeScript type definitions
├── package.json
├── tsconfig.json
└── README.md关键组件
- 浏览器管理器:处理Puppeter生命周期、身份验证和页面导航
- 工具基类:提供一致的验证和错误处理
- 语言处理器:广泛的示例匹配和意图检测
- 资源提供程序:通过MCP资源提供平台数据
- 会话管理器:维护登录状态和项目上下文
发展
# Run in development mode with hot reload
npm run dev
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Lint code
npm run lint
# Format code
npm run format
# Type check
npm run typecheck
# Build for production
npm run build添加新工具
- 创建一个新的工具类来扩展
AbstractTool - 实施所需方法:
getName(),getDescription(),execute() - 将工具添加到服务器的工具映射中
- 更新自然语言示例
故障排除
常见问题
浏览器连接
Error: Failed to launch browser解决方案:安装Chrome/Chromium或运行 npm run setup
身份验证失败
Error: Login failed解决方案:
- 验证环境变量中的凭据
- 检查帐户是否在OnlineEDA上处于活动状态
- 尝试手动登录
ONLINEEDA_HEADLESS=false
未找到元素
Error: Waiting for selector failed解决方案:
- 平台UI可能已更改
- 检查互联网连接
- 增加超时值
调试模式
启用详细日志记录:
LOG_LEVEL=debug npm run dev查看浏览器操作:
ONLINEEDA_HEADLESS=false npm run dev性能提示
- 尽可能重用项目会话
- 批量文件上传以获得更好的性能
- 对长时间运行的验证使用适当的超时
- 为频繁访问的资源启用缓存
安全考虑
- 凭证:安全地存储在环境变量中
- 浏览器隔离:在沙盒Chromium实例中运行
- 审计日志:所有记录有时间戳的操作
- 会话管理:关机时自动注销
- 数据隐私:除日志外,没有本地存储的数据
贡献
我们欢迎捐款!请按照以下步骤操作:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交更改(
git commit -m 'Add amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 打开拉取请求
开发指南
- 为新功能编写测试
- 更新文档
- 遵循TypeScript的最佳实践
- 为新功能添加自然语言示例
- 确保向后兼容性
支持
- 问题:通过GitHub Issues报告bug
- 文档:通过访问
arcas://documentation - 例子:有关详细示例,请参阅自然语言工具
- 社区:加入我们的Discord服务器
许可证
MIT许可证-有关详细信息,请参阅许可证文件
致谢
- Arcas Microelectronics用于在线EDA平台
- MCP框架的模型上下文协议团队
- 浏览器自动化工具的Puppeteer团队
