4

是否有任何可能的方法可以在表单中创建一个 for 循环:

for i in 0 to some_var loop
    // blah,blah
end loop;

如果没有,是否有任何替代方法来创建相同的循环?由于 While 循环允许使用变量作为限制,但它们在我的项目中不可合成。

提前致谢,

博扬·马托夫斯基

4

2 回答 2

12

该变量适用于测试台应用程序。

对于综合,您可以通过使用静态范围和退出条件来获得相同的效果。将范围设置为您需要的最大值。

for i in 0 to MAX_VALUE loop
  exit when i = some_var ;
  // blah,blah
end loop;

如果您的综合工具对此感到窒息,请提交错误报告。1076.6-1999 和 1076.6-2004(VHDL RTL 综合标准)都表明支持具有静态范围的“for”循环的退出条件。您可能会发现有关使用循环标签 (1076.6-1999) 的支持问题表明它不受支持。

如果您发现错误(或缺乏支持)并且没有报告它,您的供应商会认为这是您不关心的功能,因此不会投资更改他们的工具。

于 2013-08-28T16:46:06.347 回答
0

只有具有静态范围的循环参数是可合成的。

如果some_var具有离散范围,则可以实现 FSM(有限状态机)。然后为每个状态编写一个特定的循环。

于 2013-08-28T15:19:16.090 回答