Simulator’s preliminary design and structure, useful libs.
My first week started with tons of reading. I read about the architecture of MicroBlaze. Shawn also told Mostafa and I about the difference between MicroBlaze and AEMB. The most important thing to note is the process of running multiple threads concurrently. I must be able to implement that with the simulator. Nice to meet you Mostafa 🙂
Since the s3laku will be coded from scratch, I also studied various microprocessor simulators’ code. I was able to identify the main framework used by them and identify a few main libraries that I would have to write to keep everything nice and neat.
I found arm-is to be the most useful as I have more experience with arm’s isa.
After fighting with the VPN, taming it and getting it to dance for me, I started working on the preliminary design of the code. I will be using two client-side scripts. The first one will be initializing the simulator to the default state and handling the users’ action sent from the second script while the second script will serve as an interface for the GUI interface, detection of users’ action and I/O by data transfers with the first script. The reason of doing so is for abstraction. Ultimately the user doesn’t have to care how the code functions. He/she will directly see how their code is affecting the simulator.
I also finished working on libraries that I have identified as useful in the previous microprocessor simulator. They are the bitOperations and utilities library. The bitOperations will handle all bit operations including 2-complements handling for signed integers. The utilities library will handle the conversion of datatypes to string for various bits since inside EDK6.3 there will be 16-bit immediate operand and some of them needs to be extended to 32-bit. Conversion to string allows logs to be printed in the display for debugging purposes. I also set up a simple HTML file to test the bitOperations.
The goal of next week will be finishing more opcodes and the core structures that needs to be set up for AEMB. I will also need to read up on how to implement the concurrent structure for the simulator.