Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > Need some help!

Thread Tools

Need some help!
Posts: n/a
Why am I getting this error:

ERROR:Xst:528 - Multi-source in Unit <waittime> on signal <z>
Sources are:
Signal <z> in Unit <waittime> is assigned to GND
ERROR:Xst:415 - Synthesis failed
CPU : 1.72 / 2.52 s | Elapsed : 2.00 / 3.00 s

I have a very simple schematic with waittime going out to an output


library IEEE;

-- Uncomment the following lines to use the declarations that are
-- provided for instantiating Xilinx primitive components.
--library UNISIM;
--use UNISIM.VComponents.all;

entity waittime is
Port ( z : out std_logic);
end waittime;

architecture Behavioral of waittime is

z <= '1' after 500000000 ns;

z <= '0' after 500000000 ns;

end Behavioral;

I am using a CR-II c256 and ISE 6.3.03i.

Any help would be appreciated!


Reply With Quote
Posts: n/a
Looks like your code is meant for simulation purposes. And you have 2
concurrent signal assignment statements on "z" which is z <= '1' follwed
by z <= '0'. thats why you are getting the multisource error.
Doing something like z <= not z after 50 ns woulg give you a toggling
signal "z". Make sure you initialize "z" to '0'. After clauses are for sim
purposes only. I am assuming you are just doing a simulation here.

Reply With Quote
Posts: n/a
I am actually wanting the cpld to toggle the signal for real not for
just simulation. What should I use instead of "after"? How should I
toggle it so I do not get the multisource error?

Thanks in advance,

Reply With Quote
Posts: n/a
You have to use a clock to do your toggling. You can have two states in a
state machine where in state 1, you set z to 0, and in state 2 z is set
to 1 and this state machine is clocked by your 50 ns clock. z would then
be a toggling signal.

Reply With Quote
Ralf Hildebrandt
Posts: n/a
      04-09-2005 Removed) wrote:

> ERROR:Xst:528 - Multi-source in Unit <waittime> on signal <z>

You are driving a value to one signal from more than one process. (Note
that every concurrent statement ist also considered as a process.)


Just a note: It is not recommended to used these libraries, as their
implementation dependts on the simulator / synthesizer. Use
IEEE.Numeric_std.ALL instead.

> begin
> z <= '1' after 500000000 ns;
> z <= '0' after 500000000 ns;
> end Behavioral;

Two concurrent statements driving z.

process -- no sensitivity list - triggered at simulation start
z <= '1' after 500000000 ns;
z <= '0' after 500000000 ns;
wait; -- uncomment to execute the process again after end
end process;

Note: This is only for simulation. the after-clause is NOT synthesizable.

Whats your intention for this piece of code? Is it a clock or just a
signal, that should be high and go to low later.
If it is a clock - take an internal clock generator from you FPGA or use
the clock via a FPGA input pin.
I it is a signal - you need a clock with a period suitable for you
desired "delays". Test e.g. for the rising_edge(clock).

Reply With Quote

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
Need some help fixing some HTML and CSS problems Domino HTML 5 11-05-2006 09:58 PM
Wanna make some dough? I need some FO docs created. Holmes! XML 2 04-02-2005 10:43 PM
Need some help for some perl homework.... Perl 0 02-25-2004 01:45 AM
Forms Authentication question: How to have some pages open and some requiring forms authentication Eric ASP .Net 2 02-13-2004 02:14 PM
Some questions regarding 070-305 and hopefully some right answers. Needs correction... wink, wink ;-) Daniel Walzenbach MCSD 1 11-10-2003 12:25 AM