【发布时间】:2018-08-06 09:32:09
【问题描述】:
如果我在 VHDL 或 Verilog 中为 for 循环变量的初始值分配一个非常量值,仿真或综合中会出现什么问题? 例如-如果我写一个测试用例:
module dut(input clk, d, output reg [5:0] q);
integer i, j, k, l;
always @(posedge clk)
begin
for(i =k;j < 4;k++, l++) begin
q[i] <= d;
end
end
endmodule
会有什么问题?
【问题讨论】:
-
在 VHDL IEEE Std 1076.6-2004(RTL 综合,撤销)中 8.8.9 循环语句 对于作为参数规范的一部分出现的离散范围,离散范围的边界应为直接或间接指定为属于整数类型的静态值。 IEEE Std 1076-2008 9.4 静态表达式将它们限制在本地 (9.4.2) 或全局 (9.4.3) 静态范围内。间接包括枚举值的位置编号(5.2 标量类型,5.2.2 枚举类型)。离散范围 (5.3.2.1) 包括范围表达式、子类型指示 (6.3) 和范围属性 (5.2.1)。