大猪蹄子的个人博客

大猪蹄子

【技术 高云-1】常见高云FPGA使用问题汇总

2026 / 7 / 31

语法和基本通用硬件常识这里就不提了

软件相关

0、Place & Route卡70%不动了

  • 高云自己卡Bug了,去Project->Configuration->Place & Route下的Place和Route选项,把Place Option从0改成1 2 3随便。实际就是改了布局布线策略优先级,管他呢,能过就行。

1、Error unroute xx了

  • 暂时没救。尝试改改代码当随机种子炼金吧

2、资源爆了

  • 注意是不是忘了删ila了,这玩意也会吃很大资源

  • 注释点模块,至少让工程能够顺利编译完,展开Hierarchy看看各个模块资源消耗情况自行优化

3、ERROR(PR2017):'xxx' cannot be placed according to constraint , for the lacation is a dedicated pin (DONE/SSPI/CPU/JTAG)

  • 用到特殊管脚了,去Project->Configuration->Place & Route下的Dual-Purpose Pin,把对应报错的选项勾上Use XXX as regular IO

4、ERROR(EX3444):'logic' is an unknown type

  • 高云工程默认是Verilog2001语法,去Project->Configuration->Synthesize下面General ,把Verilog Language改成SystemVerilog 2017即可

5、指定top文件/自动编译的top文件不对

  • 高云的top模块不指定的话是自动选择的,有可能选错;或者有时候会手动指定一个子模块为top,去Project->Configuration->Synthesize下面General,在Top Module里输入指定的Top 名称

6、ERROR(169029):Pin xxx is incompatible with I/O bank....

  • 首先你得知道FPGA的所有IO是一组一组的,每一组可分配不同的电压以满足不同的通讯协议

  • 基于以上,你就得知道同一组内的电压应该是一致的,你不能放个LVCMOS18的KEY,又放一个LVCMOS33的LED(这个约束在高云工程的xx.cst里)

  • 明白这个道理后,就去Pin Planner,点击IO BANK排一下序,看看报错的这个Pin所属的BANK下用了哪些IO,应该有冲突的(LVCMOS25和LVDS25、STTL18和LVCMOS18,后缀都是相同的不算冲突)

  • 然后自己在cst文件里把同一Bank的IO约束改成同一电平的就行了

  • 你问为啥例程也有这个问题?问得太好了,因为当初写这些例程的时候,用到的IDE版本过于上古,这个问题并不会报错。

7、仿真支持

  • 目前高云平台的主流仿真工具为modelsim,自行百度怎么装,或者看我Quartus安装的图文里有免费版的流程

  • 先在Modelsim里创建一个工程

  • 导入用户自己的v文件,比如top.sv

  • 导入IP对应的xx.vo文件,比如pll.vo

  • 导入你用的芯片的v文件,比如gw2a.v

  • 编译,然后从top module开始仿真run

8、DDR3模型去哪儿找

  • 一般用镁光的话,百度镁光DDR3 SDRAM 仿真模型

9、带IP仿真时间过长不拉高init

  • run 500ms再说

硬件相关

0、下载时JTAG找不到Device了/找不到JTAG端口

  • 经典问题哈,如果你是第一次就这样,大概率是电脑的问题,包括端口/驱动等,换电脑试试或者问问群友debug一下,不好说

  • 如果是冬天,可能FPGA真静电打寄了。毕竟我就打坏过好几个,还是不同厂家的

1、把引脚复用成普通IO后+固化进FLASH=JTAG扫不到Device了

  • 通常是FPGA启动后把JTAG相关的IO复用成普通IO了,一般尝试短接FLASH任意数据脚到GND或者俩短接再上电,不让它启动就可以正常下载了(先擦FLASH吧

2、软排线分不清怎么插

  • 把排线上标数字1或者特殊标记的那一头插入底座也有标数字1或者特殊标记的那一头

版本更新

260731:初始版本