File contents FPGA 原型和板级 Bringup 技能
当用户需要进行 FPGA 原型验证或硅后板级验证时,启用此技能。提供从静态检查到系统测试的完整 bringup 流程和问题调试方法。
When to Activate
新 FPGA 原型项目启动
新 PCB 第一次上电 bringup
硅后芯片第一次测试
板级功能问题调试
量产前验证测试
步骤 1:静态检查(不开电)
一定要做,不开电检查出问题比上电烧器件好。
1.1 目视检查
做什么: 检查 PCB 外观和器件焊接。
检查项:
1.2 电源短路检查
做什么: 确认电源和地之间没有短路。
怎么做:
1. 万用表设置电阻档
2. 测量每个电源轨到地的电阻
3. 记录电阻值
4. 电阻 < 10Ω 可能短路,需要排查
输出: 电源电阻表
电源轨
电阻值
状态
VCC_3V3
1.2kΩ
正常
VCC_1V8
800Ω
正常
VCC_1V0
50Ω
⚠️ 检查
1.3 导通性检查
做什么: 确认所有关键网络连通。
检查项:
1.4 无源器件检查
做什么: 检查关键无源器件值正确。
检查项:
检查清单:
步骤 2:第一次上电
安全第一,电流限制,慢慢升压。
2.1 设置电源保护
做什么: 设置电源电流限制,防止烧坏。
怎么做:
1. 可编程电源设置电流限制
- 起始限制:100mA - 500mA(根据预期电流)
- 电压:从 0V 开始
2. 连接电源到板子
3. 准备万用表和示波器
2.2 缓慢上电
做什么: 缓慢升压,观察电流。
怎么做:
1. 从 0V 开始,缓慢升压
2. 观察电流变化
3. 每升 0.1V 停顿,观察
4. 到达目标电压后稳定
正常现象:
电流平滑上升
达到预期静态电流后稳定
没有突然跳变
异常现象:
电流突然跳变 → 立即断电
电流超过限制 → 立即断电
有冒烟/异味 → 立即断电
2.3 测量电源轨电压
做什么: 测量每个电源轨电压正确。
输出: 电源电压表
电源轨
预期值
实测值
压降
状态
VCC_3V3
3.3V
3.28V
0.02V
正常
VCC_1V8
1.8V
1.75V
0.05V
⚠️ 压降大
VCC_1V0
1.0V
1.01V
0.01V
正常
2.4 检查器件温度
做什么: 手摸或热像仪检查器件温度。
检查项:
检查清单:
步骤 3:时钟和复位测试
3.1 测量参考时钟
做什么: 示波器测量参考时钟。
测量项:
频率是否正确
幅度是否正确
占空比是否正确
边沿是否干净
输出: 时钟测量表
时钟
预期频率
实测频率
幅度
状态
REF_CLK
25MHz
25.01MHz
3.2V
正常
SYS_CLK
50MHz
49.98MHz
3.3V
正常
3.2 配置并测试 PLL
做什么: 配置 PLL,检查锁定。
步骤:
配置 PLL 分频系数
使能 PLL
等待锁定
测量输出频率
检查项:
3.3 测试复位
做什么: 测试复位信号时序正确。
测量项:
复位有效电平正确
复位释放电平正确
复位持续时间符合规格
复位释放顺序正确
检查清单:
步骤 4:配置接口测试
4.1 连接调试接口
做什么: 连接 JTAG/SWD 调试接口。
步骤:
连接调试器到板子
打开调试软件
尝试连接
检查项:
4.2 基本寄存器测试
做什么: 测试寄存器读写正确。
测试项:
1. 读取 ID 寄存器 → 值正确
2. 写入测试寄存器 → 写入成功
3. 回读测试寄存器 → 读出正确
4. 写入另一个值 → 读出正确
4.3 加载配置(FPGA)
做什么: 加载配置比特流。
步骤:
加载比特流到 FPGA
检查加载成功状态
检查 DONE 引脚状态
检查项:
⚠️ 如果这一步过不去,不要往下走,一定先解决。
检查清单:
步骤 5:模块逐个测试
从最简单到最复杂,一个模块测试通过再下一个。
5.1 GPIO 测试
测试项:
5.2 UART 测试
测试项:
5.3 I2C/SPI 测试
测试项:
5.4 存储器测试
测试项:
5.5 DDR 测试
测试项:
5.6 核心功能测试
测试项:
检查清单:
步骤 6:系统集成测试
6.1 模块间接口测试
测试项:
6.2 完整应用测试
测试项:
6.3 压力测试
测试项:
6.4 极限测试
测试项:
检查清单:
常见问题定位
问题 1:电源电流过大
可能原因:
排查步骤:
断电,测量电源地电阻
逐个断开电源域
找到短路区域
定位短路器件
问题 2:JTAG 连接不上
可能原因:
排查步骤:
测量每个信号线
测量电源电压
测量复位电平
降低 JTAG 速度
问题 3:PLL 不锁定
可能原因:
排查步骤:
示波器测量参考时钟
检查配置寄存器
测量 PLL 电源
问题 4:功能偶发错误
可能原因:
排查步骤:
降低工作频率
增加同步级数
测量电源纹波
调试方法论
二分法
问题在前半还是后半
砍掉一半
重复,缩小范围
隔离法
禁用所有无关模块
只保留问题相关模块
排除其他影响
对比法
和仿真波形对比
和已知好的板子对比
找出差异
文档要求
记录每次 bringup:
测试项
环境
结果
问题
根因
修复
电源检查
25°C
PASS
-
-
-
时钟测试
25°C
FAIL
频率偏
晶振错
更换
...
...
...
...
...
...
反模式(要避免)
❌ 上来就跑完整系统 → 不知道哪里错了
❌ 不记录结果 → 忘了做到哪了
❌ 电流过大继续加电 → 烧坏器件
❌ 跳过分步测试 → 找不到问题
代理协作
使用 validation-engineer 代理进行板级验证
自动化测试脚本使用 eda-scripting 技能开发
1 --- 2 name: board-bringup 3 description: FPGA原型和板级bringup技能 - 从静态检查到系统测试,完整板级验证指导 4 --- 5 6 # FPGA 原型和板级 Bringup 技能 7 8 当用户需要进行 FPGA 原型验证或硅后板级验证时,启用此技能。提供从静态检查到系统测试的完整 bringup 流程和问题调试方法。 9 10 ## When to Activate 11 12 - 新 FPGA 原型项目启动 13 - 新 PCB 第一次上电 bringup 14 - 硅后芯片第一次测试 15 - 板级功能问题调试 16 - 量产前验证测试 17 18 --- 19 20 ## 步骤 1:静态检查(不开电) 21 22 **一定要做,不开电检查出问题比上电烧器件好。** 23 24 ### 1.1 目视检查 25 26 **做什么:** 检查 PCB 外观和器件焊接。 27 28 **检查项:** 29 - [ ] PCB 有没有明显损伤、划痕 30 - [ ] 器件有没有焊反、焊歪 31 - [ ] 极性器件(电容、二极管)方向正确 32 - [ ] 芯片方向正确(引脚 1 位置) 33 - [ ] 有没有少件、多件 34 - [ ] 有没有连锡短路 35 36 ### 1.2 电源短路检查 37 38 **做什么:** 确认电源和地之间没有短路。 39 40 **怎么做:** 41 ``` 42 1. 万用表设置电阻档 43 2. 测量每个电源轨到地的电阻 44 3. 记录电阻值 45 4. 电阻 < 10Ω 可能短路,需要排查 46 ``` 47 48 **输出:** 电源电阻表 49 50 | 电源轨 | 电阻值 | 状态 | 51 |--------|--------|------| 52 | VCC_3V3 | 1.2kΩ | 正常 | 53 | VCC_1V8 | 800Ω | 正常 | 54 | VCC_1V0 | 50Ω | ⚠️ 检查 | 55 56 ### 1.3 导通性检查 57 58 **做什么:** 确认所有关键网络连通。 59 60 **检查项:** 61 - [ ] 电源轨从电源到芯片引脚导通 62 - [ ] 地网络导通 63 - [ ] 时钟信号从源到芯片导通 64 - [ ] JTAG 信号导通 65 - [ ] 复位信号导通 66 67 ### 1.4 无源器件检查 68 69 **做什么:** 检查关键无源器件值正确。 70 71 **检查项:** 72 - [ ] 电源去耦电容值正确 73 - [ ] 晶振负载电容正确 74 - [ ] 复位上拉/下拉电阻正确 75 - [ ] 终端电阻正确 76 77 **检查清单:** 78 - [ ] 目视检查完成 79 - [ ] 电源无短路 80 - [ ] 导通性检查完成 81 - [ ] 无源器件检查完成 82 83 --- 84 85 ## 步骤 2:第一次上电 86 87 **安全第一,电流限制,慢慢升压。** 88 89 ### 2.1 设置电源保护 90 91 **做什么:** 设置电源电流限制,防止烧坏。 92 93 **怎么做:** 94 ``` 95 1. 可编程电源设置电流限制 96 - 起始限制:100mA - 500mA(根据预期电流) 97 - 电压:从 0V 开始 98 2. 连接电源到板子 99 3. 准备万用表和示波器 100 ``` 101 102 ### 2.2 缓慢上电 103 104 **做什么:** 缓慢升压,观察电流。 105 106 **怎么做:** 107 ``` 108 1. 从 0V 开始,缓慢升压 109 2. 观察电流变化 110 3. 每升 0.1V 停顿,观察 111 4. 到达目标电压后稳定 112 ``` 113 114 **正常现象:** 115 - 电流平滑上升 116 - 达到预期静态电流后稳定 117 - 没有突然跳变 118 119 **异常现象:** 120 - 电流突然跳变 → 立即断电 121 - 电流超过限制 → 立即断电 122 - 有冒烟/异味 → 立即断电 123 124 ### 2.3 测量电源轨电压 125 126 **做什么:** 测量每个电源轨电压正确。 127 128 **输出:** 电源电压表 129 130 | 电源轨 | 预期值 | 实测值 | 压降 | 状态 | 131 |--------|--------|--------|------|------| 132 | VCC_3V3 | 3.3V | 3.28V | 0.02V | 正常 | 133 | VCC_1V8 | 1.8V | 1.75V | 0.05V | ⚠️ 压降大 | 134 | VCC_1V0 | 1.0V | 1.01V | 0.01V | 正常 | 135 136 ### 2.4 检查器件温度 137 138 **做什么:** 手摸或热像仪检查器件温度。 139 140 **检查项:** 141 - [ ] 所有器件温度正常 142 - [ ] 没有异常发热器件 143 - [ ] 电源芯片温升合理 144 145 **检查清单:** 146 - [ ] 电流限制设置正确 147 - [ ] 上电过程顺利 148 - [ ] 静态电流正常 149 - [ ] 电源电压正确 150 - [ ] 器件温度正常 151 152 --- 153 154 ## 步骤 3:时钟和复位测试 155 156 ### 3.1 测量参考时钟 157 158 **做什么:** 示波器测量参考时钟。 159 160 **测量项:** 161 - 频率是否正确 162 - 幅度是否正确 163 - 占空比是否正确 164 - 边沿是否干净 165 166 **输出:** 时钟测量表 167 168 | 时钟 | 预期频率 | 实测频率 | 幅度 | 状态 | 169 |------|----------|----------|------|------| 170 | REF_CLK | 25MHz | 25.01MHz | 3.2V | 正常 | 171 | SYS_CLK | 50MHz | 49.98MHz | 3.3V | 正常 | 172 173 ### 3.2 配置并测试 PLL 174 175 **做什么:** 配置 PLL,检查锁定。 176 177 **步骤:** 178 1. 配置 PLL 分频系数 179 2. 使能 PLL 180 3. 等待锁定 181 4. 测量输出频率 182 183 **检查项:** 184 - [ ] PLL 能够锁定 185 - [ ] 输出频率正确 186 - [ ] 锁定时间符合规格 187 188 ### 3.3 测试复位 189 190 **做什么:** 测试复位信号时序正确。 191 192 **测量项:** 193 - 复位有效电平正确 194 - 复位释放电平正确 195 - 复位持续时间符合规格 196 - 复位释放顺序正确 197 198 **检查清单:** 199 - [ ] 参考时钟正确 200 - [ ] PLL 锁定正确 201 - [ ] 各时钟频率正确 202 - [ ] 复位时序正确 203 204 --- 205 206 ## 步骤 4:配置接口测试 207 208 ### 4.1 连接调试接口 209 210 **做什么:** 连接 JTAG/SWD 调试接口。 211 212 **步骤:** 213 1. 连接调试器到板子 214 2. 打开调试软件 215 3. 尝试连接 216 217 **检查项:** 218 - [ ] 调试器能够连接 219 - [ ] 能够识别芯片 ID 220 - [ ] ID 码正确 221 222 ### 4.2 基本寄存器测试 223 224 **做什么:** 测试寄存器读写正确。 225 226 **测试项:** 227 ``` 228 1. 读取 ID 寄存器 → 值正确 229 2. 写入测试寄存器 → 写入成功 230 3. 回读测试寄存器 → 读出正确 231 4. 写入另一个值 → 读出正确 232 ``` 233 234 ### 4.3 加载配置(FPGA) 235 236 **做什么:** 加载配置比特流。 237 238 **步骤:** 239 1. 加载比特流到 FPGA 240 2. 检查加载成功状态 241 3. 检查 DONE 引脚状态 242 243 **检查项:** 244 - [ ] 比特流加载成功 245 - [ ] DONE 引脚变高 246 - [ ] FPGA 进入工作状态 247 248 **⚠️ 如果这一步过不去,不要往下走,一定先解决。** 249 250 **检查清单:** 251 - [ ] 调试接口连接正常 252 - [ ] 芯片 ID 识别正确 253 - [ ] 寄存器读写正确 254 - [ ] 配置加载成功(FPGA) 255 256 --- 257 258 ## 步骤 5:模块逐个测试 259 260 **从最简单到最复杂,一个模块测试通过再下一个。** 261 262 ### 5.1 GPIO 测试 263 264 **测试项:** 265 - [ ] GPIO 输出高低电平正确 266 - [ ] GPIO 输入读取正确 267 - [ ] GPIO 方向控制正确 268 269 ### 5.2 UART 测试 270 271 **测试项:** 272 - [ ] 能够发送数据 273 - [ ] 能够接收数据 274 - [ ] 波特率正确 275 - [ ] 回环测试通过 276 277 ### 5.3 I2C/SPI 测试 278 279 **测试项:** 280 - [ ] 能够检测到从设备 281 - [ ] 能够读写从设备寄存器 282 - [ ] 波特率正确 283 284 ### 5.4 存储器测试 285 286 **测试项:** 287 - [ ] 能够写入数据 288 - [ ] 能够读出数据 289 - [ ] 写入和读出一致 290 - [ ] 遍历所有地址测试 291 292 ### 5.5 DDR 测试 293 294 **测试项:** 295 - [ ] DDR 初始化成功 296 - [ ] 写入数据正确 297 - [ ] 读取数据正确 298 - [ ] 带宽测试符合预期 299 300 ### 5.6 核心功能测试 301 302 **测试项:** 303 - [ ] 核心功能正常工作 304 - [ ] 数据通路正确 305 - [ ] 控制通路正确 306 307 **检查清单:** 308 - [ ] GPIO 测试通过 309 - [ ] UART 测试通过 310 - [ ] I2C/SPI 测试通过 311 - [ ] 存储器测试通过 312 - [ ] DDR 测试通过 313 - [ ] 核心功能测试通过 314 315 --- 316 317 ## 步骤 6:系统集成测试 318 319 ### 6.1 模块间接口测试 320 321 **测试项:** 322 - [ ] 模块间数据传输正确 323 - [ ] 模块间控制信号正确 324 - [ ] 模块间时序正确 325 326 ### 6.2 完整应用测试 327 328 **测试项:** 329 - [ ] 完整应用场景运行正常 330 - [ ] 数据端到端正确 331 - [ ] 性能满足要求 332 333 ### 6.3 压力测试 334 335 **测试项:** 336 - [ ] 长时间运行(24小时+) 337 - [ ] 高负载运行 338 - [ ] 温度升高后运行正常 339 340 ### 6.4 极限测试 341 342 **测试项:** 343 - [ ] 最高频率测试 344 - [ ] 最低电压测试 345 - [ ] 高温测试 346 - [ ] 低温测试 347 348 **检查清单:** 349 - [ ] 模块间接口测试通过 350 - [ ] 完整应用测试通过 351 - [ ] 压力测试通过 352 - [ ] 极限测试通过 353 354 --- 355 356 ## 常见问题定位 357 358 ### 问题 1:电源电流过大 359 360 **可能原因:** 361 - 电源地短路 362 - 器件焊错 363 - 芯片损坏 364 365 **排查步骤:** 366 1. 断电,测量电源地电阻 367 2. 逐个断开电源域 368 3. 找到短路区域 369 4. 定位短路器件 370 371 ### 问题 2:JTAG 连接不上 372 373 **可能原因:** 374 - 接线错误 375 - 电源不对 376 - 复位不对 377 - 速度太快 378 379 **排查步骤:** 380 1. 测量每个信号线 381 2. 测量电源电压 382 3. 测量复位电平 383 4. 降低 JTAG 速度 384 385 ### 问题 3:PLL 不锁定 386 387 **可能原因:** 388 - 参考时钟不对 389 - 配置不对 390 - 电压不对 391 392 **排查步骤:** 393 1. 示波器测量参考时钟 394 2. 检查配置寄存器 395 3. 测量 PLL 电源 396 397 ### 问题 4:功能偶发错误 398 399 **可能原因:** 400 - 时序余量不够 401 - 跨时钟域问题 402 - 电源噪声 403 404 **排查步骤:** 405 1. 降低工作频率 406 2. 增加同步级数 407 3. 测量电源纹波 408 409 --- 410 411 ## 调试方法论 412 413 ### 二分法 414 415 1. 问题在前半还是后半 416 2. 砍掉一半 417 3. 重复,缩小范围 418 419 ### 隔离法 420 421 1. 禁用所有无关模块 422 2. 只保留问题相关模块 423 3. 排除其他影响 424 425 ### 对比法 426 427 1. 和仿真波形对比 428 2. 和已知好的板子对比 429 3. 找出差异 430 431 --- 432 433 ## 文档要求 434 435 记录每次 bringup: 436 437 | 测试项 | 环境 | 结果 | 问题 | 根因 | 修复 | 438 |--------|------|------|------|------|------| 439 | 电源检查 | 25°C | PASS | - | - | - | 440 | 时钟测试 | 25°C | FAIL | 频率偏 | 晶振错 | 更换 | 441 | ... | ... | ... | ... | ... | ... | 442 443 --- 444 445 ## 反模式(要避免) 446 447 ❌ **上来就跑完整系统** → 不知道哪里错了 448 ❌ **不记录结果** → 忘了做到哪了 449 ❌ **电流过大继续加电** → 烧坏器件 450 ❌ **跳过分步测试** → 找不到问题 451 452 --- 453 454 ## 代理协作 455 456 - 使用 `validation-engineer` 代理进行板级验证 457 - 自动化测试脚本使用 `eda-scripting` 技能开发
tangyangchao578-art/icer_skill_package/tree/main/skills/board-bringup commit d8576b9521
Frequently asked questions How do I install the Board Bringup skill? Run npx skillmds@latest add tangyangchao578-art/board-bringup in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Board Bringup skill do? FPGA原型和板级bringup技能 - 从静态检查到系统测试,完整板级验证指导 It is listed under Coding & Dev Tools on SkillMD.
Is Board Bringup safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Board Bringup? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Board Bringup free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Board Bringup? tangyangchao578-art (@tangyangchao578-art) published this skill. Their other Agent Skills are listed on their SkillMD profile.