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 ...
![]() |
| | LinkBack | Thread Tools |
|
#1
| |||
| |||
| 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
| |||
| |||
| 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? |
![]() |
| Thread Tools | |
| |
| ||||
| 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 |


