Possible infinite loop in FindBinInside
Why OSVVM™? › Forums › OSVVM › Possible infinite loop in FindBinInside
- This topic has 4 replies, 2 voices, and was last updated 11 years, 3 months ago by Jim Lewis.
-
AuthorPosts
-
June 21, 2013 at 12:36 #669reuven paleyMember
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
June 21, 2013 at 13:31 #670Jim LewisMemberJune 21, 2013 at 16:04 #671reuven paleyMemberHi 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?
June 22, 2013 at 10:19 #672Jim LewisMemberHi 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
June 22, 2013 at 13:13 #673Jim LewisMemberHi 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
-
AuthorPosts
- You must be logged in to reply to this topic.