From: Rob Gaddi on
On 5/13/2010 1:56 PM, rickman wrote:
> On May 13, 3:25 pm, John McCaskill<jhmccask...(a)gmail.com> wrote:
>> On May 13, 1:14 pm, rickman<gnu...(a)gmail.com> wrote:
>>
>>
>>
>>> On May 13, 10:18 am, John McCaskill<jhmccask...(a)gmail.com> wrote:
>>
>>>> On May 13, 8:53 am, Sharath Raju<brshar...(a)gmail.com> wrote:
>>
>>>>> Hello,
>>
>>>>> I am facing a problem of clock signals being generated by
>>>>> combinatorial logic.
>>
>>>>> Here is the timing report:
>>
>>>>> TIMING REPORT
>>
>>>>> NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE.
>>>>> FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT
>>>>> GENERATED AFTER PLACE-and-ROUTE.
>>
>>>>> Clock Information:
>>>>> ------------------
>>>>> -----------------------------------+------------------------+-------+
>>>>> Clock Signal | Clock buffer(FF name) | Load |
>>>>> -----------------------------------+------------------------+-------+
>>>>> clk | BUFGP | 23 |
>>>>> Dec_cnt(Dec_cnt1:O) | NONE(*)(Int_count_1) | 10 |
>>>>> -----------------------------------+------------------------+-------+
>>>>> (*) This 1 clock signal(s) are generated by combinatorial logic,
>>>>> and XST is not able to identify which are the primary clock signals.
>>>>> Please use the CLOCK_SIGNAL constraint to specify the clock signal(s)
>>>>> generated by combinatorial logic.
>>
>>>>> clk is my "true" clock signal, whereas Dec_cnt is some other
>>>>> combinatorial signal.
>>
>>>>> I have tried using the CLOCK_SIGNAL constraint both in my source file,
>>>>> as follows:
>>
>>>>> attribute clock_signal : string;
>>>>> attribute clock_signal of clk : signal is "yes";
>>>>> attribute clock_signal of Dec_cnt : signal is "no";
>>
>>>>> and in the xilinx constraints file (.xcf)
>>
>>>>> BEGIN MODEL sdmac
>>>>> NET "clk" CLK_SIGNAL = yes;
>>>>> END;
>>
>>>>> In either case, I get the same problem.
>>
>>>>> Here is my source file:http://sites.google.com/site/brsharath/sdmac_signal_sched.vhd?attredi...
>>
>>>>> Please help
>>
>>>> The problem is this bit of code:
>>
>>>> process (Inc_cnt, Dec_cnt)
>>>> begin
>>>> if Inc_cnt = '1' then
>>>> Int_count<= Int_count + 1;
>>>> elsif Dec_cnt = '1' then
>>>> Int_count<= Int_count - 1;
>>>> end if;
>>
>>>> end process;
>>
>>>> Inc_cnt looks like an asynchronous reset, and Dec_cnt looks like the
>>>> clock.
>>
>>>> If you wanted this to be a clocked process, put the clock in the
>>>> sensitivity list and remove Inc_cnt and Dec_cnt.
>>
>>>> Regards,
>>
>>>> John McCaskillwww.FasterTechnology.com
>>
>>> This is not describing edge sensitive clocked logic. It is describing
>>> a latch. But both signals, Inc_cnt and Dec_cnt would be used to
>>> generate the latch enable. So the question is whether the OP intended
>>> this to use a latch or if it was supposed to be clocked by a system
>>> clock edge. The danger in this case is that the logic is a feedback
>>> loop and if the enable is asserted long enough for a change on the
>>> output to reach back around to the input, it would be counting up or
>>> down at its fastest possible rate the entire time the enable is
>>> asserted.
>>
>>> I haven't looked at the code. Is it possible this was meant to use
>>> separate signals for cur_count and nxt_count with cur_count a register
>>> and nxt_count the logic output?
>>
>>> Rick
>>
>> Actually, it is just incorrect.
>>
>> If if is supposed to be a latch (but I hope not), it should also have
>> Int_count in the sensitivity list. As written, it will synthesize with
>> warnings as a latch, but not simulate as one. This is still the cause
>> of Dec_cnt being reported as a clock.
>>
>> Int_count is not used outside of this process, so it is not clear what
>> the intention was.
>>
>> Int_count is also defined as std_logic_vector, which is a problem. A
>> std_logic_vector has no numerical value.
>>
>> I would also replace:
>>
>> use IEEE.STD_LOGIC_ARITH.ALL;
>> use IEEE.STD_LOGIC_UNSIGNED.ALL;
>>
>> with:
>>
>> use IEEE.NUMERIC_STD.ALL;
>
> Yeah, I guess the code is pretty ugly. Why, after all these years of
> people discussing the issues with std_logic_unsigned, et. al., do
> people still start out this way? Do they teach this in the
> universities or something?
>
> Rick

I know that all of Xilinx's example code and templates still don't use
numeric_std. No idea how the template code from the other vendors looks.

--
Rob Gaddi, Highland Technology
Email address is currently out of order
From: John McCaskill on
On May 13, 4:13 pm, Rob Gaddi <rga...(a)technologyhighland.com> wrote:
> On 5/13/2010 1:56 PM, rickman wrote:
>
>
>
> > On May 13, 3:25 pm, John McCaskill<jhmccask...(a)gmail.com>  wrote:
> >> On May 13, 1:14 pm, rickman<gnu...(a)gmail.com>  wrote:
>
> >>> On May 13, 10:18 am, John McCaskill<jhmccask...(a)gmail.com>  wrote:
>
> >>>> On May 13, 8:53 am, Sharath Raju<brshar...(a)gmail.com>  wrote:
>
> >>>>> Hello,
>
> >>>>> I am facing a problem of clock signals being generated by
> >>>>> combinatorial logic.
>
> >>>>> Here is the timing report:
>
> >>>>> TIMING REPORT
>
> >>>>> NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE.
> >>>>>        FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT
> >>>>>        GENERATED AFTER PLACE-and-ROUTE.
>
> >>>>> Clock Information:
> >>>>> ------------------
> >>>>> -----------------------------------+------------------------+-------+
> >>>>> Clock Signal                       | Clock buffer(FF name)  | Load  |
> >>>>> -----------------------------------+------------------------+-------+
> >>>>> clk                                | BUFGP                  | 23    |
> >>>>> Dec_cnt(Dec_cnt1:O)                | NONE(*)(Int_count_1)   | 10    |
> >>>>> -----------------------------------+------------------------+-------+
> >>>>> (*) This 1 clock signal(s) are generated by combinatorial logic,
> >>>>> and XST is not able to identify which are the primary clock signals..
> >>>>> Please use the CLOCK_SIGNAL constraint to specify the clock signal(s)
> >>>>> generated by combinatorial logic.
>
> >>>>> clk is my "true" clock signal, whereas Dec_cnt is some other
> >>>>> combinatorial signal.
>
> >>>>> I have tried using the CLOCK_SIGNAL constraint both in my source file,
> >>>>> as follows:
>
> >>>>> attribute clock_signal : string;
> >>>>> attribute clock_signal of clk : signal is "yes";
> >>>>> attribute clock_signal of Dec_cnt : signal is "no";
>
> >>>>> and in the xilinx constraints file (.xcf)
>
> >>>>> BEGIN MODEL sdmac
> >>>>>   NET "clk" CLK_SIGNAL = yes;
> >>>>> END;
>
> >>>>> In either case, I get the same problem.
>
> >>>>> Here is my source file:http://sites.google.com/site/brsharath/sdmac_signal_sched.vhd?attredi...
>
> >>>>> Please help
>
> >>>> The problem is this bit of code:
>
> >>>> process (Inc_cnt, Dec_cnt)
> >>>> begin
> >>>>    if Inc_cnt = '1' then
> >>>>      Int_count<= Int_count + 1;
> >>>>    elsif Dec_cnt = '1' then
> >>>>      Int_count<= Int_count - 1;
> >>>>    end if;
>
> >>>> end process;
>
> >>>> Inc_cnt looks like an asynchronous reset, and Dec_cnt looks like the
> >>>> clock.
>
> >>>> If you wanted this to be a clocked process, put the clock in the
> >>>> sensitivity list and remove Inc_cnt and Dec_cnt.
>
> >>>> Regards,
>
> >>>> John McCaskillwww.FasterTechnology.com
>
> >>> This is not describing edge sensitive clocked logic.  It is describing
> >>> a latch.  But both signals, Inc_cnt and Dec_cnt would be used to
> >>> generate the latch enable.  So the question is whether the OP intended
> >>> this to use a latch or if it was supposed to be clocked by a system
> >>> clock edge.  The danger in this case is that the logic is a feedback
> >>> loop and if the enable is asserted long enough for a change on the
> >>> output to reach back around to the input, it would be counting up or
> >>> down at its fastest possible rate the entire time the enable is
> >>> asserted.
>
> >>> I haven't looked at the code.  Is it possible this was meant to use
> >>> separate signals for cur_count and nxt_count with cur_count a register
> >>> and nxt_count the logic output?
>
> >>> Rick
>
> >> Actually, it is just incorrect.
>
> >> If if is supposed to be a latch (but I hope not), it should also have
> >> Int_count in the sensitivity list. As written, it will synthesize with
> >> warnings as a latch, but not simulate as one.  This is still the cause
> >> of Dec_cnt being reported as a clock.
>
> >> Int_count is not used outside of this process, so it is not clear what
> >> the intention was.
>
> >> Int_count is also defined as std_logic_vector, which is a problem.  A
> >> std_logic_vector has no numerical value.
>
> >> I would also replace:
>
> >> use IEEE.STD_LOGIC_ARITH.ALL;
> >> use IEEE.STD_LOGIC_UNSIGNED.ALL;
>
> >> with:
>
> >> use IEEE.NUMERIC_STD.ALL;
>
> > Yeah, I guess the code is pretty ugly.  Why, after all these years of
> > people discussing the issues with std_logic_unsigned, et. al., do
> > people still start out this way?  Do they teach this in the
> > universities or something?
>
> > Rick
>
> I know that all of Xilinx's example code and templates still don't use
> numeric_std.  No idea how the template code from the other vendors looks.
>
> --
> Rob Gaddi, Highland Technology
> Email address is currently out of order

This is starting to change. The Xilinx VHDL course recommends
numeric_std since the 11.1 version, and the create new source wizard
in ISE 12.1 uses numeric_std now. I still see templates and examples
that don't use it. I expect (but don't know) that will change over the
next few releases.

Regards,

John McCaskill
www.FasterTechnology.com
From: Sharath Raju on
On May 14, 2:43 am, John McCaskill <jhmccask...(a)gmail.com> wrote:
> On May 13, 4:13 pm, Rob Gaddi <rga...(a)technologyhighland.com> wrote:
>
>
>
> > On 5/13/2010 1:56 PM, rickman wrote:
>
> > > On May 13, 3:25 pm, John McCaskill<jhmccask...(a)gmail.com>  wrote:
> > >> On May 13, 1:14 pm, rickman<gnu...(a)gmail.com>  wrote:
>
> > >>> On May 13, 10:18 am, John McCaskill<jhmccask...(a)gmail.com>  wrote:
>
> > >>>> On May 13, 8:53 am, Sharath Raju<brshar...(a)gmail.com>  wrote:
>
> > >>>>> Hello,
>
> > >>>>> I am facing a problem of clock signals being generated by
> > >>>>> combinatorial logic.
>
> > >>>>> Here is the timing report:
>
> > >>>>> TIMING REPORT
>
> > >>>>> NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE.
> > >>>>>        FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT
> > >>>>>        GENERATED AFTER PLACE-and-ROUTE.
>
> > >>>>> Clock Information:
> > >>>>> ------------------
> > >>>>> -----------------------------------+------------------------+-------+
> > >>>>> Clock Signal                       | Clock buffer(FF name)  | Load  |
> > >>>>> -----------------------------------+------------------------+-------+
> > >>>>> clk                                | BUFGP                  | 23    |
> > >>>>> Dec_cnt(Dec_cnt1:O)                | NONE(*)(Int_count_1)   | 10    |
> > >>>>> -----------------------------------+------------------------+-------+
> > >>>>> (*) This 1 clock signal(s) are generated by combinatorial logic,
> > >>>>> and XST is not able to identify which are the primary clock signals.
> > >>>>> Please use the CLOCK_SIGNAL constraint to specify the clock signal(s)
> > >>>>> generated by combinatorial logic.
>
> > >>>>> clk is my "true" clock signal, whereas Dec_cnt is some other
> > >>>>> combinatorial signal.
>
> > >>>>> I have tried using the CLOCK_SIGNAL constraint both in my source file,
> > >>>>> as follows:
>
> > >>>>> attribute clock_signal : string;
> > >>>>> attribute clock_signal of clk : signal is "yes";
> > >>>>> attribute clock_signal of Dec_cnt : signal is "no";
>
> > >>>>> and in the xilinx constraints file (.xcf)
>
> > >>>>> BEGIN MODEL sdmac
> > >>>>>   NET "clk" CLK_SIGNAL = yes;
> > >>>>> END;
>
> > >>>>> In either case, I get the same problem.
>
> > >>>>> Here is my source file:http://sites.google.com/site/brsharath/sdmac_signal_sched.vhd?attredi...
>
> > >>>>> Please help
>
> > >>>> The problem is this bit of code:
>
> > >>>> process (Inc_cnt, Dec_cnt)
> > >>>> begin
> > >>>>    if Inc_cnt = '1' then
> > >>>>      Int_count<= Int_count + 1;
> > >>>>    elsif Dec_cnt = '1' then
> > >>>>      Int_count<= Int_count - 1;
> > >>>>    end if;
>
> > >>>> end process;
>
> > >>>> Inc_cnt looks like an asynchronous reset, and Dec_cnt looks like the
> > >>>> clock.
>
> > >>>> If you wanted this to be a clocked process, put the clock in the
> > >>>> sensitivity list and remove Inc_cnt and Dec_cnt.
>
> > >>>> Regards,
>
> > >>>> John McCaskillwww.FasterTechnology.com
>
> > >>> This is not describing edge sensitive clocked logic.  It is describing
> > >>> a latch.  But both signals, Inc_cnt and Dec_cnt would be used to
> > >>> generate the latch enable.  So the question is whether the OP intended
> > >>> this to use a latch or if it was supposed to be clocked by a system
> > >>> clock edge.  The danger in this case is that the logic is a feedback
> > >>> loop and if the enable is asserted long enough for a change on the
> > >>> output to reach back around to the input, it would be counting up or
> > >>> down at its fastest possible rate the entire time the enable is
> > >>> asserted.
>
> > >>> I haven't looked at the code.  Is it possible this was meant to use
> > >>> separate signals for cur_count and nxt_count with cur_count a register
> > >>> and nxt_count the logic output?
>
> > >>> Rick
>
> > >> Actually, it is just incorrect.
>
> > >> If if is supposed to be a latch (but I hope not), it should also have
> > >> Int_count in the sensitivity list. As written, it will synthesize with
> > >> warnings as a latch, but not simulate as one.  This is still the cause
> > >> of Dec_cnt being reported as a clock.
>
> > >> Int_count is not used outside of this process, so it is not clear what
> > >> the intention was.
>
> > >> Int_count is also defined as std_logic_vector, which is a problem.  A
> > >> std_logic_vector has no numerical value.
>
> > >> I would also replace:
>
> > >> use IEEE.STD_LOGIC_ARITH.ALL;
> > >> use IEEE.STD_LOGIC_UNSIGNED.ALL;
>
> > >> with:
>
> > >> use IEEE.NUMERIC_STD.ALL;
>
> > > Yeah, I guess the code is pretty ugly.  Why, after all these years of
> > > people discussing the issues with std_logic_unsigned, et. al., do
> > > people still start out this way?  Do they teach this in the
> > > universities or something?
>
> > > Rick
>
> > I know that all of Xilinx's example code and templates still don't use
> > numeric_std.  No idea how the template code from the other vendors looks.
>
> > --
> > Rob Gaddi, Highland Technology
> > Email address is currently out of order
>
> This is starting to change.  The Xilinx VHDL course recommends
> numeric_std since the 11.1 version, and the create new source wizard
> in ISE 12.1 uses numeric_std now.  I still see templates and examples
> that don't use it. I expect (but don't know) that will change over the
> next few releases.
>
> Regards,
>
> John McCaskillwww.FasterTechnology.com

Thanks for your inputs.

I don't want the process (Inc_cnt, Dec_cnt) to be a clocked process.
Inc_cnt and Dec_cnt are control signals that if set, either increment
or decrement the Int_count counter signal. Hence the reason for
putting Inc_cnt and Dec_cnt in the sensitivity list.

The purpose of the code is to :
1. delay del_X signal by one clock cycle,
2. Multiply X (8-bit) and del_X (8-bit), and accumulate the product
into a register Y (24 bit).

I have split the accumulation into two steps.
14 bit addition (Sum signal) , followed by a 10-bit counter that
updates the (Int_count signal) if an overflow (Inc_cnt signal) or a
borrow (Dec_cnt signal) is generated by the addition operation.
From: Andy Peters on
On May 13, 2:43 pm, John McCaskill <jhmccask...(a)gmail.com> wrote:
> On May 13, 4:13 pm, Rob Gaddi <rga...(a)technologyhighland.com> wrote:
>
>
>
> > On 5/13/2010 1:56 PM, rickman wrote:
>
> > > On May 13, 3:25 pm, John McCaskill<jhmccask...(a)gmail.com>  wrote:
> > >> On May 13, 1:14 pm, rickman<gnu...(a)gmail.com>  wrote:
>
> > >>> On May 13, 10:18 am, John McCaskill<jhmccask...(a)gmail.com>  wrote:
>
> > >>>> On May 13, 8:53 am, Sharath Raju<brshar...(a)gmail.com>  wrote:
>
> > >>>>> Hello,
>
> > >>>>> I am facing a problem of clock signals being generated by
> > >>>>> combinatorial logic.
>
> > >>>>> Here is the timing report:
>
> > >>>>> TIMING REPORT
>
> > >>>>> NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE.
> > >>>>>        FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT
> > >>>>>        GENERATED AFTER PLACE-and-ROUTE.
>
> > >>>>> Clock Information:
> > >>>>> ------------------
> > >>>>> -----------------------------------+------------------------+-------+
> > >>>>> Clock Signal                       | Clock buffer(FF name)  | Load  |
> > >>>>> -----------------------------------+------------------------+-------+
> > >>>>> clk                                | BUFGP                  | 23    |
> > >>>>> Dec_cnt(Dec_cnt1:O)                | NONE(*)(Int_count_1)   | 10    |
> > >>>>> -----------------------------------+------------------------+-------+
> > >>>>> (*) This 1 clock signal(s) are generated by combinatorial logic,
> > >>>>> and XST is not able to identify which are the primary clock signals.
> > >>>>> Please use the CLOCK_SIGNAL constraint to specify the clock signal(s)
> > >>>>> generated by combinatorial logic.
>
> > >>>>> clk is my "true" clock signal, whereas Dec_cnt is some other
> > >>>>> combinatorial signal.
>
> > >>>>> I have tried using the CLOCK_SIGNAL constraint both in my source file,
> > >>>>> as follows:
>
> > >>>>> attribute clock_signal : string;
> > >>>>> attribute clock_signal of clk : signal is "yes";
> > >>>>> attribute clock_signal of Dec_cnt : signal is "no";
>
> > >>>>> and in the xilinx constraints file (.xcf)
>
> > >>>>> BEGIN MODEL sdmac
> > >>>>>   NET "clk" CLK_SIGNAL = yes;
> > >>>>> END;
>
> > >>>>> In either case, I get the same problem.
>
> > >>>>> Here is my source file:http://sites.google.com/site/brsharath/sdmac_signal_sched.vhd?attredi...
>
> > >>>>> Please help
>
> > >>>> The problem is this bit of code:
>
> > >>>> process (Inc_cnt, Dec_cnt)
> > >>>> begin
> > >>>>    if Inc_cnt = '1' then
> > >>>>      Int_count<= Int_count + 1;
> > >>>>    elsif Dec_cnt = '1' then
> > >>>>      Int_count<= Int_count - 1;
> > >>>>    end if;
>
> > >>>> end process;
>
> > >>>> Inc_cnt looks like an asynchronous reset, and Dec_cnt looks like the
> > >>>> clock.
>
> > >>>> If you wanted this to be a clocked process, put the clock in the
> > >>>> sensitivity list and remove Inc_cnt and Dec_cnt.
>
> > >>>> Regards,
>
> > >>>> John McCaskillwww.FasterTechnology.com
>
> > >>> This is not describing edge sensitive clocked logic.  It is describing
> > >>> a latch.  But both signals, Inc_cnt and Dec_cnt would be used to
> > >>> generate the latch enable.  So the question is whether the OP intended
> > >>> this to use a latch or if it was supposed to be clocked by a system
> > >>> clock edge.  The danger in this case is that the logic is a feedback
> > >>> loop and if the enable is asserted long enough for a change on the
> > >>> output to reach back around to the input, it would be counting up or
> > >>> down at its fastest possible rate the entire time the enable is
> > >>> asserted.
>
> > >>> I haven't looked at the code.  Is it possible this was meant to use
> > >>> separate signals for cur_count and nxt_count with cur_count a register
> > >>> and nxt_count the logic output?
>
> > >>> Rick
>
> > >> Actually, it is just incorrect.
>
> > >> If if is supposed to be a latch (but I hope not), it should also have
> > >> Int_count in the sensitivity list. As written, it will synthesize with
> > >> warnings as a latch, but not simulate as one.  This is still the cause
> > >> of Dec_cnt being reported as a clock.
>
> > >> Int_count is not used outside of this process, so it is not clear what
> > >> the intention was.
>
> > >> Int_count is also defined as std_logic_vector, which is a problem.  A
> > >> std_logic_vector has no numerical value.
>
> > >> I would also replace:
>
> > >> use IEEE.STD_LOGIC_ARITH.ALL;
> > >> use IEEE.STD_LOGIC_UNSIGNED.ALL;
>
> > >> with:
>
> > >> use IEEE.NUMERIC_STD.ALL;
>
> > > Yeah, I guess the code is pretty ugly.  Why, after all these years of
> > > people discussing the issues with std_logic_unsigned, et. al., do
> > > people still start out this way?  Do they teach this in the
> > > universities or something?
>
> > > Rick
>
> > I know that all of Xilinx's example code and templates still don't use
> > numeric_std.  No idea how the template code from the other vendors looks.
>
> > --
> > Rob Gaddi, Highland Technology
> > Email address is currently out of order
>
> This is starting to change.  The Xilinx VHDL course recommends
> numeric_std since the 11.1 version, and the create new source wizard
> in ISE 12.1 uses numeric_std now.  I still see templates and examples
> that don't use it. I expect (but don't know) that will change over the
> next few releases.

It only took about a decade of complaints and Web Cases to make this
happen ...

-a
From: Sharath Raju on
On May 16, 11:07 am, Ralf Hildebrandt <Ralf-Hildebra...(a)gmx.de> wrote:
> Am 13.05.2010 16:18, schrieb John McCaskill:
>
> > The problem is this bit of code:
>
> > process (Inc_cnt, Dec_cnt)
> > begin
> >   if Inc_cnt = '1' then
> >     Int_count <= Int_count + 1;
> >   elsif Dec_cnt = '1' then
> >     Int_count <= Int_count - 1;
> >   end if;
>
> > end process;
>
> > Inc_cnt looks like an asynchronous reset, and Dec_cnt looks like the
> > clock.
>
> You pointed out a very bad piece of code, but it is not a flipflop - it
> is a latch as rickman has already pointed out.
>
> It has 2 big design errors:
>
> 1) muxed latch: Inc_cnt and Dec_cnt drive latch-enable and mux-select.
> This is very bad design because no one can say if the latch-enable or
> the mux-select chances first in the moment when Inc_cnt / Dec_cnt become
> inactive.
>
> 2) infinite loop: As long as Inc_cnt / Dec_cnt is enable, Int_count is
> incremented / decremented. During simulation this problem did not show
> up, because the sensitivity list of this process is incomplete. Put
> Int_count into the sensitivity list and the simulator will freeze forever..
>
> Ralf

I have rewritten the bad piece of code, but still a latch is
synthesized for Int_count signal. Can anybody tell what is wrong with
this piece of code ?

process (Inc_cnt, Dec_cnt, RST)
begin
if RST = '0' then
Int_count <= (others => '0');
elsif Inc_cnt = '1' then
Int_count <= Int_count + 1;
elsif Dec_cnt = '1' then
Int_count <= Int_count - 1;
else
Int_count <= Int_count + 0; -- I want to do a "no operation" here.
end if;

end process;