FPGARelated.com
Forums

Xilinx ISE 8.1i Trouble

Started by Alex June 20, 2006
The VHDL source and UCF file are at the bottom of this document.

The error that I'm getting is:
NCD was not produced. All logic was removed from design.  This
   is usually due to having no input or output PAD connections in the
design and
   no nets or symbols marked as 'SAVE'.  You can either add PADs or
'SAVE'
   attributes to the design, or run 'map -u' to disable logic trimming
in the
   mapper.

I've got all my ports connected (see the UCF), and my logic seems right
(it's just a sample from the Xilinx "Quick Start") ... what am I
missing?  I can get something simple working (like, OUTPUT(0) <=
SWITCH1;  -- as the whole body), but anything more complex generates
this error.

Any help would be greatly appreciated.  Thank you!



The VHDL:
entity ffff is
	Port ( CLOCK : in STD_LOGIC;
	DIRECTION : in STD_LOGIC;
	COUNT_OUT : out STD_LOGIC_VECTOR (3 downto 0));
end ffff;

architecture Behavioral of ffff is
	signal count_int : std_logic_vector(3 downto 0) := "0000";
begin
	process (CLOCK)
	begin
		if CLOCK='1' and CLOCK'event then
			if DIRECTION='1' then
				count_int <= count_int + 1;
			else
				count_int <= count_int - 1;
			end if;
		end if;
	end process;
	COUNT_OUT <= count_int;
end Behavioral;



The UCF:
NET "CLOCK"  LOC = "C9"  |  IOSTANDARD = LVCMOS33;
NET "CLOCK"  PERIOD = 20.0ns HIGH 40%;

NET "COUNT_OUT<0>"  LOC = "F12"  ;
NET "COUNT_OUT<1>"  LOC = "E12"  ;
NET "COUNT_OUT<2>"  LOC = "E11"  ;
NET "COUNT_OUT<3>"  LOC = "F11"  ; 
NET "DIRECTION"  LOC = "L13"  ;

Try

 NET "COUNT_OUT[0]"  LOC = "F12"  ;
 NET "COUNT_OUT[1]"  LOC = "E12"  ;
 NET "COUNT_OUT[2]"  LOC = "E11"  ;
 NET "COUNT_OUT[3]"  LOC = "F11"  ;

-girmann

Alex wrote:
> The VHDL source and UCF file are at the bottom of this document. > > The error that I'm getting is: > NCD was not produced. All logic was removed from design. This > is usually due to having no input or output PAD connections in the > design and > no nets or symbols marked as 'SAVE'. You can either add PADs or > 'SAVE' > attributes to the design, or run 'map -u' to disable logic trimming > in the > mapper. > > I've got all my ports connected (see the UCF), and my logic seems right > (it's just a sample from the Xilinx "Quick Start") ... what am I > missing? I can get something simple working (like, OUTPUT(0) <= > SWITCH1; -- as the whole body), but anything more complex generates > this error. > > Any help would be greatly appreciated. Thank you! > > > > The VHDL: > entity ffff is > Port ( CLOCK : in STD_LOGIC; > DIRECTION : in STD_LOGIC; > COUNT_OUT : out STD_LOGIC_VECTOR (3 downto 0)); > end ffff; > > architecture Behavioral of ffff is > signal count_int : std_logic_vector(3 downto 0) := "0000"; > begin > process (CLOCK) > begin > if CLOCK='1' and CLOCK'event then > if DIRECTION='1' then > count_int <= count_int + 1; > else > count_int <= count_int - 1; > end if; > end if; > end process; > COUNT_OUT <= count_int; > end Behavioral; > > > > The UCF: > NET "CLOCK" LOC = "C9" | IOSTANDARD = LVCMOS33; > NET "CLOCK" PERIOD = 20.0ns HIGH 40%; > > NET "COUNT_OUT<0>" LOC = "F12" ; > NET "COUNT_OUT<1>" LOC = "E12" ; > NET "COUNT_OUT<2>" LOC = "E11" ; > NET "COUNT_OUT<3>" LOC = "F11" ; > NET "DIRECTION" LOC = "L13" ;
Same exact error, I'm afraid.  Thanks for the try, though.

girmann@gmail.com wrote:
> Try > > NET "COUNT_OUT[0]" LOC = "F12" ; > NET "COUNT_OUT[1]" LOC = "E12" ; > NET "COUNT_OUT[2]" LOC = "E11" ; > NET "COUNT_OUT[3]" LOC = "F11" ; > > -girmann > > Alex wrote: > > The VHDL source and UCF file are at the bottom of this document. > > > > The error that I'm getting is: > > NCD was not produced. All logic was removed from design. This > > is usually due to having no input or output PAD connections in the > > design and > > no nets or symbols marked as 'SAVE'. You can either add PADs or > > 'SAVE' > > attributes to the design, or run 'map -u' to disable logic trimming > > in the > > mapper. > > > > I've got all my ports connected (see the UCF), and my logic seems right > > (it's just a sample from the Xilinx "Quick Start") ... what am I > > missing? I can get something simple working (like, OUTPUT(0) <= > > SWITCH1; -- as the whole body), but anything more complex generates > > this error. > > > > Any help would be greatly appreciated. Thank you! > > > > > > > > The VHDL: > > entity ffff is > > Port ( CLOCK : in STD_LOGIC; > > DIRECTION : in STD_LOGIC; > > COUNT_OUT : out STD_LOGIC_VECTOR (3 downto 0)); > > end ffff; > > > > architecture Behavioral of ffff is > > signal count_int : std_logic_vector(3 downto 0) := "0000"; > > begin > > process (CLOCK) > > begin > > if CLOCK='1' and CLOCK'event then > > if DIRECTION='1' then > > count_int <= count_int + 1; > > else > > count_int <= count_int - 1; > > end if; > > end if; > > end process; > > COUNT_OUT <= count_int; > > end Behavioral; > > > > > > > > The UCF: > > NET "CLOCK" LOC = "C9" | IOSTANDARD = LVCMOS33; > > NET "CLOCK" PERIOD = 20.0ns HIGH 40%; > > > > NET "COUNT_OUT<0>" LOC = "F12" ; > > NET "COUNT_OUT<1>" LOC = "E12" ; > > NET "COUNT_OUT<2>" LOC = "E11" ; > > NET "COUNT_OUT<3>" LOC = "F11" ; > > NET "DIRECTION" LOC = "L13" ;
"Alex" <alexmchale@gmail.com> wrote in message
news:1150811188.026823.5240@r2g2000cwb.googlegroups.com...

> The error that I'm getting is: > NCD was not produced. All logic was removed from design. This > is usually due to having no input or output PAD connections in the > design and > no nets or symbols marked as 'SAVE'.
What are you using to synthesize your design? If you are using XST (i.e. synthesis within ISE), make sure the "add I/O pads" option is checked in the GUI or passed on the command line. Otherwise the netlist created from synthesis will have no I/Os, and the mapper will throw away your design because it cannot affect the outside world... Cheers, -Ben-
Alex wrote:
> The VHDL source and UCF file are at the bottom of this document. > > The error that I'm getting is: > NCD was not produced. All logic was removed from design. This > is usually due to having no input or output PAD connections in the > design and > no nets or symbols marked as 'SAVE'. You can either add PADs or > 'SAVE' > attributes to the design, or run 'map -u' to disable logic trimming > in the > mapper. >
Might I suggest you use use the numeric_std library? That works fine for me. From the par report file: Device Utilization Summary: Number of BUFGMUXs 1 out of 16 6% Number of External IOBs 6 out of 140 4% Number of LOCed IOBs 6 out of 6 100% Number of SLICEs 3 out of 1408 1% Using this file: library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity ffff is Port ( CLOCK : in STD_LOGIC; DIRECTION : in STD_LOGIC; COUNT_OUT : out STD_LOGIC_VECTOR (3 downto 0)); end ffff; architecture Behavioral of ffff is signal count_int : unsigned(3 downto 0) := "0000"; begin process (CLOCK) begin if CLOCK='1' and CLOCK'event then if DIRECTION='1' then count_int <= count_int + 1; else count_int <= count_int - 1; end if; end if; end process; COUNT_OUT <= std_logic_vector(count_int); end Behavioral;
Yes, I am indeed using XST.  Where is this "add I/O pads" option within
ISE?

Thanks!

Alex McHale


Ben Jones wrote:
> "Alex" <alexmchale@gmail.com> wrote in message > news:1150811188.026823.5240@r2g2000cwb.googlegroups.com... > > > The error that I'm getting is: > > NCD was not produced. All logic was removed from design. This > > is usually due to having no input or output PAD connections in the > > design and > > no nets or symbols marked as 'SAVE'. > > What are you using to synthesize your design? > > If you are using XST (i.e. synthesis within ISE), make sure the "add I/O > pads" option is checked in the GUI or passed on the command line. Otherwise > the netlist created from synthesis will have no I/Os, and the mapper will > throw away your design because it cannot affect the outside world... > > Cheers, > > -Ben-
"Alex" <alexmchale@gmail.com> wrote in message
news:1150821352.453929.125790@c74g2000cwc.googlegroups.com...
> Yes, I am indeed using XST. Where is this "add I/O pads" option within > ISE?
Process Properties for XST | Xilinx Specific Options | Add I/O Buffers (should be checked). Cheers, -Ben-
In that case, that did not solve the problem.  That was already
enabled.

Any other thoughts?  This is a complete road block for me in
development.  I just don't understand why this thing won't work with
anything more complicated than directly wiring the switch to the LED.

I can send a zip of my project to anyone willing to help.  I'm using
Xilinx 8.1i WebPACK, with the latest service pack.

Thank you.

Alex McHale

Ben Jones wrote:
> "Alex" <alexmchale@gmail.com> wrote in message > news:1150821352.453929.125790@c74g2000cwc.googlegroups.com... > > Yes, I am indeed using XST. Where is this "add I/O pads" option within > > ISE? > > Process Properties for XST | Xilinx Specific Options | Add I/O Buffers > (should be checked). > > Cheers, > > -Ben-
Delving a bit deeper, I see that I am getting the following warnings
before the final error.  When I disable "Add I/O Buffers," I get these
warnings on all of my lines.  When it is enabled, I only get it for my
CLOCK.

While I'm sure my net list is correct, this must be a symptom of the
issue that's preventing my vhdl to load.

Any ideas?




WARNING:NgdBuild:483 - Attribute "LOC" on "CLOCK" is on the wrong type
of
   object.  Please see the Constraints Guide for more information on
this
   attribute.
WARNING:NgdBuild:483 - Attribute "IOSTANDARD" on "CLOCK" is on the
wrong type of
   object.  Please see the Constraints Guide for more information on
this
   attribute.

Alex wrote:

> While I'm sure my net list is correct, this must be a symptom of the > issue that's preventing my vhdl to load. > > Any ideas?
Get a vhdl simulator and learn to use it. -- Mike Treseler