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

Re: gEDA-user: Compilation problem with icarus 0.8.1?



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


The problem is "m - 1'b1". The variable "m" is an integer which has an indefinite width. (For example, it can have different widths on different compilers.) Replace that with "reg signed [31:0]" if you want to be explicit about its size.

Yes, other compilers will accept this, but they are all wrong:-)

Mark Schellhorn wrote:
| I have the following code snippet that fails compilation under icarus
| 0.8.1 with this message:
|
| [mark@camelot-007 DT_mark_cosim]$ iverilog junk.v
| junk.v:20: error: operand of concatenation has indefinite width:
| ((('d288)-(+d[4:0]))-((9'b000001000)-(c[2:0])))+({(+m[31:0])-(1'b1),
| 3'b000})
| 1 error(s) during elaboration.
|
| It looks like icarus doesn't like the "9'd256 + 9'd32", but I don't
| think there's anything illegal about it?
|
| module junk;
|
|    integer d, e, m;
|
|    reg [63:0]         a;
|    reg [(512*8)-1:0]  b;
|    reg [2:0]          c;
|
|    initial begin
|       b = 0;
|       c = 0;
|       d = 0;
|       m = 0;
|       e = 9'd256 + 9'd32;
|
|       // This one works
|       a = b >> {(e - d[4:0] - (9'd8 - c) + {(m - 1'b1),3'o0}),3'o0};
|
|       // This one doesn't
|       a = b >> {(9'd256 + 9'd32 - d[4:0] - (9'd8 - c) + {(m -
| 1'b1),3'o0}),3'o0};
|
|       $display("%m : 0x%h",a);
|    end
| endmodule
|


- -- Steve Williams "The woods are lovely, dark and deep. steve at icarus.com But I have promises to keep, http://www.icarus.com and lines to code before I sleep, http://www.picturel.com And lines to code before I sleep." -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFCNv7krPt1Sc2b3ikRAkUnAJ9d60EuVLn0OCgdKILFIVt9JRRsPACfWiHw
KQFsefWsV3XkhbsLjUR8L1s=
=iDFH
-----END PGP SIGNATURE-----