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