[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
gEDA-user: Icarus multiplier lpm
- To: geda-user@xxxxxxxx
- Subject: gEDA-user: Icarus multiplier lpm
- From: Tom Hawkins <tom@xxxxxxxxxxxxx>
- Date: Fri, 18 Mar 2005 12:17:33 -0600
- Delivered-to: archiver@seul.org
- Delivered-to: geda-user-outgoing@seul.org
- Delivered-to: geda-user@seul.org
- Delivery-date: Fri, 18 Mar 2005 13:18:39 -0500
- Reply-to: geda-user@xxxxxxxx
- Sender: owner-geda-user@xxxxxxxx
- User-agent: Mozilla Thunderbird 1.0 (X11/20041206)
I hit a case with Icarus synthesis involving embedded
multiplication expressions inside concatenations. Outside
a concat, the multiplier is synthesized to the correct
precision. However, inside a concat, the multiplier
precision is doubled. Also with this case, I find a couple
of non-driven nexus in the netlist.
It must have something to do with mulitplication, because
addition works fine.
I originally suspected a bug in my FNF generator, but I
confirmed the behavior with the -t fpga target as well.
Any ideas?
-Tom
module test (a, b, x, y, z);
input [7:0] a, b;
output [7:0] x;
output [8:0] y;
output [8:0] z;
// Synthesizes an 8-bit multiplier as expected.
assign x = a * b;
// Synthesizes an 8-bit adder as expected.
assign y = {1'b0, a + b};
// Synthesizes a 16-bit multiplier. Why not 8-bits?
// Also creates a couple of non sourced nexus.
assign z = {1'b0, a * b};
endmodule