{"id":20674776,"url":"https://github.com/jjateen/7t-sram-mcpl","last_synced_at":"2026-02-14T08:32:23.727Z","repository":{"id":260626412,"uuid":"881871753","full_name":"Jjateen/7T-SRAM-MCPL","owner":"Jjateen","description":"This project showcases the design and simulation of a 7T MCPL SRAM using adiabatic logic for low-power efficiency, developed for ECL 312 at IIIT Nagpur. It compares the 6T and 7T SRAM designs in terms of power, energy, and stability, with simulations done in WinSpice and Microwind.","archived":false,"fork":false,"pushed_at":"2024-11-13T12:53:03.000Z","size":3799,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T00:26:37.342Z","etag":null,"topics":["cmos","cmos-circuits","cmos-design","layout-design","microwind","netlist","spice"],"latest_commit_sha":null,"homepage":"","language":"SystemVerilog","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jjateen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-01T12:17:38.000Z","updated_at":"2025-02-13T05:45:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"fb5fad39-6a5c-4db9-9f0e-0da903fef5b1","html_url":"https://github.com/Jjateen/7T-SRAM-MCPL","commit_stats":null,"previous_names":["jjateen/7t-sram-mcpl"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Jjateen/7T-SRAM-MCPL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jjateen%2F7T-SRAM-MCPL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jjateen%2F7T-SRAM-MCPL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jjateen%2F7T-SRAM-MCPL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jjateen%2F7T-SRAM-MCPL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jjateen","download_url":"https://codeload.github.com/Jjateen/7T-SRAM-MCPL/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jjateen%2F7T-SRAM-MCPL/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29440382,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T07:24:13.446Z","status":"ssl_error","status_checked_at":"2026-02-14T07:23:58.969Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cmos","cmos-circuits","cmos-design","layout-design","microwind","netlist","spice"],"created_at":"2024-11-16T21:07:25.716Z","updated_at":"2026-02-14T08:32:23.706Z","avatar_url":"https://github.com/Jjateen.png","language":"SystemVerilog","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# CMOS Design Project: 7T MCPL SRAM Cell\n\u003cimg src=\"https://upload.wikimedia.org/wikipedia/en/f/f5/Indian_Institute_of_Information_Technology%2C_Nagpur_Logo.svg\" width=\"13%\" /\u003e \u003cbr\u003e\n## Indian Institute of Information Technology, Nagpur  \n**ECL 312: CMOS Design**  \n**A Project Report on: 7T MCPL SRAM Cell and 2x2 SRAM Array**\n\n**Submitted By:**  \n[Jjateen Gundesha (BT22ECI002)](https://github.com/Jjateen)  \n\n**Under the Guidance of:**  \nProf. Paritosh Peshwe  \n\n**Department of Electronics and Communication**  \n\n\u003c/div\u003e\n\n## Project Overview\n\nThis repository contains the design, simulation, and analysis of a **7T MCPL (Multi-Clock Power Logic) SRAM cell** and its **2x2 SRAM array**, utilizing **adiabatic logic** for enhanced power efficiency. This project compares the performance of a conventional **6T SRAM** and the novel **7T MCPL SRAM** design under **180nm CMOS technology**. Tools like **WinSpice**, **Microwind**, and **Cadence Virtuoso** were used for circuit layout and Static Noise Margin (SNM) analysis.\n\nAdiabatic logic, with its energy-recycling capabilities, is employed in the **7T MCPL SRAM cell** to achieve significant power savings compared to traditional CMOS designs.\n\n## Objectives\n\n1. **Design and simulate** a 7T SRAM cell using **MCPL adiabatic logic**.\n2. Implement a **2x2 SRAM array** using the 7T MCPL design.\n3. Compare the performance of the **6T SRAM** and **7T MCPL SRAM** designs.\n4. Demonstrate power and energy savings achieved by the MCPL design under **180nm technology**.\n5. Simulate **read** and **write operations** of both the SRAM cell and array.\n5. Analyze the **Static Noise Margin (SNM)** of both designs, using **Cadence Virtuoso** for SNM plotting.\n\n## Design Description\n\n### 6T SRAM Cell\nThe 6T SRAM cell is a conventional SRAM design, featuring two cross-coupled inverters for data storage, composed of:\n- **6 transistors** (4 for inverters, 2 for access transistors).\n- Higher power dissipation compared to the 7T MCPL design.\n\n#### 6T SRAM Circuit\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./3_Simulation/Circuit/SRAM_6T_ckt.png\" alt=\"6T SRAM Circuit Diagram\"\u003e\n\u003c/div\u003e\n\n### 7T MCPL SRAM Cell\nThe 7T MCPL design employs **adiabatic logic** principles, specifically **Multi-Clock Power Logic (MCPL)**, to reduce power consumption:\n- **7 transistors**, with an additional transistor for enhanced stability.\n- **AC power supply** through MCPL to recycle energy, significantly reducing power.\n- Control signals **S1** and **S2** manage the MCPL node, transitioning between high, low, and floating states based on the operating mode.\n\n#### 7T MCPL SRAM Circuit\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./3_Simulation/Circuit/SRAM_7T_MCPL_ckt.png\" alt=\"7T MCPL SRAM Circuit Diagram\"\u003e\n\u003c/div\u003e\n\n### 2x2 7T SRAM Array with MCPL\nThe 2x2 SRAM array consists of **four 7T SRAM cells** arranged in a matrix. This configuration allows testing of larger memory structures based on the 7T MCPL design, with each cell controlled independently via shared **row and column selection lines**.\n\n## SystemVerilog Code Snippets\n\n### SRAM Module\n\nThis code defines a 4-location SRAM module with 4-bit data storage per location.\n\n```systemverilog\nmodule SRAM(\n    input [3:0] dataIn,      // 4-bit input data\n    input [1:0] Addr,        // 2-bit address\n    input CS, WE, RD, Clk,   // Chip Select, Write Enable, Read Enable, Clock\n    output reg [3:0] Q       // 4-bit output for all SRAM locations (q1, q2, q3, q4)\n);\n    // 4 memory locations (4-bit each)\n    reg [3:0] SRAMs [3:0];  // 4 memory locations (SRAM[0] to SRAM[3])\n\n    // Initialize SRAM and outputs to 0 at startup\n    initial begin\n        SRAMs[0] = 4'b0000;\n        SRAMs[1] = 4'b0000;\n        SRAMs[2] = 4'b0000;\n        SRAMs[3] = 4'b0000;\n        Q = 4'b0000;  // All outputs start as 0\n    end\n\n    // Write/Read operation and update Q\n    always @(posedge Clk) begin\n        if (CS == 1'b1) begin\n            if (WE == 1'b1 \u0026\u0026 RD == 1'b0) begin\n                // Write to SRAM at the specified address\n                SRAMs[Addr] \u003c= dataIn;\n                Q \u003c= dataIn;  // Q reflects the value written to the SRAM\n            end else if (RD == 1'b1 \u0026\u0026 WE == 1'b0) begin\n                // Read from SRAM at the specified address\n                Q \u003c= SRAMs[Addr];  // Q reflects the current data at the address\n            end\n        end\n    end\n\n    // Always update the output Q to reflect the state of all SRAMs\n    always @(*) begin\n        Q = {SRAMs[3], SRAMs[2], SRAMs[1], SRAMs[0]};  // Concatenate SRAMs to form Q\n    end\nendmodule\n```\n\n### Testbench for SRAM Module\n\nThe testbench verifies the read and write functionality of the SRAM module.\n\n```systemverilog\nmodule SRAM_tb();\n    // Inputs\n    reg [3:0] dataIn;   // 4-bit data input\n    reg [1:0] Addr;     // 2-bit address for 4 locations\n    reg CS, WE, RD, Clk;\n\n    // Outputs\n    wire [3:0] Q;        // 4-bit output for all SRAM locations (q1, q2, q3, q4)\n\n    // Instantiate the Unit Under Test (UUT)\n    SRAM uut (\n        .dataIn(dataIn),\n        .Addr(Addr),\n        .CS(CS),\n        .WE(WE),\n        .RD(RD),\n        .Clk(Clk),\n        .Q(Q)\n    );\n\n    initial begin\n        // Initialize Inputs\n        dataIn = 4'b0000;\n        Addr = 2'b00;   // Start with address 00\n        CS = 1'b0;\n        WE = 1'b0;\n        RD = 1'b0;\n        Clk = 1'b0;\n\n        // Create the VCD file and dump the variables\n        $dumpfile(\"waveform.vcd\");  // Name of the VCD file\n        $dumpvars(0, SRAM_tb);      // Dump all variables in the testbench\n\n        // Wait for global reset to finish\n        #100;\n\n        // Test Writing to the SRAM cells\n        CS = 1;\n        WE = 1;\n        RD = 0;\n        dataIn = 4'b1010;\n        Addr = 2'b00;\n        #10 Clk = ~Clk;\n        #10 Clk = ~Clk;\n\n        // Test Reading from the SRAM cells\n        WE = 0;\n        RD = 1;\n        #10 Clk = ~Clk;\n        #10 Clk = ~Clk;\n\n        $finish;\n    end\nendmodule\n```\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./1_RTL/testbench_waveform.png\" alt=\"testbench_waveform\"\u003e\n\u003c/div\u003e\n\n\n\n## Spice Files\n\nBelow are snippets of the circuit files used for simulation in **WinSpice**:\n\n### 6T SRAM Write Mode\n\n```spice\n.model nmod nmos level=54 version=4.7\n.model pmod pmos level=54 version=4.7\n\n.subckt inverter 1 2 3\nM1 3 1 0 0 pmod w=100u l=10u\nM2 3 1 2 2 nmod w=100u l=10u\n.ends\n\nVdd 2 0 dc 5\nVwl 6 0 dc 5\n\nVbit 7 0 pulse(0 5 0 0 0 100m 200m)\nVbitbar 8 0 pulse(5 0 0 0 0 100m 200m)\n\nXq 1 2 3 inverter\nXqbar 3 2 1 inverter\n\nM5 7 6 3 3 pmod w=100u l=10u\nM6 8 6 1 1 pmod w=100u l=10u\n\n.tran 0.1m 400m\n.control\nrun\nplot v(7) v(8) v(3) v(1)\n.endc\n.end\n```\n\n### 7T MCPL SRAM Write Mode\n\n```spice\n.model nmod nmos level=54 version=4.7\n.model pmod pmos level=54 version=4.7\n\n.subckt inverter G Sp D\nM1 D G 0 0 nmod w=100u l=10u\nM2 D G Sp Sp pmod w=200u l=10u\n.ends\n\nVdd 2 0 dc 5\nVwl 6 0 dc 5\nVwlb 9 0 dc 0\nVbit 7 0 dc 5\nVbitbar 8 0 dc 0\nVs1 13 0 pulse(0 5 0 0 0 200m 400m)\nVs2 11 0 pulse(0 5 0 0 0 100m 200m)\n\nXq 1 10 3 inverter\nXqbar 3 10 1 inverter\n\nM5 7 6 3 3 nmod w=100u l=10u\nM6 8 6 1 1 nmod w=100u l=10u\nM7 3 9 3 0 nmod w=100u l=10u\nM9 10 11 2 2 pmod w=200u l=10u\nM10 10 13 0 0 nmod w=100u l=10u\n\n.tran 0.1m 400m\n.control\nrun\nplot v(7) v(8) v(3) v(1) v(13) v(11)\n.endc\n.end\n```\n\n### 7T MCPL SRAM 2x2 Array\n\n```spice\n*** 7T MCPL SRAM 2x2 Array ***\n\n* NMOS and PMOS Models *\n.model nmod nmos level=54 version=4.7\n.model pmod pmos level=54 version=4.7\n\n* Inverter Subcircuit *\n.subckt inverter in out vdd\nM1 out in vdd vdd pmod w=200u l=10u\nM2 out in 0 0 nmod w=100u l=10u\n.ends inverter\n\n* Transmission Gate NAND Gate Subcircuit (for decoding) *\n.subckt transmission_gate_nand a0 a1 a1_bar out\nM1 out a1 a0 0 nmod w=100u l=10u\nM2 out a1_bar a0 0 pmod w=200u l=10u\nM3 out a1_bar 0 0 nmod w=100u l=10u\nM4 out a1 0 0 pmod w=200u l=10u\n.ends transmission_gate_nand\n\n* Sense Amplifier Subcircuit *\n.subckt sense_amp BL BL_bar OUT Vdd\nM1 OUT BL 0 0 nmod w=100u l=10u\nM2 OUT BL_bar 0 0 pmod w=200u l=10u\n\nM3 OUT BL_bar Vdd Vdd pmod w=200u l=10u\nM3 OUT BL Vdd Vdd nmod w=100u l=10u\n.ends sense_amp\n\n* Write Amplifier Subcircuit *\n.subckt write_amp DATA BL BL_bar Vdd\nMw1 BL DATA 0 0 nmod w=100u l=10u\nMw2 BL_bar DATA Vdd Vdd pmod w=200u l=10u\nMw3 BL DATA 0 0 pmod w=200u l=10u\nMw4 BL_bar DATA Vdd Vdd nmod w=100u l=10u\n.ends write_amp\n\n* 7T MCPL SRAM Cell (Corrected subcircuit reference) *\n.subckt sram_cell BL BL_bar WL WL_bar Vdd\nXinv1 BL BL_bar Vdd inverter\nXinv2 BL_bar BL Vdd inverter\nM5 BL WL 0 0 nmod w=100u l=10u\nM6 BL_bar WL 0 0 nmod w=100u l=10u\nM7 BL WL_bar BL 0 nmod w=100u l=10u\n.ends sram_cell\n\n* Row Decoder Subcircuit (Corrected node connections) *\n.subckt row_decoder a0 a1 a1_bar Vdd out\nXnand a0 a1 a1_bar out transmission_gate_nand\n.ends row_decoder\n\n* Column Decoder Subcircuit (Corrected node connections) *\n.subckt col_decoder a0 a1 a1_bar Vdd out\nXnand a0 a1 a1_bar out transmission_gate_nand\n.ends col_decoder\n\n* Main Circuit for 2x2 SRAM Array *\n\nVdd 2 0 dc 2\n* Wordline and Bitline Drivers *\nVWL 6 0 dc 2\nVWL_bar 9 0 dc 0\nVBL 7 0 pulse(0 2 0 0 0 50m 100m)\nVBL_bar 8 0 pulse(2 0 0 0 0 50m 100m)\nVamp 19 0 dc 5v\n* Row/Column Selection Pulses *\nVs1 13 0 dc 2\n* Wordline select 1\nVs2 11 0 dc 0\n* Wordline select 2\nVc1 15 0 pulse(0 2 0 0 0 200m 400m)\n* Column select 1\nVc2 17 0 pulse(0 2 0 0 0 100m 200m)\n* Column select 2\n\n* 2x2 SRAM Array (Corrected subcircuit connections) *\nXsram1 7 8 6 9 2 sram_cell\nXsram2 7 8 13 9 2 sram_cell\nXsram3 7 8 6 17 2 sram_cell\nXsram4 7 8 13 17 2 sram_cell\n\n* Row Decoder (Fixed parameter count) *\nXrow_decoder_1 6 13 11 2 out1 row_decoder\nXrow_decoder_2 6 17 11 2 out2 row_decoder\n\n* Column Decoder (Fixed parameter count) *\nXcol_decoder_1 7 15 11 2 out3 col_decoder\nXcol_decoder_2 8 17 11 2 out4 col_decoder\n\n* Sense Amplifier and Write Driver (Fixed node 10) *\nV10 10 0 dc 0\n* Grounding node 10 to fix floating issue\nXsense_amp 7 8 18 19 sense_amp\nXwrite_amp 10 7 8 2 write_amp\n\n* Simulation Commands *\n.tran 0.1m 400m\n.control\nrun\nplot v(7) v(8) v(18) v(10)\n.endc\n.end\n```\n## Layout and Waveforms\n\n### 6T SRAM Layout\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./2_Layout/SRAM_6T_LAYOUT.png\" alt=\"6T SRAM Layout\"\u003e\n\u003c/div\u003e\n\n### 7T MCPL SRAM Layout\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./2_Layout/SRAM_7T_MCPL_LAYOUT.png\" alt=\"7T MCPL SRAM Layout\"\u003e\n\u003c/div\u003e\n\n### 7T MCPL SRAM 2x 2 Array Layout\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./2_Layout/SRAM_7T_MCPL_2_by_2_layout.png\" alt=\"7T MCPL SRAM 2x 2 Array Layout\"\u003e\n\u003c/div\u003e\n\n### 6T SRAM Waveforms\n![6T SRAM Waveforms](./3_Simulation/Waveforms/SRAM_6T_WAVEFORMS.png)\n\n### 7T MCPL SRAM Waveforms\n![7T MCPL SRAM Write Mode Waveforms](./3_Simulation/Waveforms/SRAM_7T_MCPL_WAVEFORM.png)\n\n### 7T MCPL SRAM 2x2 Array Waveforms\n![7T MCPL SRAM 2x2 Array Waveforms( row = 1; column = 0](./3_Simulation/Waveforms/SRAM_7T_MCPL_2_by_2_WAVEFORM.png)\n\n### 6T SRAM SNM\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./3_Simulation/Waveforms/SRAM_6T_SNM.png\" alt=\"SNM of 6T SRAM\" width=\"100%\"\u003e\n\u003c/div\u003e\n\n### 7T MCPL SRAM SNM\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./3_Simulation/Waveforms/SRAM_7T_SNM.png\" alt=\"SNM of 7T MCPL SRAM\"\u003e\n\u003c/div\u003e\n\n\n## Static Noise Margin (SNM) Analysis\n\nThe **SNM** was calculated and plotted using **Cadence Virtuoso**. The SNM analysis indicates the stability of the **6T** and **7T MCPL SRAM** cells. This analysis was performed by inscribing a **maximum square** within the butterfly curve, plotting the inverter voltage transfer characteristics.\n\n- **6T SRAM**: Shows a smaller area in the butterfly curve, indicating lower stability.\n- **7T MCPL SRAM**: Demonstrates a **0.3 times greater SNM** than the 6T SRAM, reflecting improved stability and noise tolerance.\n\nThe increased SNM of the 7T MCPL SRAM is due to the added transistor and better isolation of the internal nodes, as described in the **Why is the 7T MCPL SRAM more stable than the 6T SRAM?** section.\n\n## Performance Comparison\n\n### Power and Energy Consumption\n\nSimulation results show a significant reduction in power and energy consumption using MCPL logic. Below are the power and energy figures for both designs under **180nm and 32nm technology**:\n\n| SRAM Cell                        | Power (W)     | Energy (J)        | Power (W) (32nm) | Energy (J) (32nm) |\n|-----------------------------------|---------------|-------------------|------------------|-------------------|\n| **6T SRAM**                      | 85.6e-6       | 15.4e-9           | 4.6e-6           | 0.64e-12          |\n| **7T SRAM**                      | 90.2e-6       | 6.32e-9           | 24.9e-6          | 13.4e-12          |\n| **7T SRAM with MCPL**             | 30.1e-7       | 117.9e-15         | 5.4e-7           | 40.5e-15          |\n\n### Stability (SNM)\n\nThe **Static Noise Margin (SNM)** analysis shows that the **7T MCPL SRAM** design is **0.3 times more stable** than the 6T SRAM design, providing enhanced stability and noise resilience.\n\n### Why is the 7T MCPL SRAM more stable than the 6T SRAM?\n\n1. **Additional Transistor**: The 7T\n\n design incorporates an extra transistor for improved node isolation and stability.\n2. **Energy-Recycling via MCPL**: The MCPL architecture reduces power dissipation, improving noise immunity.\n3. **Lower Noise Disturbance**: By reducing noise disturbances on internal nodes, the 7T SRAM achieves a greater **SNM**, signifying better tolerance to environmental noise.\n\n## Conclusion\n\nThe **7T MCPL SRAM cell** provides significant improvements in power efficiency, stability, and noise resilience compared to the traditional **6T SRAM** design. Using **adiabatic logic** and MCPL, this project demonstrates the feasibility of low-power, high-stability SRAM designs.\n\n### Future Work\n\nFuture enhancements could explore:\n1. **Scaling** the design to smaller technology nodes for further efficiency gains.\n2. **Integrating additional noise management techniques** for environments with high electromagnetic interference.\n\n## References\n\n1. M. Beiser, \"Low Power CMOS Circuits,\" IEEE Journal of Solid-State Circuits, vol. 35, no. 5, pp. 745-749, 2000.\n2. A. G. Alley, \"Adiabatic Logic: A Survey,\" Proceedings of the IEEE, vol. 90, no. 3, pp. 339-358, March 2002.\n3. P. Meher, \"CMOS VLSI Design,\" Addison-Wesley, 2008.\n4. Cadence Virtuoso, \"Custom IC and PCB Design,\" Cadence Design Systems, Inc.\n5. Microwind, \"CMOS Layout \u0026 Simulation Software,\" Silvaco Inc.\n\nThis project is based on the work described in the following paper:\n\n\u003e **Penugonda, R.S., \u0026 Ravi, V.** (2020). *Design of Low Power SRAM Cell Using Adiabatic Logic*. Journal of Physics: Conference Series, 1716(1), 012039. doi:10.1088/1742-6596/1716/1/012039【6†source】\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjjateen%2F7t-sram-mcpl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjjateen%2F7t-sram-mcpl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjjateen%2F7t-sram-mcpl/lists"}