New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for Cadence Incisive #7
Comments
Hi Coliin |
Thanks, compilation works without problems in IUS version 15.10 now!
|
Sorry, I spoke too soon - I get the same errors about |
I created a pull request for Makefile improvements for simulating the demos. This needs further changes in order to have them compile:
In simulation of
|
Updated to Try4 (please skip Try3). It looks like the allocations in AlertLogPkg have not happened yet. Not good. Added debug code to AlertLogPkg. Added wait for 1 ns to Demo programs to give it time to happen. If it does not happen, it never will at that point. If the call to SetLogEnable returns Did you by chance try AlertLogPkg_alt1? It tries to fix LocalInitialize by replicating the code. It may be worth trying if the above does not work. However, it may also bring us back to compile errors. If neither of the above work, I have a couple of other things to try. The fall back alternative is not to initialize the data structure and require the user to do it with a call to InitializeAlertLogStruct. |
AlertLogPkg_alt1.vhd gives me
Will try the rest now. |
Using AlertLogPkg.vhd, it's pretty much the same:
(Had to make a small patch:
) |
Sorry about not compiling Try3 first. I rectified that in Try4. |
I think I found it. I just pushed some changes. In the demo programs there was a concurrent call to SetLogEnable. I put it into a process. I also put a wait for 1 ns before it. SetLogEnable makes a call into the AlertLog Structure. If Cadence tries to optimize this and evaluate it during initialization, then there would be a race condition between the data structure being constructed in the package body and the call. Other simulators had issues with concurrent method calls in the past. If you would, please try this first. |
Hmm, for some reason, a simple git pull didn't give me try4 apparently. I don't really know git... Ok, so I used AlertLogPkg_try6.vhd and uncommented the line
|
I am leaving on a month long trip on Friday. To accelerate the debug process, I included a couple of variations on AlertLogPkg: Make sure to be using the updated Demo programs as the concurrent call to SetLogEnable had to be the one generating the errors, as otherwise, the error would have pointed to SetAlertLogName. If the failure switches to be on SetAlertLogName, add a wait for 1 ns before it. In AlertLogPkg_try5.vhd, I changed the allocation to be in a function call rather than directly initialize the object as in the current AlertLogPkg.vhd. If this works in Cadence, this is a template that I would like to use to refactor some of the code, and hopefully, work the Cadence and Standard variations of this code to match in this part of the code. If the current AlertLogPkg.vhd works, this one is worth pursuing. If not, it does the allocation different, so it may work where the current one does not, I am not sure - this is kind of like debugging an FPGA in the lab where you only have a high level product spec. AlertLogPkg_try6.vhd is a last resort solution. Don't bother with this step if either AlertLogPkg.vhd or AlertLogPkg_try5.vhd work. In this version, I removed the allocation from the AlertLogPkg. There is a call to InitializeAlertLogStruct that is commented out in AlertLog_Demo_Global.vhd that will need to be uncommented to test this one. AlertLog_Demo_Hierarchy.vhd will not work with try6. There are calls to GetAlertLogID in declarative regions (assigned to constants) that will not work since the structure is not allocated until run time. If this ends up the path we have to take to get Cadence working, I will update that demo program. |
For completeness' sake:
|
With AlertLogPkg.vhd:
|
The issues with AlertLogPkg_try5.vhd is a show stopper for that path. |
I can try playing with your info and the contents of the *.err files and see if I get anywhere. Have a good trip! |
I haven't given up yet. I think I understand its current issue with AlertLogPkg. I will have a patch shortly. |
Just pushed a change that should address the issues that reported against NamePkg. I suspect there will be more issues when it gets to ReportAlerts. I am working on that change now. |
Ok, I am using AlertLogPkg.vhd now and am not calling
Adding
|
I have to leave now and won't be in tomorrow. Maybe someone else can pick this up in the meantime. |
Thanks. It is getting closer. I have to meditate on the implications of those last issues. |
The latest error looks like what would be generated by the AlertLogPkg_try6 without the initialization. I am hoping to get back to the main AlertLogPkg.vhd version that generated the following. I think it is the one with any "_" in it.
I think I have fixed it in the most current AlertLogPkg.vhd. Internally to the file under the revision history, you will see Try 8 as the last update. I think your compiles have shown that all of the "_" paths have issues with them. Although I am concerned that try6 also shows that I will need to look at the deallocate and then initialize process in Cadence at some point in time - however that is not that important just now, and maybe we can leave for them to fix. |
Ok, current status is
(This is with a |
Hi Colin, |
Hi Colin, I note that one time it looked like it failed in a call to Alert. That is much further than this branch. It could have happened with a wait for 1 ns before the SetAlertLogName, like I did here. So maybe this will address it. Jim |
Hi Jim, try10 gives me
|
Hi Colin, If you want to go further, I would strip the initialization back out. This involves changing lines 537 and 538 to: And 545 to: And then on line 94 of AlertLog_Demo_Global.vhd uncommenting the call to InitializeAlertLogStruct. It is possible that this could fix it, however, reviewing the previous information, it looks like it was failing at the point at which items were being attempted to be added to the data structure. Since we have it to the point of run time failures, perhaps we can convince the Cadence folks to take a look at it. I will give it a shot on my side. Best Regards, |
Unmodified try11 indeed looks like before.
|
NewAlertLogRec is in the call path of InitializeAlertLogStruct. First the outer data structure is alloacated then there are three calls to NewAlertLogRec which tries to add the basic elements to it. Unfortunately, this failure mode is the same as the Try 10, as soon as it tries to access the data structure, it dies. Please reach out to Cadence support for help. I am reaching out to some of the contacts I have. |
Have you tried Demo_Rand.vhd? It does not have any pointers, so it should be fine. |
Have you added references to the files that is not in _github? |
Ok, I will contact Cadence. |
No, I'm purely using the GitHub clone. |
Anyone one test with a more recent Cadence release? |
With IUS 15.20-s003 and using none of the try* versions, I still get:
|
Cadence last indicated that you need to move to their new simulator to get support for protected types. |
Alright, I'll try with Xcelium soon and open a new ticket then. |
Alright, attached is the list of errors I get with the Makefile from #6. This is with irun 15.10-s013: incisive.txt
The text was updated successfully, but these errors were encountered: