Error: Actual is not a globally static expression

S

Steve Harrad

Guest
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
 
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:Jim@SynthWorks.com
SynthWorks Design Inc. http://www.SynthWorks.com
1-503-590-4787

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


Steve Harrad wrote:

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
 
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
 
Steve Harrad wrote:

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
 
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?
 
Steve Harrad wrote:

# 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
 

Welcome to EDABoard.com

Sponsor

Back
Top