安路FPGA踩坑记录:改约束不Clean,调试两行泪!!!

📅 发布时间:2026/7/10 8:00:59 👁️ 浏览次数:
安路FPGA踩坑记录:改约束不Clean,调试两行泪!!!
1. 项目背景tips:宝子们记得学verilog最近在恶补~~~咳咳 言归正传这是我拿到板子以后实打实做的第一个实验——4选1数据选择器。代码很简单用case语句根据s1、s0选择a、b、c、d输出到y。引脚分配也按部就班a-d接SW0-SW3s1-s0接SW4-SW5y接LED0 R1module mux41( input a,b,c,d, input s1,s0, output reg y ); always (*) begin case ({s1, s0}) 2b00: y a; 2b01: y b; 2b10: y c; 2b11: y d; default: y 0; endcase end endmodule综合、布局布线都没报错Generate Bitstream也显示成功自信满满下载到板子。2. 诡异现象结果感觉不太对劲——明明是按着官方的引脚excel来拨的结果D0灯却始终仅跟SW0有关。具体表现- SW0拨上D0亮SW0拨下D0灭- 无论SW4、SW5怎么拨D0完全没反应- 其他开关SW1-SW3也影响不了D0这不对啊我的选择逻辑明明写了s10,s00时ya现在y直接等于a了选择器根本没起作用。3. 排查过程一试了几分钟依旧不行开始自我怀疑代码写错了回去看Verilogcase语句没毛病仿真也过了引脚号抄错了打开IO Constraint核对三遍G3/P1/K2/J4/G5/J1/R1和教程一模一样板子坏了把y改到R2LED1现象一样排除硬件问题那没招了问问AI吧。二求助AI尝试询问AI给出了重新烧录的建议。但重新下载后现象一样问题没解决。三发现猫腻仔细观察编译过程发现两个疑点1. 第一次点Generate Bitstream报错Cant launch run phy_1 to step bitgen now2. 第二次再点提示Step bitgen is already run然后瞬间完成这瞬间完成就很离谱啊——这这这...改完约束重新编译怎么可能这么快查资料了解到安路TD默认用增量编译检测到之前跑过就跳过步骤。但我刚才只是改了约束文件工具链没识别到需要重跑物理优化新约束根本没进比特流。四强制刷新Tools → Clean Project清掉所有中间结果重新Generate Bitstream。这次编译明显变慢了说明真在重跑。下载测试终于对了。五 验证结果拨动SW4、SW5D0终于按真值表变化了真值表SW4SW5选中操作D0亮灭00a拨sw0亮/灭 ✓01b拨sw1亮/灭 ✓10c拨sw2亮/灭 ✓11d拨sw3亮/灭 ✓六 经验总结核心教训改约束不是保存就完事Clean Project是必要步骤。工具链的增量编译确实省时间但也会藏bug——它判断要不要重跑的依据是文件时间戳约束文件的修改有时候触发不了全流程重建。新手看到already run以为成功了实际上用的是旧配置。建议每次修改引脚分配、时序约束后养成习惯先Clean再编译避免隐性错误浪费调试时间。七宝子们学的时候一定要多查资料很多问题都能查到的也建议旁边放个AI很好用很多错误都能被他排除出来