Type convertion when doing arimetic on intergers.

M

MLyngsie

Dear All,

What is the resulting range of an arithmetic operation on ranged
integers?
E.g. with the following two signals.

signal X : integer range 1 to 255;
signal Y : integer range 1 to 255;

And then some ware in the code.

if ( X > Y/2) then .......

Our linding tools report a warning here stating the X is 8 bit wide and
Y/2 is only 7 bit.
So the simple question is now.

What is the range of Y/2?

The general question is. What is the range of any arithmetic operation
on ranged integers?
Which rules control this?
Where in the LRM is this described?

Regards,
Mogens.
 
D

Dave Pollum

MLyngsie said:
Dear All,

What is the resulting range of an arithmetic operation on ranged
integers?
E.g. with the following two signals.

signal X : integer range 1 to 255;
signal Y : integer range 1 to 255;

And then some ware in the code.

if ( X > Y/2) then .......

Our linding tools report a warning here stating the X is 8 bit wide and
Y/2 is only 7 bit.
So the simple question is now.

What is the range of Y/2?

The general question is. What is the range of any arithmetic operation
on ranged integers?
Which rules control this?
Where in the LRM is this described?

Regards,
Mogens.

Since Y is 8-bits, then (Y/2) is an 7-bit value. If Y is not used
except in your if statement, then the HDL compiler figures out that it
only needs 7-bits for Y.
BTW, why is the low range for both X and Y '1', instead of '0'?

-Dave Pollum
 
M

MLyngsie

Hi Dave,
Thank you for the answer.

This is also what I assumed. But where is this stated in the LRM.
It you lock in section 7.2.6 "Multiplying operators" of the LRM it is
just stated that the result is of the same type as the operands. This
section doesn't really describe anything about the range of integers.

Regarding the lower range of the type definition. It is just there so
that an error will be issued if a value that is out of the expected
range is assigned.

Regards,
Mogens
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top