Verilog 灵敏度列表错误

Verilog 灵敏度列表错误,verilog,xilinx-ise,Verilog,Xilinx Ise,我想计算数组元素的和。阵列的元素在每个时钟上升沿上分配(顺序)。我不想得到下一个时钟上升沿上的元素和,所以和的设计必须是组合的。我可以在模拟中得到正确的结果,没有任何错误,但是我的代码没有在ISE(Xilinx合成工具)中合成。我在研究斯巴达3 我的代码: always @* begin sum = 0; for (i=0; i<K; i=i+1) sum = sum + shiftReg[i]; end 始终@*开始 总和=0; 对于(i=0;i

我想计算数组元素的和。阵列的元素在每个时钟上升沿上分配(顺序)。我不想得到下一个时钟上升沿上的元素和,所以和的设计必须是组合的。我可以在模拟中得到正确的结果,没有任何错误,但是我的代码没有在ISE(Xilinx合成工具)中合成。我在研究斯巴达3

我的代码:

always @* begin
    sum = 0;
    for (i=0; i<K; i=i+1)
        sum = sum + shiftReg[i];    
end
始终@*开始
总和=0;

对于(i=0;i我担心这是XST合成器的一个限制。您提供的同一个解决方案表明,Virtex 6和Spartan 6设备已经解决了这个问题,因此这一定是Spartan 3的资源限制,或者更可能是Xilinx工程师的一点懒散

我已经测试了这个示例模块:

module addall (
  input wire clk,
  input wire [3:0] addr,
  input wire load,
  input wire [7:0] din,
  output reg [7:0] tot
);

  reg [7:0] sr[0:15];
  always @(posedge clk) begin
    if (load)
      sr[addr] <= din;
  end

  integer i;
  always @* begin
    tot = 8'h00;
    for (i=0;i<=15;i=i+1)
        tot = tot + sr[i];
  end
endmodule
moduleaddall(
输入线时钟,
输入线[3:0]地址,
输入线负载,
输入线[7:0]din,
输出寄存器[7:0]总计
);
reg[7:0]sr[0:15];
始终@(posedge clk)开始
如果(加载)

sr[addr]非常感谢mcleod_ideafix,我在Spartan6上测试了我的代码。这个错误已经修复。我认为你是对的。可能与Spartan3的限制有关。