Objectmix
Tags Register Mark Forums Read

Xilinx Webpack 9.1i.03 Verilog synthesis bug? : verilog

This is a discussion on Xilinx Webpack 9.1i.03 Verilog synthesis bug? within the verilog forums in Programming Languages category; For the combinational-logic of my state-machine, if I use an always @*, Xilinx XST erroneously optimizes/removes the logic, and then rips out any downstream load-logic. reg [6:0] s_instr_category; // The "BAD" state-machine always @* begin : state_machine // <-- line #461 if ( a00 ) s_instr_category = A; else if ( a01 ) s_instr_category = B; else if ( a02 ) s_instr_category = C; ... else s_instr_category = MY_DEFAULT; end // always @* always @ (posedge clk ) if ( s_instr_category == A ) decision_junk <= s; else if (s_instr_category == B ) decision_junk <= s + 1; ... WARNING:Xst:905 ...


Object Mix > Programming Languages > verilog > Xilinx Webpack 9.1i.03 Verilog synthesis bug?

Reply

 

LinkBack Thread Tools
  #1  
Old 05-13-2007, 03:25 PM
Junior Member
 
Join Date: Nov 2009
Posts: 0
Application Development is on a distinguished road
Default Xilinx Webpack 9.1i.03 Verilog synthesis bug?

For the combinational-logic of my state-machine, if I use an always @*,
Xilinx XST erroneously optimizes/removes the logic, and then rips out
any downstream load-logic.

reg [6:0] s_instr_category;

// The "BAD" state-machine
always @* begin : state_machine // <-- line #461
if ( a00 ) s_instr_category = A;
else if ( a01 ) s_instr_category = B;
else if ( a02 ) s_instr_category = C;
...
else
s_instr_category = MY_DEFAULT;
end // always @*

always @ (posedge clk )
if ( s_instr_category == A )
decision_junk <= s;
else if (s_instr_category == B )
decision_junk <= s + 1;
...


WARNING:Xst:905 - "control_fsm.v" line 461: The signals <s_instr_category>
are missing in the sensitivity list of always block.
Module <control_fsm> is correct for synthesis.

I've tried changing always @* -> always @ ( a00,a01,a02,...), but I always
see the same WARNING in the logfile.
I've worked around this problem by using the ?: operator. For some reason,
Xilinx XST is perfectly happy with the following-code (but not the code I
posted top.)

wire [6:0] s_instr_category;

// The "BAD" state-machine
assign s_instr_category =
(a00) ? A :
(a01) ? B :
(a02) ? C :
...
: MY_DEFAULT;

....
Any ideas? I'm using Webpack 9.1i with Service Pack 3 (and IP-update 2.1)
Will this be fixed in Webpack 9.2?
And using 2D-regs in an always @* block still doesn't work.

reg [15:0] mem [0:255];
wire [7:0] address;

always @*
latch_dout = mem[ address ]; // <-- XST 9.1i.03 *ERROR*



  #2  
Old 05-14-2007, 07:59 AM
Junior Member
 
Join Date: Nov 2009
Posts: 0
Application Development is on a distinguished road
Default Re: Xilinx Webpack 9.1i.03 Verilog synthesis bug?

On May 13, 4:25 pm, "Xilinx user" <xilinx_u...@nowhere.net> wrote:
> For the combinational-logic of my state-machine, if I use an always @*,
> Xilinx XST erroneously optimizes/removes the logic, and then rips out
> any downstream load-logic.
>
> reg [6:0] s_instr_category;
>
> // The "BAD" state-machine
> always @* begin : state_machine // <-- line #461
> if ( a00 ) s_instr_category = A;
> else if ( a01 ) s_instr_category = B;
> else if ( a02 ) s_instr_category = C;
> ...
> else
> s_instr_category = MY_DEFAULT;
> end // always @*
>
> always @ (posedge clk )
> if ( s_instr_category == A )
> decision_junk <= s;
> else if (s_instr_category == B )
> decision_junk <= s + 1;
> ...
>
> WARNING:Xst:905 - "control_fsm.v" line 461: The signals <s_instr_category>
> are missing in the sensitivity list of always block.
> Module <control_fsm> is correct for synthesis.
>
> I've tried changing always @* -> always @ ( a00,a01,a02,...), but I always
> see the same WARNING in the logfile.
> I've worked around this problem by using the ?: operator. For some reason,
> Xilinx XST is perfectly happy with the following-code (but not the code I
> posted top.)
>
> wire [6:0] s_instr_category;
>
> // The "BAD" state-machine
> assign s_instr_category =
> (a00) ? A :
> (a01) ? B :
> (a02) ? C :
> ...
> : MY_DEFAULT;
>
> ...
> Any ideas? I'm using Webpack 9.1i with Service Pack 3 (and IP-update 2.1)
> Will this be fixed in Webpack 9.2?
> And using 2D-regs in an always @* block still doesn't work.
>
> reg [15:0] mem [0:255];
> wire [7:0] address;
>
> always @*
> latch_dout = mem[ address ]; // <-- XST 9.1i.03 *ERROR*



I think this may be one of those misleading warnings. I don't see why
s_instr_category should be in the sensitivity list since it's never on
the right hand side of an assignment. On the other hand it looks
like a bug of some sort. Were you able to use an assign statement
for latch_dout as well?

Reply

Thread Tools


Similar Threads

Thread Thread Starter Forum Replies Last Post
Timing details during synthesis in Xilinx ISE usenet vhdl 2 06-29-2007 05:56 AM
Xilinx Webpack 9.1i.03 Verilog synthesis bug? usenet verilog 0 05-13-2007 03:24 PM
Xilinx XST 9.1, Verilog 2-D arrays, always @* usenet verilog 9 03-19-2007 11:17 AM
Xilinx Synthesis, Top Level missing a Block in schematic usenet verilog 0 03-19-2007 06:13 AM
Inferring Xilinx synthesis results - Help required! usenet verilog 4 06-01-2006 06:24 AM


All times are GMT -5. The time now is 08:57 AM.

Managed by Infnx Pvt Ltd.