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.

Counter Initial Value Startup Xilinx ISE WARNING:Xst:1426

Status
Not open for further replies.

dareon

Newbie level 5
Newbie level 5
Joined
Sep 2, 2010
Messages
10
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,393
Spartan 3 with Xilinx ISE11.5

I need to make some routine that will delay some routines on my FPGA for a set amount of time. The code I have chosen to do this is below and is a simple counter with initial values.

I also have a variable that will change to 1 once the counter has counted to a certain value( I want to continue to use the counter after). However, when I do this I get the warning.

WARNING:Xst:1426 - The value init of the FF/Latch STARTUP hinder the constant cleaning in the block Top.
You should achieve better results by setting this init to 1.


The code is

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity Top is
Port (
CLK : in std_logic; -- Master Clock F=60 MHz
OUTER : out std_logic;
DPDATA : inout STD_LOGIC_VECTOR(7 downto 0));
end Top;

architecture Behavioral of Top is

signal STARTUPCNT : unsigned(15 downto 0) := "0000000000000000";
signal STARTUP : STD_LOGIC := '0';

begin

STARTUPCOUNT: process(CLK)

begin
if rising_edge(CLK) then
STARTUPCNT <= STARTUPCNT + 1;

if STARTUPCNT = "0111111111111111" then
STARTUP <= '1';
DPDATA <= "11111111";
else
STARTUP <= STARTUP;
DPDATA <= "00000000";
end if;
end if;
end process;

Outer <= STARTUP;

end Behavioral;


The description xilinx gives for the error is


This warning occurs when a register with an INIT value (the initialization value that a memory element has when the FPGA is powered on) has a constant input that does not match the INIT value and no other control signal (such as a local set/reset). The constant input might be due to an undriven input or logic optimization.

To avoid the warning, examine the logic value and/or trimming at the input signal of the register. If the values of the input and INIT match, XST will be able to optimize the registers using constant optimization.


It is almost as if my counter value is not initializing correctly.
Most likely I am just doing something stupid :-/


Thank You

Russell
 

Change:
STARTUP <= '1';

to
STARTUP <= not STARTUP;

Dave
 
  • Like
Reactions: dareon

    dareon

    Points: 2
    Helpful Answer Positive Rating
Dave

That seems to have fixed it.

Basically I will use the STARTUPCNT for other timing but will not do some if statements if STARTUP = 1.
I had to changed my if statement to maintian(get) this functionality

if STARTUPCNT = "0111111111111111" and STARTUP /= '1' then

Thank You

Russell
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top