I'm trying to create DDR SRAM data I/O pads and am having problems "pushing" the tri-state enable flip-flop into the IOB. I get the DDR in/out DATA flip-flops packed into the IOB correctly, but XST 5.2 refuses to use the IOB's tri-state enable flip-flop. This is targeted at a V2-Pro part.
I'm "hand" instantiating the output DATA ddr "flops", but, for a variety of reasons, I REALLY don't want to hand instantiate components to control the tri-state, I'd really like to infer them.
In this design the tri-state control signals are not really "ddr", they only need to change on posedge clock.
Here's a snippet of my code:
// instantiate 72 DDR output cells FDDRRSE u0ddr_q ( .C0 (clk_outn), .C1 (clk_out), .R (1'b0), .S (1'b0), .CE (1'b1), .D0 (sr_dout[0]), .D1 (sr_dout[72]), .Q (sr_q[0]) ); FDDRRSE u1ddr_q ( .C0 (clk_outn), .C1 (clk_out), .R (1'b0), .S (1'b0), .CE (1'b1), .D0 (sr_dout[1]), .D1 (sr_dout[73]), .Q (sr_q[1]) ); FDDRRSE u2ddr_q ( .C0 (clk_outn), .C1 (clk_out), .R (1'b0), .S (1'b0), .CE (1'b1), .D0 (sr_dout[2]), .D1 (sr_dout[74]), .Q (sr_q[2]) ); ......
// infer the tri-state output control // try to get the control bit 'pushed' into the IOB tri-state control f/f reg sr_oe; // synthesis attribute IOB of sr_oe "TRUE" always @(posedge clk_outn) sr_oe