Xilinx XST 9.2i.01 - still incomplete support for always @*

X

Xilinx User

Guest
After waiting patiently for Xilinx to support always @* properly, I'm still
having problem with this code:

localparam integer D_W = 32;
localparam integer DEPTH = 512;
reg [D_W-1:0] memory [0:DEPTH-1];
reg [DEPTH-1:0] memory_or;

always @* begin
for ( i = 0; i < DEPTH; i = i + 1 ) begin
memory_or[ i ] = | memory[ i ]; // is any bit high?
end
end // always @*

....
"unexpected event in sensitivity-list of always block."

Same code synthesizes fine in Altera Quartus-II 7.1 Web Edition.
For the case I show above, I can workaround it using a
generate-loop, and a bunch of assign statements...but there are
other code-blocks which I can't easily workaround.
 
"Xilinx User" <anonymous@net.com> wrote in message
news:9QJni.2694$Dx2.1440@newssvr17.news.prodigy.net...
After waiting patiently for Xilinx to support always @* properly, I'm
still
having problem with this code:

localparam integer D_W = 32;
localparam integer DEPTH = 512;
reg [D_W-1:0] memory [0:DEPTH-1];
reg [DEPTH-1:0] memory_or;

always @* begin
for ( i = 0; i < DEPTH; i = i + 1 ) begin
memory_or[ i ] = | memory[ i ]; // is any bit high?
end
end // always @*

...
"unexpected event in sensitivity-list of always block."

Same code synthesizes fine in Altera Quartus-II 7.1 Web Edition.
For the case I show above, I can workaround it using a
generate-loop, and a bunch of assign statements...but there are
other code-blocks which I can't easily workaround.
While I would expect XST to handle this well, consider changing your memory
array to a vector, at least for this always block. You can still keep your
memory array if you have a wire vector assigned to all the memory elements
only for use in this block. Because of your wide OR, the "memory" will be
implemented as registers anyway, so maybe specifying them as a register
vector will give you the results you need.

Shame on XST.
 
On 2007-07-19, Xilinx User <anonymous@net.com> wrote:
always @* begin
for ( i = 0; i < DEPTH; i = i + 1 ) begin
...
"unexpected event in sensitivity-list of always block."
Is it including `i' in * and then complaining about it?

--
Ben Jackson AD7GD
<ben@ben.com>
http://www.ben.com/
 

Welcome to EDABoard.com

Sponsor

Back
Top