-
Notifications
You must be signed in to change notification settings - Fork 15
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
ISE is not able to place and route MEGA65 any more #92
Comments
Looking at the ISE report I notice the following:
Later on in the report it says:
And finally it says:
This at least gives a hint where to look. To dive deeper, I would probably compare this report, with a successful report. @sy2002 : Do you have a time (or a commit ID) where the ISE build works ? |
Regarding the two top level files for MEGA65 (ISE and Vivado) the preferred solution is to move the clock generation to a separate file. This clock generation file will be fairly small (it will only do clock generation), and this small file can then be separated between the two builds, i.e. a |
Thank you for your support! Highly appreciated! Some comments about your findings:
You are right! This might be an attempt to fixing: I needed to deactivate HyperRAM for ISE because the way Paul programmed his driver, Vivado works but ISE is refusing to synthesize (IMHO a bug in the driver: it drives one signal with two clocks). This is why I wrote in
A also did write to Paul this here about this phenomenon:
Anyway, this is why I deactivated HyperRAM on ISE. But in the
This is the HDMI clock for the HDMI transciever chip - maybe I did some obscure typo, when migrating the pin data from
This is a great idea. There is one more reason for the two TOP files. MEGA65 has a VDAC for VGA. For some reason, Vivado @ MEGA65 needs an inverted VGA signal (otherwise VGA was blurry on the screen) while ISE @ Vivado does not. Some strange timing issue, that I never solved. ISE Code:
Vivado Code:
I am quite sure that commit 7d92c3f worked, because this was the commit, where I fixed the above-mentioned blurry Vivado and therefore I assume that ISE worked at that time, because my reference for a "non blurry picture" was ISE at that time. The date is June, 6 2020. |
Looking at the commit from June 6 I see that the HDMI was not added then. So the question is whether HDMI has ever worked on ISE ? Anyway, I could not determine the reason for why ISE is not able to place and route, given that the same design works with Vivado. I also looked into the SLOW_CLOCK issue on ISE, and I have no idea there either. I unfortunately lack experience with ISE. I feel the problems with ISE are piling up, and that we should re-consider dropping support for ISE. The only real downside with this choice is that older boards based on Spartan-3 and/or Spartan-6 are not supported by Vivado. So for instance, the old BASYS2 board from Digilent only works with ISE and not Vivado. But on the other hand, since we seem to be piling more and more features into the design, perhaps these older (and smaller) FPGAs are not interesting to work with? |
I, personally, have no objections to dropping ISE. :-) |
If possible somehow, I'd like to keep ISE, at least for 1.6 and then deprecate in 1.7. But obviously only, when we manage to let it place and route. |
@MJoergen After googling a bit, I found this here: https://forums.xilinx.com/t5/Implementation/Par-100-Design-is-not-completely-routed/td-p/477284 It looks very similar to our problem: Only 1 signal that is not routed and it also has to do with a clock. In our case, it is the signal Then I sifted through the ISE log and found this info:
So I asked myself: If we could make After googling a bit more and trying around, I still was not able to make sure that (Alternately, also this here sounds reasonable, but the above-mentioned stuff about BUFG sounds even more reasonable and therefore worth a try first. But if this does not work, then maybe this is worth at try: https://www.xilinx.com/support/answers/53008.html) |
Good catch. I'll have time next to week look into this. |
This fixes Issue #92. In general, all clock outputs from a MMCM should have a BUFG, as shown in Figure 2 of [this document](https://www.xilinx.com/support/documentation/application_notes/xapp462.pdf).
With the fix in commit 8931e57 the ISE tool is now able to generate a bit-file. I have not tested the generated bit-file. |
Hooraaaaay :-D 🥳 🎆 🍾 Thank you so much! For our portability and support for older ISE-only based platforms, this is a major step forward. I will test it right now. Sidenote (not directly related for this issue and not preventing from this issue to be closed): After reading your commit comment, I do have a hypothesis: One of the reasons, why I did two top files for the MEGA65, one for Vivado and one for ISE was and is, that as soon as I generated the SLOW_CLOCK by the MMCM (as I am doing in Vivado), ISE was not able to place and route any more. So the solution for that might be as easy as the solution for the issue at hand: Adding a BUFG for SLOW_CLOCK, just as you did it for the pixelclock. But this is nothing, that we need to do in V1.6 any more - I am glad that we can now start proceeding with the realease of V1.6: I will add this hypothesis to my V1.7 list of simplifications (reduction of different files per platform) in issue #41 and not change it for V1.6 any more. |
I syntheszed with ISE and did The Smoke Test on MEGA65 hardware (timer interrupt "multi-screen setup", loading Q-TRIS via SD Card/FAT32 and played Q-TRIS): WORKS LIKE A CHARM! So I am closing this issue now. I will proceed with the V1.6 release now. |
ISE is not able to place and route MEGA65 any more. I do not know which one of our refactorings broke it and/or if I made a super-stupid mistake or typo, when converting the HDMI and HDMI transcoder signals from
hw/xilinx/MEGA65/Vivado/mega65.xdc
tohw/xilinx/MEGA65/ISE/MEGA65.ucf
.This is strange, because it worked in past (but there I did not have the HDMI signals, yet; no idea if that is the reason).
@MJoergen Can you help me with this one?
Here is the ISE_Report.txt, but you can easily try to synthesize MEGA65 in ISE by yourself using
hw/xilinx/MEGA65/ISE/QNICE-MEGA65.xise
.As said: Before our refactoring sessions and me adding the signals for HDMI, MEGA65 worked on ISE. Albeit there was always the problem that on ISE I needed to generate the SLOW_CLOCK manually, otherwise I always got an out-of-resources (or something like that) error. But when I used the manual SLOW_CLOCK, it worked. BTW: This was the main reason, why there are two TOP files for MEGA65: One for ISE and one for Vivado.
If you can help, then please fix on branch
develop
.The text was updated successfully, but these errors were encountered: