Error: Actual is not a globally static expression

S

Steve Harrad

Hello

Why isn't it allowed to use the not Operator in the port mapping?

MUL0: MULTI
port map(x0 => not(a(0)),y0 => not(b(0)),x1 => a(1),y1 =>b (1),
^^^^^^ ^ ^^^^
cin => '0',cout => cout2bitRCA0,s0 => sout2bitRCA0(0),s1 =>
sout2bitRCA0(1));

I get this error code:

Actual is not a globally static expression

How can i assign x0 the inserse bit of a(0)

Thanks for your help
 
J

Jim Lewis

Steve,
To call a function in a port map, it must be a
conversion function. While technically not
is not a conversion function, if you call it with
the "not"(a) format.



MUL0: MULTI
port map(
x0 => "not"(a(0)),
y0 => "not"(b(0)),
x1 => a(1),
y1 => b(1),
cin => '0',
cout => cout2bitRCA0,
s0 => sout2bitRCA0(0),
s1 => sout2bitRCA0(1)
);

Cheers,
Jim
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jim Lewis
Director of Training mailto:[email protected]
SynthWorks Design Inc. http://www.SynthWorks.com
1-503-590-4787

Expert VHDL Training for Hardware Design and Verification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
S

Steve Harrad

To call a function in a port map, it must be a
conversion function. While technically not
is not a conversion function, if you call it with
the "not"(a) format.


Thanks for your advice I tried it in the x0 => "not"(a(0)) format but it
doesn't work I always get a "U" for x(0).... Any Idea?

greetings Steve
 
M

Mike Treseler

Steve said:
Thanks for your advice I tried it in the x0 => "not"(a(0)) format but it
doesn't work I always get a "U" for x(0).... Any Idea?

The fact that you were able to compile
and run a sim implies that Jim's idea worked.

The "U" is coming from the process driving "a".
Maybe the model or testbench is not initializing this signal.

-- Mike Treseler
 
S

Steve Harrad

The "U" is coming from the process driving "a".
Maybe the model or testbench is not initializing this signal

Thanks for your answere i get this warning

# ELBREAD: Elaboration process.
# ELBREAD: Warning: Actual parameter a{0}~0 not found.
# : Warning: Unit: csa(rtl)
# : Warning: (a{0}~0(_function 268435975))

I only want the inverse of the LSB of the content in the ulogic_vector a...

Some hints?
 
M

Mike Treseler

Steve said:
# ELBREAD: Warning: Actual parameter a{0}~0 not found.
# : Warning: Unit: csa(rtl)
# : Warning: (a{0}~0(_function 268435975))

The conventional way to do this is to declare signals
and add parallel assignments to cover the function.

a0_n <= not a(0);
b0_n <= not b(0);

MUL0: MULTI
port map(
x0 => a0_n,
y0 => b0_n,
-- . . .


-- Mike Treseler
 

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,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top