How did you implement your project? What challenges did you run into?
To develop the MPC, the coefficient matrix, which captures the dynamics of the converter, was calculated using MATLAB. Additionally, a reference model was constructed in Simulink. This reference model provided a benchmark for the desired behavior of the controller, allowing for performance evaluation and comparison against the actual system response. In order to implement the MPC in hardware, the coefficients obtained from MATLAB were converted into fixed-point numbers. We found this to be impossible to implement via AI (both Bard and ChatGPT). To accomplish this, an online tool developed by GitHub user Chummersone was employed. This conversion is necessary to ensure compatibility with the target hardware and to facilitate subsequent implementation steps.
Next, the MATLAB code for the MPC was given as input to Google Bard, to develop an error-free module capable of carrying out the required control function. This was an iterative process involving refining the code, incorporating feedback from Google Bard, and improving the module until the desired performance was achieved. We faced some issues on this stage, since sometimes Bard would deliver nonsensical implementations which had to be carefully scrutinized.
Once the module was developed, it was tested using handwritten testbenches to verify its correctness and functionality. These testbenches involve designing specific input scenarios and comparing the module's output against expected results. Finally, the Verilog was converted to GDSII format using OpenLane.