Well this week I continued working on the project. Some bugs were solved, some minor modification for the code here and there and some modules and classes were added.
The first issue I was working on was regarding the CodeMirror editor interface. The tabs of the editor weren’t in line. Some need a single tab and other needs double tabs to be in the same depth. The solution for this bug was straight-forward. The C++ mode that we use for our editor has a default indentation size which was 2 character while the tab size was 4 characters which made this bug to occur. Changing the default indentation size of the code editor to be equal as the tab size was enough to solve it.
Plus working on that, I had to also continue adding wrappers C++ classes and Verilog modules. The new integrated module was the LCD module. The LCD module is just simply a wrapper for a GPIO module.Plus the LCD we worked to add the rest of the generic modules like the Slave SPI and the Master I2C. Now we have around 12 modules in our library all of them were tested in the system and with their corresponding UCF fie connections which were generated from the schematic editor.
Finally before I finish this paragraph and since these might be my last wrappers classes and modules. I’d like to add some important guidelines regarding the way we follow to add any new module to our library.
- When you want to add any new component to the library. Plus adding their respective C++ classes and modules a “template” for this module should be added in the top module in standard way. This is used during elaboration to rightly connect this module to the switch module in the SOC.
- The naming for the module external ports in the top module should follow the naming convention so the same names are used here and in the UCF file.
Finally I had to integrate my work with Khai Yong’s. No much change was occurred except that we modified the linker script so the different sections of the ELF file will be mapped to the right location in the BRAMs based on our memory map. It took us really a while to realize what was actually going on but things went fine eventually.
Running the three machines all at the same time caused the system to crash. Investigating the problems was quit tiring especially when the system grows bigger and bigger but thanks to the “system logs” they showed who was behind this crash. Unfortunately that person was me !! heheeh… . Apparently I was missing some condition to prevent some part of the code to get executed if some necessary information is not there. Finally I managed to solve it and everything worked fine.
This is all for this week, Stay well! 😀