Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Warns me: Xst:2170 - Unit arbitter: signal(s) form a combinatorial loop

Status
Not open for further replies.

rekhavp

Newbie level 5
Joined
Oct 21, 2014
Messages
8
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
71
Hi all

While simulating a NAND latch the following warning is produced. HOW can I eliminate this?
WARNING:Xst:2170 - Unit arbitter : the following signal(s) form a combinatorial loop: Q.code is also attached with it.


Code dot - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
 
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
 
entity arbitter is
    Port ( P,S : in  STD_LOGIC;
           Q : out  STD_LOGIC);
end arbitter;
 
architecture Behavioral of arbitter is
SIGNAL r,rbar: STD_LOGIC;
begin
rbar<=P nand r;
r<=S nand rbar;
Q<= not rbar;
end Behavioral;

 
Last edited by a moderator:

You can eliminate this by removing the combinatorial loop.
You've created a latch from logic gates. The problem is a real system has some delay through the gates, so you will get oscillation in the Q output.

So the answer is - dont create logic loops in real hardware.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top