The task continues with more challenges, where I start to monitor the synthesis flow that had been set previously, starting from the generation of the HDL file to the generation of the bitstream.
Apparently, I found that most of the process are messed up, where the synthesis actually takes place before the generation of the HDL file. The data2mem process is executed even before the update of the ELF file. Many of these minor problems accumulated, and is actually a big problem. I got to fix all these problems, before I could continue the automation of bitstream.
Backend Server Queue
One thing I noticed, that the backend of the server is actually sending another HTTP request to another server, might not be a good idea. This is because the web application does not know when does the second request actually ends.
The HTTP request need to be taken care carefully, especially when many files are included. Where one file that should be updated are not updated yet, and the file is sent to another server for processing. These causes undesired processing and wrong data output!
Synthesis and Implementation
As discussed with my supervisor, I need to optimize the synthesis process so that it would be automated without user intervention. As I go deeper with the synthesis tools, I try to isolate part of the synthesis, and trying the part manually. The basic flow of the synthesis are XST > NGD > MAP > PAR > BIT .
If the top level module of HDL changes, it actually needs to reset the whole synthesis process. The HDL would only be needed as input for the XST process, where XST does not need to run again if the ELF file changes. The ELF file is only be included during the generation of bitstream (BIT) or data2mem process. This is important especially during the optimization of the synthesis flow.
Meanwhile, the UCF file is incorporated during the NGD stage. As I try to run each command line for synthesis manually, I could not find any way to incorporate it during the PAR process, because they only allow the PCF constraint file to be included.
Attempt on the Automate Synthesis
I tried to put automate the synthesis process, by running just XST if only the modules are changed, running on the synthesis after the UCF file are changed. I noticed that synthesis takes quite a lot of time, and that makes the application to appear to be hanging around. However, I think this could be fixed if the web application is written properly, where the HTTP request to the servers are sent and the user could continue to use the web application without hang.
Hope I would able to solve these problem by next week!