Giter Club home page Giter Club logo

anmol-wq / hackathon_iith-snps-vsd_8-to-1_serializer Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 380 KB

A Serializer/Deserializer (SerDes pronounced sir-deez or sir-dez) is a pair of functional blocks commonly used in high speed communications to compensate for limited input/output. These blocks convert data between serial data and parallel interfaces in each direction. A Serializer, one of the major components of SerDes, is a parallel in serial out architecture. For this the generated clock is taken as is, and the focus is not on clock generation, but the serialization aspect.

hackathon_iith-snps-vsd_8-to-1_serializer's Introduction

A Tree Architecture Based 8-to-1 Serializer

This repository presents the design and simulation of a Serializer, one of the major components of SerDes which is essentially a parallel in serial out architecture.

Table of Contents

Abstract

Based on the 2-to-1 Serializer developed, one can use this architecture to implement a multiplexer with a larger number of input channels. Most of them are based on the topology of tree structure. As illustrated in the figure, the tree structure is a natural extension of the 2-to-1 unit, the idea is to group the input channels in pairs and multiplex each pair, reducing the number by a factor of two after each rank. In this architecture, the flip-flop is driven by a clock frequency fck, the serializer in rank 3 is driven by a clock frequency fck/2, in rank 2 are driven by a clock frequency fck/4, and those in the rank1 are driven by a clock frequency fck/8.

Tools Used

  • Synopsys Custom Compiler:  The Synopsys Custom Compiler™ design environment is a modern solution for full-custom analog, custom digital, and mixed-signal IC design. As the heart of the Synopsys Custom Design Platform, Custom Compiler provides design entry, simulation management and analysis. This tool was used to design the circuit on a transistor level. Steps were followed from the provided doc at Hackathon platform to setup defs file at the following location.

  • Synopsys Primewave:  PrimeWave™ Design Environment is a comprehensive and flexible environment for simulation setup and analysis of analog, RF, mixed-signal design, custom-digital and memory designs within the Synopsys Custom Design Platform. This tool helped in various types of simulations of the above designed circuit.

  • Synopsys 32-28nm SAED_PDK:  SAED 32-28nm was used for model library files, and at Typical corner for both p and nMOS (TT).



Serializer


Serializer Operation

  • This figure explains the working of a 2-to-1 serializer, 7 of which are used further ahead for creating the 8-to-1 serializer here.

Reference Circuit


Serializer 8-to-1

  • The pin ordering here is utilized to obtain the serial data in format D1-D2-D3-...-D8. Also, the clock pins are being taken independently, which is made a note of.
  • The above two facets facilitated the final implementation.


As Submitted in Literature Survey

  • The overall structure here is replicated in the final implementation,but making use of pin-orderings and clock facilitation at each rank as per the figure before it.

2-to-1_Mux



This is a transmission-gate based 2:1 mux as seen in "Digital Integrated Circuits" by Prof. Jan Rabaey.

D-Flip_Flop



The D-flip flop implementation as a circuit contains a positive and a negative latch, along with inverters and muxes. And thus, consists of sub-circuits which are to be utilized for this design.

Positive_Latch



Negative_Latch



Inverter




This was the first symbol created to test out whether it is possible to just hardcode it at 1.8V without giving an external pin and it worked.

Frequency_Divide_by_2_circuit



A frequency divide by 2 circuit is created by giving a feedback around at Q negated into the input in a D-FF.

2-to-1_Serializer



The 2-to-1 Serializer utilized the schematics of sub-circuits rather than symbols just because it saved time.

8-to-1_Serializer



They are interconnected using the wiring labels rather than congesting it with unnecessary drawing of wiring here.



There was an attempt at utilizing schematics all over for the overall circuit, but that was not easy to navigate and debug as can be seen from above.

Simulations

Transient Analysis



Transient Analysis


Reference successfully reproduced

Here, we can see from net1 to the net2 how the data is being serialized out, since the pattern repeats, it has been shown only till 10us.

Netlist

*  Generated for: PrimeSim
*  Design library name: Proposed_ckt
*  Design cell name: as_8to1
*  Design view name: schematic
.lib 'saed32nm.lib' TT

*Custom Compiler Version S-2021.09
*Tue Mar  1 18:15:02 2022

.global gnd!
********************************************************************************
* Library          : Proposed_ckt
* Cell             : as_2to1_serializer
* View             : schematic
* View Search List : hspice hspiceD schematic spice veriloga
* View Stop List   : hspice hspiceD
********************************************************************************
.subckt as_2to1_serializer clk out din1 din2
xm54 net24 clk net25 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm53 net25 clkb net10 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm52 net9 net25 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm51 net10 net9 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm46 net12 clk net14 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm41 net14 clkb net8 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm42 net7 net14 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm45 net8 net7 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm38 net6 net5 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm37 net5 net12 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm36 net12 clk net6 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm35 din1 clkb net12 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm30 net4 net3 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm29 net3 net24 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm28 net24 clk net4 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm8 din2 clkb net24 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm27 net2 net1 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm24 net1 net17 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm22 net17 clk net2 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm20 net14 clkb net17 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm9 clkb clk vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm1 out clk net25 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm0 out clkb net17 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm50 net24 clkb net25 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm49 net25 clk net10 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm48 net9 net25 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm47 net10 net9 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm39 net12 clkb net14 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm40 net14 clk net8 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm43 net7 net14 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm44 net8 net7 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm34 net6 net5 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm33 net5 net12 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm32 net12 clkb net6 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm31 din1 clk net12 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm7 net4 net3 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm6 net3 net24 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm5 net24 clkb net4 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm2 din2 clk net24 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm26 net2 net1 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm25 net1 net17 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm23 net17 clkb net2 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm21 net14 clk net17 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm3 out clk net17 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm4 out clkb net25 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm10 clkb clk gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
v12 vdd gnd! dc=1.8
.ends as_2to1_serializer

********************************************************************************
* Library          : Proposed_ckt
* Cell             : as_dff_new
* View             : schematic
* View Search List : hspice hspiceD schematic spice veriloga
* View Stop List   : hspice hspiceD
********************************************************************************
.subckt as_dff_new clk q din
xm26 net98 q gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm25 q net90 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm23 net90 clkb net98 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm21 net103 clk net90 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm18 net64 net103 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm17 net103 net56 gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm14 net56 clk net64 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm12 din clkb net56 gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm5 clkb clk gnd! gnd! n105 w=0.1u l=0.04u nf=1 m=1
xm27 net98 q vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm24 q net90 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm22 net90 clk net98 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm20 net103 clkb net90 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm19 net64 net103 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm16 net103 net56 vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
xm15 net56 clkb net64 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm11 din clk net56 vdd p105 w=0.15u l=0.04u nf=1 m=1
xm4 clkb clk vdd vdd p105 w=0.15u l=0.04u nf=1 m=1
v8 vdd gnd! dc=1.8
.ends as_dff_new

********************************************************************************
* Library          : Proposed_ckt
* Cell             : as_8to1_symbol
* View             : schematic
* View Search List : hspice hspiceD schematic spice veriloga
* View Stop List   : hspice hspiceD
********************************************************************************
.subckt as_8to1_symbol clk clk1 clk2 clk3 out din1 din2 din3 din4 din5 din6 din7
+  din8
xi6 clk1 g e f as_2to1_serializer
xi5 clk2 f c d as_2to1_serializer
xi4 clk2 e a b as_2to1_serializer
xi3 clk3 d din8 din4 as_2to1_serializer
xi2 clk3 c din6 din2 as_2to1_serializer
xi1 clk3 b din7 din3 as_2to1_serializer
xi0 clk3 a din5 din1 as_2to1_serializer
xi7 clk out g as_dff_new
.ends as_8to1_symbol

********************************************************************************
* Library          : Proposed_ckt
* Cell             : as_8to1
* View             : schematic
* View Search List : hspice hspiceD schematic spice veriloga
* View Stop List   : hspice hspiceD
********************************************************************************
xi0 0_1 1 2 3 out din1 din2 din3 din4 din5 din6 din7 din8 as_8to1_symbol
v42 din3 gnd! dc=0 pulse ( 0 1.8 7n 0.2n 0.2n 16n 32n )
v44 din5 gnd! dc=0 pulse ( 0 1.8 2n 0.2n 0.2n 16n 32n )
v46 din7 gnd! dc=0 pulse ( 0 1.8 8n 0.2n 0.2n 16n 32n )
v47 din8 gnd! dc=0 pulse ( 0 1.8 8n 0.2n 0.2n 32n 64n )
v43 din4 gnd! dc=0 pulse ( 0 1.8 7n 0.2n 0.2n 32n 64n )
v45 din6 gnd! dc=0 pulse ( 0 1.8 2n 0.2n 0.2n 32n 64n )
v33 din1 gnd! dc=0 pulse ( 0 1.8 3n 0.2n 0.2n 16n 32n )
v41 din2 gnd! dc=0 pulse ( 0 1.8 3n 0.2n 0.2n 32n 64n )
v32 3 gnd! dc=0 pulse ( 0 1.8 0 0.2n 0.2n 8n 16n )
v31 2 gnd! dc=0 pulse ( 0 1.8 0 0.2n 0.2n 4n 8n )
v30 1 gnd! dc=0 pulse ( 0 1.8 0 0.2n 0.2n 2n 4n )
v27 0_1 gnd! dc=0 pulse ( 0 1.8 0 0.2n 0.2n 1n 2n )








.tran '0.1n' '100n' name=tran

.option primesim_remove_probe_prefix = 0
.probe v(*) i(*) level=1
.probe tran v(0_1) v(1) v(2) v(3) v(out) v(din1) v(din2) v(din3) v(din4) v(din5)
+ v(din6) v(din7) v(din8)

.temp 25



.option primesim_output=wdf


.option parhier = LOCAL






.end


As we can see the (W/L)pMOS=(0.15u/0.04u), and (W/L)nMOS=(0.1u/0.04u) is used consistently throughout the design.

Challenges

  • Initially, instead of symbols, the whole circuit consisted of actual schematics instead of their generated symbols. This led to visibility issue as circuit is big. Appropriate symbols were created to facilitate better maneuverablity.
  • The frequency divider circuit is yielding latency issues, so as per literature survey, it was concluded that a PLL may be assumed to provide the required clocks at the three ranks respectively, at the same time.

Results

The circuit has been simulated successfully at clock frequency of 500 MHz, and the voltage signal is maintained at 1.8 V throughout, with data input lines transmitting data at 62.5 MHz.

Author

Acknowledgements

References

.

hackathon_iith-snps-vsd_8-to-1_serializer's People

Contributors

anmol-wq avatar

Stargazers

Roman avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.