diff --git a/VLSI26/submitted_notebooks/Qusai_Mashriqi_Drone_PWM/Interactive_Hardware_Generation_for_Drone_PWM_Controllers.ipynb b/VLSI26/submitted_notebooks/Qusai_Mashriqi_Drone_PWM/Interactive_Hardware_Generation_for_Drone_PWM_Controllers.ipynb new file mode 100644 index 000000000..6f5de5d69 --- /dev/null +++ b/VLSI26/submitted_notebooks/Qusai_Mashriqi_Drone_PWM/Interactive_Hardware_Generation_for_Drone_PWM_Controllers.ipynb @@ -0,0 +1,481 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "d518ac847e544217aa33c421d0f2de52": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "widget-interact" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_55a0dd969f53476993754c4c50360221", + "IPY_MODEL_9c039b59bca847d8a167fe3d933c7c01" + ], + "layout": "IPY_MODEL_ae168b17f8cd45a4a7e9c5d53741e6fb" + } + }, + "55a0dd969f53476993754c4c50360221": { + "model_module": "@jupyter-widgets/controls", + "model_name": "IntSliderModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "IntSliderModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "IntSliderView", + "continuous_update": true, + "description": "Duty Value:", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_1074e0bf72344981ba77e2315b89ff58", + "max": 255, + "min": 0, + "orientation": "horizontal", + "readout": true, + "readout_format": "d", + "step": 1, + "style": "IPY_MODEL_1d269dadc25c45dab475ea7172c47358", + "value": 140 + } + }, + "9c039b59bca847d8a167fe3d933c7c01": { + "model_module": "@jupyter-widgets/output", + "model_name": "OutputModel", + "model_module_version": "1.0.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_f82fbe9569fd43d8a65d478ca31aea36", + "msg_id": "", + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "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qqurS0VFRZowYcJVc/6rHTt2aHBwUA8++KB6eno8V3h4uGJiYjz3HD9+vCSpqalJfX19I8obAABfocAHAMCPhYaGSpLOnDlzzTF+/PFHTZs2zat9xowZnn7pwmf4pk2bprFjh38H7+uvv676+npt375dSUlJI8rj765l4cKFioiI8GzTHxwc1NatW5WWluZ5SHDx3QBxcXEjinlRR0eHjDGKiYnRpEmThlw//PCDfvnlF0mS3W7X6tWrVVFRoYkTJyo5OVmbN2/m/D0AwC9R4AMA4MdCQ0M1efLkK56B95Xk5GTZbDatX79eLpdrRHOmT58uSTp06NCIxlssFi1btky1tbVyuVzat2+fTpw4oYcffvia875ocHBQAQEB2r17t/bs2eN1vf/++56xZWVl+u677/T888/r3LlzWrVqlW677Tb9/PPP/3ceAAD8kyjwAQDwcykpKXI6nfryyy+vaX5kZKTa29u92o8cOeLpl6To6Gi1t7fr/Pnzw8ZMSEhQfX29WlpalJ2drf7+/mHnpKamSrrw5vqRcjgcOn36tHbu3Knq6mpNmjRJycnJnv7o6GhJ+tsPQKKjo2WMkd1u14IFC7yuhISEIeNnzpypF154QV988YX279+v48eP67333vtb9wQA4HqjwAcAwM8988wzstlseuKJJ3Tq1CmvfqfTedVPwi1ZskQHDx4c8oDg7NmzKi8vV1RUlG699VZJUmZmpnp6evT22297xTDGeLUtWLBANTU12r17t3JzczU4OHjVddx9991avHixKioqVF9f79XvdrtVXFw8pC0+Pl7x8fGqqKhQbW2tcnJyhhwhuOOOO2S32/XWW295vdX+cjlflJGRIYvFonXr1nmNM8bo119/lXThvQGXPryYOXOmxowZoz///POq6wUA4N82/CE7AADgU9HR0fr000+1dOlSzZgxQw6HQ3FxcXK73WppadG2bduUl5d3xfnPPvustm7dqvvuu0+rVq1SWFiYPv74Y3V1dam2tlZjxlx43u9wOFRVVaXVq1fr4MGDuueee3T27Fnt3btXy5cvV1pamlfs9PR0VVZWyuFwKDQ0dMjW9supqqrSokWLlJGRodTUVN17772y2Wzq6OhQTU2NTp48qdLS0iFzHA6Hp/C/dHv+mDFj9O677yo1NVW33367Hn30UUVEROjIkSM6fPiwmpqarvg7ffXVV/Xcc8+pu7tb6enpCgkJUVdXl+rq6pSfn6/i4mI1Nzdr5cqVys7OVmxsrPr7+/XJJ5/IYrF4XvQHAIDf8OUr/AEAwMgdPXrUPPnkkyYqKsoEBgaakJAQk5iYaDZt2mRcLpdn3KWfyTPGGKfTabKyssyECROM1Wo1s2fPNg0NDV736OvrM2vWrDF2u93ccMMNJjw83GRlZRmn02mMGfqZvL965513jCRTXFw87Dr6+vpMaWmpufPOO01wcLAJDAw0MTExpqCgwBw7dsxr/MmTJ43FYjGxsbFXjHngwAGzcOFCExISYmw2m4mPjzebNm3y9F/6mbyLamtrzdy5c43NZjM2m81Mnz7drFixwrS3txtjjOns7DSPPfaYiY6ONlar1YSFhZn58+ebvXv3DrtOAAD+bQHGXGX/GgAAgI/19PQoIiJCL730kl588UVfpwMAgN/iDD4AAPBrH330kQYGBpSbm+vrVAAA8GucwQcAAH6publZbW1tKikpUXp6uqKionydEgAAfo0t+gAAwC8lJSWppaVFiYmJ2rJli6ZMmeLrlAAA8GsU+AAAAAAAjAKcwQcAAAAAYBSgwAcAAAAAYBSgwAcAAAAAYBSgwAcAAAAAYBSgwAcAAAAAYBSgwAcAAAAAYBSgwAcAAAAAYBSgwAcAAAAAYBT4H52MuC7pOX0lAAAAAElFTkSuQmCC\n" + }, + "metadata": {} + } + ] + } + }, + "ae168b17f8cd45a4a7e9c5d53741e6fb": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1074e0bf72344981ba77e2315b89ff58": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1d269dadc25c45dab475ea7172c47358": { + "model_module": "@jupyter-widgets/controls", + "model_name": "SliderStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "SliderStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "initial", + "handle_color": null + } + }, + "f82fbe9569fd43d8a65d478ca31aea36": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + } + } + } + }, + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000, + "referenced_widgets": [ + "d518ac847e544217aa33c421d0f2de52", + "55a0dd969f53476993754c4c50360221", + "9c039b59bca847d8a167fe3d933c7c01", + "ae168b17f8cd45a4a7e9c5d53741e6fb", + "1074e0bf72344981ba77e2315b89ff58", + "1d269dadc25c45dab475ea7172c47358", + "f82fbe9569fd43d8a65d478ca31aea36" + ] + }, + "id": "rz9MK9QJyXSG", + "outputId": "2934f481-5415-4441-d833-4ddf81530861" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "\n", + "
\n", + "

Project Overview

\n", + "

This notebook demonstrates the design of a Pulse Width Modulation (PWM) generator, a core hardware component in flight controllers.\n", + " As part of the NASAQ framework for drone traffic management, this module translates digital commands into physical signals for motor speed control.

\n", + "

Target: Open-source ASIC flow (Sky130 PDK).

\n", + "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "==================================================\n", + "STEP 1: Verilog RTL Representation\n", + "==================================================\n", + "\n", + "module pwm_gen (\n", + " input clk, // System Clock\n", + " input [7:0] duty, // 8-bit Duty Cycle (0-255)\n", + " output reg pwm_out // PWM Signal to ESC\n", + ");\n", + " reg [7:0] counter = 0;\n", + "\n", + " always @(posedge clk) begin\n", + " counter <= counter + 1;\n", + " // Comparator logic for PWM generation\n", + " pwm_out <= (counter < duty);\n", + " end\n", + "endmodule\n", + "\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "

STEP 2: Interactive Signal Simulator

" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "interactive(children=(IntSlider(value=128, description='Duty Value:', max=255, style=SliderStyle(description_w…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "d518ac847e544217aa33c421d0f2de52" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "\n", + "
\n", + "

Step 3: Path to Silicon

\n", + "

This RTL is compatible with OpenLane. The synthesis flow involves:

\n", + "
    \n", + "
  • Yosys: Translating Verilog to logic gates.
  • \n", + "
  • OpenROAD: Placement and Routing on Sky130 layers.
  • \n", + "
  • Magic/KLayout: DRC/LVS checks and GDSII generation.
  • \n", + "
\n", + "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "# @title [VLSI'26] Interactive Hardware Generation for Drone PWM Controllers\n", + "# @markdown **Author:** Qusai Mashriqi (Senior Student, Yarmouk University)\n", + "# @markdown **Topic:** Educational RTL Design & Visualization for Drone Systems (NASAQ)\n", + "\n", + "'''\n", + "Licensed under the Apache License, Version 2.0 (the \"License\");\n", + "you may not use this file except in compliance with the License.\n", + "'''\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import ipywidgets as widgets\n", + "from IPython.display import display, HTML\n", + "\n", + "# 1. Introduction Header\n", + "display(HTML(\"\"\"\n", + "
\n", + "

Project Overview

\n", + "

This notebook demonstrates the design of a Pulse Width Modulation (PWM) generator, a core hardware component in flight controllers.\n", + " As part of the NASAQ framework for drone traffic management, this module translates digital commands into physical signals for motor speed control.

\n", + "

Target: Open-source ASIC flow (Sky130 PDK).

\n", + "
\n", + "\"\"\"))\n", + "\n", + "# 2. Verilog RTL Description\n", + "print(\"\\n\" + \"=\"*50)\n", + "print(\"STEP 1: Verilog RTL Representation\")\n", + "print(\"=\"*50)\n", + "\n", + "verilog_code = \"\"\"\n", + "module pwm_gen (\n", + " input clk, // System Clock\n", + " input [7:0] duty, // 8-bit Duty Cycle (0-255)\n", + " output reg pwm_out // PWM Signal to ESC\n", + ");\n", + " reg [7:0] counter = 0;\n", + "\n", + " always @(posedge clk) begin\n", + " counter <= counter + 1;\n", + " // Comparator logic for PWM generation\n", + " pwm_out <= (counter < duty);\n", + " end\n", + "endmodule\n", + "\"\"\"\n", + "print(verilog_code)\n", + "\n", + "# 3. Interactive Python Simulator\n", + "display(HTML(\"

STEP 2: Interactive Signal Simulator

\"))\n", + "\n", + "def simulate_pwm(duty_cycle):\n", + " # Simulation parameters\n", + " period = 256\n", + " time_steps = list(range(period))\n", + " signal = [1 if t < duty_cycle else 0 for t in time_steps]\n", + "\n", + " # Plotting\n", + " plt.figure(figsize=(12, 4))\n", + " plt.step(time_steps, signal, where='post', color='#00629B', linewidth=2.5)\n", + " plt.fill_between(time_steps, signal, step=\"post\", alpha=0.15, color='#00629B')\n", + "\n", + " plt.ylim(-0.2, 1.2)\n", + " plt.xlim(0, 255)\n", + " plt.title(f\"Hardware-Level Signal: Duty Cycle = {duty_cycle}/255\", fontsize=14)\n", + " plt.xlabel(\"Clock Cycles\", fontsize=12)\n", + " plt.ylabel(\"PWM Output (Logic High/Low)\", fontsize=12)\n", + " plt.grid(True, linestyle='--', alpha=0.5)\n", + "\n", + " # Text annotation for clarity\n", + " percentage = (duty_cycle / 255) * 100\n", + " plt.text(10, 1.05, f\"Effective Voltage: {percentage:.1f}%\", color=\"#d9534f\", fontweight='bold')\n", + "\n", + " plt.show()\n", + "\n", + "# Create the interactive slider\n", + "widgets.interact(\n", + " simulate_pwm,\n", + " duty_cycle=widgets.IntSlider(\n", + " min=0, max=255, step=1, value=128,\n", + " description='Duty Value:',\n", + " style={'description_width': 'initial'}\n", + " )\n", + ");\n", + "\n", + "# 4. ASIC Flow Path\n", + "display(HTML(\"\"\"\n", + "
\n", + "

Step 3: Path to Silicon

\n", + "

This RTL is compatible with OpenLane. The synthesis flow involves:

\n", + "
    \n", + "
  • Yosys: Translating Verilog to logic gates.
  • \n", + "
  • OpenROAD: Placement and Routing on Sky130 layers.
  • \n", + "
  • Magic/KLayout: DRC/LVS checks and GDSII generation.
  • \n", + "
\n", + "
\n", + "\"\"\"))" + ] + } + ] +} \ No newline at end of file diff --git a/VLSI26/submitted_notebooks/Qusai_Mashriqi_Drone_PWM/README.md b/VLSI26/submitted_notebooks/Qusai_Mashriqi_Drone_PWM/README.md new file mode 100644 index 000000000..9ae5441a8 --- /dev/null +++ b/VLSI26/submitted_notebooks/Qusai_Mashriqi_Drone_PWM/README.md @@ -0,0 +1,7 @@ +# Interactive Hardware Generation for Drone PWM Controllers +**Author:** Qusai Mashriqi +**Affiliation:** Senior Computer Engineering Student, Yarmouk University | VLSI Intern, Orion VLSI Technologies +**Email:** [Qusaimashriqi@gmail.com] + +### Project Description +This notebook demonstrates an interactive PWM hardware generator designed for drone flight controllers (integrated within the NASAQ framework). It bridges the gap between RTL design and real-time signal visualization using open-source tools and Sky130 PDK compatibility.