Possible infinite loop in FindBinInside

Why OSVVM™? Forums OSVVM Possible infinite loop in FindBinInside

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #669
    reuven paley
    Member

    Hi, with the following constants:

      constant C_STD_LOGIC_NE_0 : CovBinType :=
        IllegalBin(-2,-1,2) &
        IllegalBin( 1) &
        IllegalBin( 2,6,5) ;
      constant C_STD_LOGIC_NE_1 : CovBinType :=
        IllegalBin(-2,-1,2) &
        IllegalBin( 0) &
        IllegalBin( 2,6) ;

        tst_sv.AddCross(
          ONE_BIN & C_STD_LOGIC_NE_1,      — Expect 1 and flag -2..-1 and 2..6 illegal
          ONE_BIN & C_STD_LOGIC_NE_1,      — “
          ONE_BIN & C_STD_LOGIC_NE_1,      — “
          ONE_BIN & C_STD_LOGIC_NE_1,      — “
          ONE_BIN & C_STD_LOGIC_NE_1,      — “
          ONE_BIN & C_STD_LOGIC_NE_1);     — “

    The NumBins variable appears to increase without end and the function FindBinInside is hung. I think this is a bug because i think the call

        tst_sv.AddCross(
          ONE_BIN & C_STD_LOGIC_NE_1,      — Expect 1 and flag -2..-1 and 2..6 illegal
          ONE_BIN & C_STD_LOGIC_NE_1,      — “
          ONE_BIN & C_STD_LOGIC_NE_1,      — “
          ONE_BIN & C_STD_LOGIC_NE_1,      — “
          ONE_BIN ,      — “
          ONE_BIN );     — “

    doesn’t hang. This appears to be a bug.

    regards,

    reuven paley

    #670
    Jim Lewis
    Member
    #671
    reuven paley
    Member

    Hi Jim,

    i didn’t turn on merging. You’re right, i could use the ALL_ILLEGAL to flag errors. However, the reason i specified the structure the way i did was to assist debug. With ALL_ILLEGAL, the WriteBin procedure only prints that something went into an illegal bin. It is true that the data is also printed during the simulation, but the format:

    %%Illegal Value: (bin1,bin2,bin3, etc) is in an illegal Bin.

    doesn’t provide enough debug information. While i’m writing this, the thought arose in my mind to ask for the following enhancement in the next version.

    Could the information stored with the SetName procedure be printed when an illegal bin message is printed with ICover?

    #672
    Jim Lewis
    Member

    Hi Reuven,

    <Quote>Could the information stored with the SetName procedure be printed when an illegal bin message is printed with ICover?</Quote>

    Yes.  Thinking about it, it seems an oversight not to. 

    Jim

    #673
    Jim Lewis
    Member

    Hi Reuven,

    I ran this on 9.2 of ActiveHDL, 2013.02 on RivieraPro, and 10.2a of QuestaSim and I am not able to reproduce the error.  Maybe you need to send me more of the test code.

    I note that it is doing a memory allocation for  (10**6)*8 32 bit values.  It also allocates an additional (10**6)*10 memory locations in small chunks (10 integers at a time).   I have plans to update the data structure.  I will plan in changes that allow it to allocate memory in smaller chunks, say 10*3 words rather than the larger size. 

    In the mean time, I will expedite the change to the printing of illegal messages to allow you to shrink the size of your data structure.

    With the good messages, if you can live with the illegal bins as a catch all, the following only uses two bins.  The example in my previous post takes 2**6 = 64 bins. 

    tst_sv.AddCross(ONE_BIN, ONE_BIN, ONE_BIN, ONE_BIN, ONE_BIN, ONE_BIN);

    tst_sv.AddCross(ALL_ILLEGAL, ALL_ILLEGAL, ALL_ILLEGAL, ALL_ILLEGAL, ALL_ILLEGAL, ALL_ILLEGAL) ;

    Jim

Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.