Signal Attribute Issue

Discussion in 'VHDL' started by Calvin, Mar 17, 2005.

  1. Calvin

    Calvin Guest

    In the following codes:

    if (A'delayed(Th)'event and rd1= '1') then
    if (rd1'last_event > Th) then
    if (BHE_n = '0') then
    ASSERT (IO1'LAST_EVENT = 0 ns) or (IO1'LAST_EVENT > Th)
    REPORT "DATA HOLD1 FROM ADDRESS CHANGE TIME VIOLATION"
    SEVERITY Error;
    end if;
    end if;

    Th = 0 ns, originally. I got error report when A and IO1 changed 1-2 ns
    after rd1 = '1'.

    To allow more time for A and IO1 to settle, I changed Th to 5 ns.
    However I still got the same error report.

    What was wrong ?

    Thanks,

    Calvin
     
    Calvin, Mar 17, 2005
    #1
    1. Advertising

  2. Calvin

    Alan Fitch Guest

    Calvin wrote:
    > In the following codes:
    >
    > if (A'delayed(Th)'event and rd1= '1') then
    > if (rd1'last_event > Th) then
    > if (BHE_n = '0') then
    > ASSERT (IO1'LAST_EVENT = 0 ns) or (IO1'LAST_EVENT > Th)
    > REPORT "DATA HOLD1 FROM ADDRESS CHANGE TIME VIOLATION"
    > SEVERITY Error;
    > end if;
    > end if;
    >
    > Th = 0 ns, originally. I got error report when A and IO1 changed 1-2 ns
    > after rd1 = '1'.
    >
    > To allow more time for A and IO1 to settle, I changed Th to 5 ns.
    > However I still got the same error report.
    >
    > What was wrong ?
    >


    I'm not sure I understand the problem, but your report says "data hold1
    from address change time violation". So I wonder if you could use a
    simpler approach

    process
    begin
    wait on A;
    wait for Th;
    if rd1 = '1' and BHE_n = '0' then
    assert IO1'STABLE(Th)
    report "DATA HOLD1 FROM ADDRESS CHANGE TIME VIOLATION";
    end process;

    I've probably misunderstood what you are doing, but I think the simplest
    way to check a hold time is to wait until the hold time is ended and
    then look backwards using 'STABLE,

    regards
    Alan
    --
    Alan Fitch
    Doulos Ltd
    http://www.doulos.com
     
    Alan Fitch, Mar 18, 2005
    #2
    1. Advertising

  3. Calvin

    Milos Guest

    Hi,

    If You want to check for HOLD violation, I think that You should use
    VitalSetupHoldCheck procedure (part of the IEEE.VITAL_timing package).
    For more info on this checkout http://vhdl.org/fmf and see how it is
    done.

    Best regards,
    Milos

    Alan Fitch wrote:
    > Calvin wrote:
    > > In the following codes:
    > >
    > > if (A'delayed(Th)'event and rd1= '1') then
    > > if (rd1'last_event > Th) then
    > > if (BHE_n = '0') then
    > > ASSERT (IO1'LAST_EVENT = 0 ns) or (IO1'LAST_EVENT > Th)
    > > REPORT "DATA HOLD1 FROM ADDRESS CHANGE TIME VIOLATION"
    > > SEVERITY Error;
    > > end if;
    > > end if;
    > >
    > > Th = 0 ns, originally. I got error report when A and IO1 changed

    1-2 ns
    > > after rd1 = '1'.
    > >
    > > To allow more time for A and IO1 to settle, I changed Th to 5 ns.
    > > However I still got the same error report.
    > >
    > > What was wrong ?
    > >

    >
    > I'm not sure I understand the problem, but your report says "data

    hold1
    > from address change time violation". So I wonder if you could use a
    > simpler approach
    >
    > process
    > begin
    > wait on A;
    > wait for Th;
    > if rd1 = '1' and BHE_n = '0' then
    > assert IO1'STABLE(Th)
    > report "DATA HOLD1 FROM ADDRESS CHANGE TIME VIOLATION";
    > end process;
    >
    > I've probably misunderstood what you are doing, but I think the

    simplest
    > way to check a hold time is to wait until the hold time is ended and
    > then look backwards using 'STABLE,
    >
    > regards
    > Alan
    > --
    > Alan Fitch
    > Doulos Ltd
    > http://www.doulos.com
     
    Milos, Mar 21, 2005
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Michael Pronath
    Replies:
    1
    Views:
    1,236
    Diez B. Roggisch
    Jan 3, 2005
  2. Jack Orenstein

    threading.Thread vs. signal.signal

    Jack Orenstein, Sep 18, 2005, in forum: Python
    Replies:
    0
    Views:
    497
    Jack Orenstein
    Sep 18, 2005
  3. Weng Tianxiang
    Replies:
    2
    Views:
    688
    Jonathan Bromley
    Jan 30, 2007
  4. Nicolas Moreau
    Replies:
    9
    Views:
    3,350
  5. dibacco73
    Replies:
    1
    Views:
    695
    joris
    Feb 12, 2009
Loading...

Share This Page