EDA版本
Quartus 18.1 Pro
代码及报错信息
Error (10119): Verilog HDL Loop Statement error at <location>: loop with non-constant loop condition must terminate within <number> iterations
非常量循环条件的循环必须在250次迭代内终止
解决方案
①修改编译器默认循环上限
在英特尔官网上有给出该错误的解决方案,即在工程的.qsf文件中添加
set_global_assignment -name VERILOG_NON_CONSTANT_LOOP_LIMIT 300
。
此时循环次数上限修改为 300
,实测最大循环上限为 5000
,这是很多Verilog教材中没有提到的。
②不使用While循环,改写为状态机
鉴于以上限制,我后来将该部分代码修改为有限状态机,具体代码就不再贴出了
限制原因
此处不再像我们之前编写C代码一样自由,限制了最大循环上限,应当是从硬件实现角度的考虑