[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-user: Icarus multiplier lpm



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