K
Kirill 'Big K' Katsnelson
Guest
I downloaded Xilinx free Web ISE 5.2i, and toying with different design to get
the feeling of this Spartan-3 thingy. The only Spartan-3 device supposed to be
supported by the free verison is 3S50. I am saying "supposed", because I cannot
make it instantiate neither multipliers nor block RAMs. According to the data
sheet, there are enough of them in the device, but mapper thinks there are none.
Why is that?
- My error (so I hope!)
- Bug in ISE
- Limitation of the free version
- Typo in the datasheet, and there are no multipliers really.
Code follows. In this test (one of so many!) I let ISE infer a multiplier:
<<<
module mult (input clk, input [7:0] x, input [7:0] y, output reg [15:0] q);
always @(posedge clk)
q <= { 8'h0, x } * { 8'h0, y };
endmodule
Synthesizer infers one:
<<<
Synthesizing Unit <mult>.
Related source file is mult.v.
WARNING:Xst:643 - Multiplier result width is 16 bits.
Found 16x16-bit registered multiplier for signal <$n0000> created at line 4.
Summary:
inferred 1 Multiplier(s).
Unit <mult> synthesized.
=========================================================================
HDL Synthesis Report
Macro Statistics
# Multipliers : 1
16x16-bit registered multiplier : 1
but then, in the final report, says *something* is overmapped. Note it does not
mark overused resource with an asterisk like '(*)':
<<<
=========================================================================
* Final Report *
----snip----
# MULTs : 1
# MULT18X18S : 1
=========================================================================
Device utilization summary:
---------------------------
Selected Device : 3s50pq208-4
Number of bonded IOBs: 32 out of 124 25%
Number of GCLKs: 1 out of 8 12%
WARNING:Xst:1336 - (*) More than 100% of Device resources are used
There supposed to be 4 of MULT18X18S in this part, but then maper fails with a
more detailed, but not more explainable diagnostics:
<<<
Design Summary
---snip---
Number of bonded IOBs: 33 out of 124 26%
Number of MULT18X18s: 1 out of 0 0% (OVERMAPPED)
Number of GCLKs: 1 out of 8 12%
-kkm
the feeling of this Spartan-3 thingy. The only Spartan-3 device supposed to be
supported by the free verison is 3S50. I am saying "supposed", because I cannot
make it instantiate neither multipliers nor block RAMs. According to the data
sheet, there are enough of them in the device, but mapper thinks there are none.
Why is that?
- My error (so I hope!)
- Bug in ISE
- Limitation of the free version
- Typo in the datasheet, and there are no multipliers really.
Code follows. In this test (one of so many!) I let ISE infer a multiplier:
<<<
module mult (input clk, input [7:0] x, input [7:0] y, output reg [15:0] q);
always @(posedge clk)
q <= { 8'h0, x } * { 8'h0, y };
endmodule
Synthesizer infers one:
<<<
Synthesizing Unit <mult>.
Related source file is mult.v.
WARNING:Xst:643 - Multiplier result width is 16 bits.
Found 16x16-bit registered multiplier for signal <$n0000> created at line 4.
Summary:
inferred 1 Multiplier(s).
Unit <mult> synthesized.
=========================================================================
HDL Synthesis Report
Macro Statistics
# Multipliers : 1
16x16-bit registered multiplier : 1
but then, in the final report, says *something* is overmapped. Note it does not
mark overused resource with an asterisk like '(*)':
<<<
=========================================================================
* Final Report *
----snip----
# MULTs : 1
# MULT18X18S : 1
=========================================================================
Device utilization summary:
---------------------------
Selected Device : 3s50pq208-4
Number of bonded IOBs: 32 out of 124 25%
Number of GCLKs: 1 out of 8 12%
WARNING:Xst:1336 - (*) More than 100% of Device resources are used
There supposed to be 4 of MULT18X18S in this part, but then maper fails with a
more detailed, but not more explainable diagnostics:
<<<
Design Summary
---snip---
Number of bonded IOBs: 33 out of 124 26%
Number of MULT18X18s: 1 out of 0 0% (OVERMAPPED)
Number of GCLKs: 1 out of 8 12%
-kkm