Showing posts with label VLSI. Show all posts
Showing posts with label VLSI. Show all posts

Monday, June 8, 2020

VLSI


      DIGITAL LOGIC 

  Digital logic questions are mainly from the below topics:


Basics of Digital Design

Deign all gates using MUX.

MUX using buffers.

Gate conversion.

XOR vs XNOR –special characteristics.

Buffer vs Inverter.

Different kind of Buffers.

Latch vs Flip Flops.

Dff to Tff conversion .

JK vs RS ff.(RAQ)

Master slave flops/ edge triggers flops.

Truth tables of flops should be on tips for all quick answers.(RAQ)

Flip flop parameters like setup/hold/clock2q delay, propagation delay of cells/fanout/fanin.

Multiplier and divider circuitry implementation and logical implementation of any number of multiplier and divider.

Different type of adders.

Mod N counter/Frequency Dividers.

Sequence detector FSM design.

Design a FSM to detect input stream is divisible by x(any number) or not.

Glitch Jitter skew.

Edge detection circuitry.

Ripple Johnson counter.(RAQ)

Linear Feedback Shift Registers.(RAQ)


Question is usually asking to convert 14 (or some other small number) from decimal to binary, hex, and octal representations.

Knowledge about:

Digital cicruits in general, boolean logic.
Analog design interfacing with digital logic and with quite some digital logic inside.
Firmware and embedded processor knowledge, including embedded OS.
Silicon validation work and PCB knowledge (design and/or bringup of new board).
Test, packaging, yield, foundry experience.

VHDL: difference between signals and variables.
Clock domain crossing (verilog and VHDL).
Combinational vs sequential logic.
Inference versus instantiation.

 

 What are some common design/scenarios for verification given during a design verification interview?

This can vary based on your experience, background, your domain of expertise etc.

An interviewer can make up a design based on your experience level. The complexity and detailed design specifications can be varied. Questions can also vary from asking for basic verification scenarios to designing test benches, specific corner cases, debugging approaches, writing code for stimulus, checkers or other components etc.

The goal is to see how well candidate thinks through and understands the concepts/solutions.

Following are some :

1.      Simple Sync/Async FIFOs

2.      A simple ALU (Arithmetic Logic Unit). For an entry engineer, I can ask to verify same as a black box with just 3 instructions. For some one experienced, I can make it complex with making it superscalar, pipelining etc.

3.      A DMA controller - Can be a simple single channel DMA or make it complex with more details like multiple parallel channels, arbitration, peripheral agents etc and ask

4.      A packet switch/router - Can be a simple two port switch for an entry engineer or a multi port/multi speed switch/router with queuing/flowcontrol and more specific details.

5.      A master/slave agent on a shared bus - Could be a simple generic one or more specific with AXI or similar protocol agents.

6.      Simple SRAM/DRAM memories, single port / multi port , different speeds

7.      Different types of adders, transceivers, arbiters, state machines, sequence detectors etc

8.      Cache memories and controllers

9.      Interrupt controllers

 

 

The complexity will depend on number of factors like following (a sample list)

1.       Number of processing agents, caching agents, I/O agents in the coherence domain

2.       Type of Coherence protocol - snooping vs directory, supported coherence states (M, E, S, I, O, F), snoop filtering support etc

3.       Hierarchy of caches as inclusive/exclusiveness of caches

4.       Invalidation/Eviction/Writeback policies

The main goal for verification is to ensure that all caches are coherent at any given point in time. In most of my experience in verifying coherency, I have used constrained random stimulus along with a collection of checkers and coverage to ensure correctness and completeness

For a constrained random stimulus, you randomize all the request types originating from all agents, various address patterns (shared vs new vs conflicting etc), various message delays etc. The coherency checker can then look at order of requests across the coherence domain and predict the states and completeness of requests.

In addition, based on the micro architectural implementation, there might be need to create several other constrained/focused scenarios - eg. back pressure on request/snoop/data message channels, credit based controls if any etc

                      Questions on timing analysis, Verilog HDL, logic design, Sequential and combination circuits, finite state machine, synthesis, verification and testing, JTAG, etc.  questions on routing congestion and area reduction, standard cells and macros.Apart from these, Memories, ADC, DAC, PLL are a few circuits on which you may face questions. Know how the fabrication of the IC is done step-by-step.

        The process of turning bare silicon wafer into a packaged IC (diffusion, implant, lift-off, photo-resist, lithography, rca cleaning, metalization, dopant, silicide gate structure, etc)

        =>VLSI design rules that involves :

         Metal spacing/width,stick diagrams etc.=>in depth knowledge of CMOS:parasitics,channel length modulation,miniaturization etc.

         As a VLSI engineer, you need to know few commands of Linux command line that makes your job easier.

         Here are the topics which  need to learn:

 1.      Basic Linux commands

2.      Using wildcards

3.      Seeking help

4.      File handling

5.      Composite commands

6.      Users and permissions

7.      Basic scripting

8.      Environment variables

9.      Text editor

 

 Digital design (many topics within digital design), CMOS circuit design & underlying concepts (sizing, chain of inverters, logical effort, combinational & sequential logic design, drive strength, power considerations & repercussions , derating for PVT…) , FPGA’s , Board related concepts , HDL coding (Systemverilog , Verilog , VHDL), Good HDL coding practices, Synthesis concepts, ASIC design concepts, Verification methodologies, Basic serial communication protocols & their concepts, Basic & Advanced bus theory & knowledge of prominent bus protocols (AMBA - APB / AHB / AXI … ). Working level knowledge of a particular protocol or domain - storage (SSD’s / SATA ) / communication (Ethernet / USB …) / Memory interfaces / DSP knowledge .

  Knowledge of computer architecture (many sub-topics within this topic) is central to all concepts involved as everything is connected to a processor core. 

 Good working level knowledge of Verification methodologies - UVM / OVM.These are just technical skills, besides these, you need to know how to use tools and hands on with Unix environment / scripting for automation of tasks.Have  out your study plan and start with basics & ask a senior manager / colleague in the domain of your interest to mentor / guide you with your career plan.

  Experienced Engineer in VLSI FRONT END, need to know the Static Timing Analysis, Clock Domain Crossing,Linting,Power,Assertions and verification concepts.DFT understanding is added advantage.      

       Design For Testability (DFT)  covers all test-ability of chip and manufacturing defects testing.Combine to DFT, we have DFX where we include for Testablity.   Being DFT engineer, person should have knowledge of  Scan insertion/stitching,Automatic Test Pattern Generation(ATPG),Built in self test(BIST): Logical BIST, Memory BIST,Programmable MBIST.Automatic Test Equipment(ATE).In depth knowledge of Memories. In market DFT, also have its own recognition separately.      

      DFD:Design for Debug DFM :Design for Manufacturing DFS : Design for Security. 

      DFV:Design for validation ,Design for Reliability.


  For DV ,it is growing , and it will continue to grow , the reason behind is quality of the product delivered from INDIA , trust towards Indian Hardware engineer. Google India has started hiring DV engineer is indication of it.Most UVM(System verilog framework) users are from India.In coming days , India will have significant contributions towards DV community.     

        At experience level people must have good knowledge of Methodologies like UVM/OVM, then One must must know Gate level Simulation(GLS).     Another thing comes for a verification engineer is high speed protocols. as day by day designs are more faster and small sized, these are also required for a Designer.

  FPGA  PROTOTYPING:ARCHITECTURE ,  LUTS,CLBS,BRAM,DISTRIBUTED RAM,CLOCK BUFFER AND CLK RESOURCES,  FPGA P AND R,ROUTING,CONGESTION,TIMING-CREATE/GEN CLK,INPUT/OUTPUT    DELAY,MAX DELAY,MCP,FALSE PATH,DESIGN:SINGLE PORT.DUAL PORT,RAMS,FIFO,SERDES ETC,DDR/PCI

 FPGA  PRIMITIVES:MMCM,GTH/GTX,SERDES,Iddr,oddr,Idelay,Odelay

 FPGA EMULATION:ARCHITECTURE ,  LUTS,CLBS,BRAM,DISTRIBUTED RAM,CLOCK BUFFER AND CLK RESOURCES,  FPGA P AND R,ROUTING,CONGESTION,TIMING-CREATE/GEN CLK,INPUT/OUTPUT    DELAY,MAX DELAY,MCP,FALSE PATH,DESIGN:SINGLE PORT.DUAL PORT,RAMS,FIFO,SERDES ETC,DDR/PCI,

FPGA  PRIMITIVES:MMCM,GTH/GTX,SERDES,Iddr,oddr,Idelay,Odelay

Partitioning and design implement for multi fpga system,Multicore,multi clocks experience,SHELL,Dpi,pli,Vimeditor,c based transaction tb,in circuit emulation,clocking scenarios in  emulation

      Physical Design

           Backend where it involves Physical design(MAP, FLOOR PLAN, ROUTING, LAYOUT).experienced Engineer in VLSI FRONT END, need to know the Static Timing Analysis, Clock Domain Crossing,Linting,Power,Assertions and verification concepts.DFT understanding is added advantage. 

  

     In market DFT, also have its own recognition separately.  

  

     Design For Testability (DFT)  covers all test-ability of chip and manufacturing defects testing.Combine to DFT, we have DFX where we include for Testablity.            Being DFT engineer, person should have knowledge of  Scan insertion/stitching,Automatic Test Pattern Generation(ATPG),Built in self test(BIST): Logical BIST, Memory BIST,Programmable MBIST.Automatic Test Equipment(ATE).In depth knowledge of Memories.

 

      DFD:Design for Debug DFM :Design for Manufacturing DFS : Design for Security.

      DFV:Design for validation ,Design for Reliability.


For DV ,it is growing , and it will continue to grow , the reason behind is quality of the product delivered from INDIA , trust towards Indian Hardware engineer. 

    An experienced designer should have very good understanding of Fabrication lab requirement, which involve all Design rules check(DRC),Layout vs Schematic (LVS),all PVT stuffs, On chip variations, Parasitic exchange formats(SPEF/SDF).      If  for Verification, very good understanding of SV(system verilog), sometime SystemC(depends on JOB requirement), Assertions, UVM basics.At experience level people must have good knowledge of Methodologies like UVM/OVM, then One must must know Gate level Simulation(GLS).     Another thing comes for a verification engineer is high speed protocols. as day by day designs are more faster and small sized, these are also required for a Designer.

 

      Physical Design

    

       Backend where it involves Physical design(MAP, FLOOR PLAN, ROUTING, LAYOUT)


         To be a good verification engineer you have to know some  on each stage of ASIC flow.

 

    ASIC verification has many sub-levels of verification concern

·         Functionality and how the DUT (Design Under Test) will react to different stimulus.

·         Timing and whether the DUT will violate the timing constraints put by the design specs.

 

·         Physical Verification on the final transistor layout

 

  Test Bench module will be implemented in behaviour model to check the RTL.

Design module will be implemented in RTL which usually will be used in the ASIC/FPGA Flow. Which is very basic input in the ASIC/FPGA flow.But in order to implement RTL, will be using only synthesizable code which means, any kind of synthesizable tool(usually design_compiler(synopsys), Genus(cadence),..) can understand and able to generate Gate level netlist for the next flow in the ASIC/FPGA Flow.



A RTL will be checked through with below tools

linting checks - checks for synthesizable code is been implemented.
clock domain crossing checks - checks for synchronizers were implemented correctly in case different clock domains were used in design module.
synthesis - checks the timing constraints were meeting.
Along with functional verification & above tools will be used to check RTL

ASIC RTL interview questions are from


Respective Projects

      Design,Microarchitecture

Timing closure

      Low power if any

     STA

CDC

Linting

perl/python/tcl

Verification

SV added plus 

 

Program 1: AND Gate

 

module gate_and(a,b, c);
    input a,b;
    output c;
    reg c;
always @ (a,b)
   begin
   c <= a & b;
   end
endmodule

 

Program 2: OR Gate

 

module gate_or(a,b, c);
    input a,b;
    output c;
    reg c;
always @ (a,b)
   begin
   c <= a || b;
   end
endmodule


Program 3: NOT Gate

 

module gate_not(a,b);
    input a;
    output b;
    reg b;
always @ (a)
   begin
   b <= ~a;
   end
endmodule



Program 4: NAND Gate

 

module gate_nand(a,b, c);
    input a,b;
    output c;
    reg c;
always @ (a,b)
   begin
   c <= ~(a & b);
   end
endmodule



 


 Program 5: NOR Gate

module gate_nor(a,b,c);
    input a,b;
    output c;
    reg c;
always @ (a,b)
   begin
   c<=~(a || b);
   end
endmodule



 Program 6:XOR Gate

module gate_xor(a,b,c);
    input a,b;
    output c;
    reg c;
always @ (a,b)
   begin
   c<=(a^b);
   end
endmodule



Program 7:XNOR Gate

module gate_xor(a,b,c);
    input a,b;
    output c;
    reg c;
always @ (a,b)
   begin
   c<=~(a^b);
   end
endmodule


Program 8:HALF ADDER 



module h_add(a,b, sum,carry);
    input a,b;
    output sum,carry;
    reg sum,carry;
always @ (a,b)
    begin
     sum<=(a^b);
     carry<= (a&b);
     end
endmodule
Program 9:FULL ADDER 

module h_add(a,b,cin,sum,carry);
    input a,b,cin;
    output sum,carry;
    reg sum,carry;
always @ (a,b,cin)
    begin
     sum<=(a^b^cin);
     carry<= (a&b)||(b&cin)||(a&cin);
     end
endmodule



Program 10: D-LATCH WITH A POSITIVE GATE


module latch (g, d, q);

   input  g, d;

   output q;

    reg    q;

always @(g or d)

    begin

    if (g)

    q <= d;

    end

endmodule



Program 11:D-LATCH WITH A POSITIVE GATE AND AN ASYNCHRONOUS CLEAR

 

module latch (g, d, clr, q);

        input  g, d, clr;

        output q;

        reg    q;

always @(g or d or clr)

        begin

        if (clr)

        q <= 1'b0;

        else if (g)

        q <= d;

     end

endmodule



Program 12: 4-BIT LATCH WITH AN INVERTED GATE AND ASYNCHRONOUS PRESET



module latch (g, d, pre, q);

        input g, pre;

        input  [3:0] d;

        output [3:0] q;

        reg    [3:0] q;

always @(g or d or pre)

        begin

        if (pre)

        q <= 4'b1111;

        else if (~g)

        q <= d;

 end

endmodule

 

 

Program 13:D-FLIP FLOP WITH NEGATIVE EDGE CLOK AND ASYNCRHONOUS CLEAR

 

module flop(clk, d, clr, q);

                input  clk, d, clr;

                output q;

                reg    q;

always @(negedge clk or posedge clr)

   begin

                if (clr)

                q <= 1'b0;

                else

                q <= d;

                end

endmodule



Program 14:D-FLIP FLOP WITH POSITIVE EDGE CLOK AND SYNCRHONOUS SET



module flop (clk, d, s, q);

       input  clk, d, s;

       output q;

       reg    q;

always @(posedge clk)

       begin

       if (s)

       q <= 1'b1;

       else

       q <= d;

    end

endmodule

 

 

Program 15:D-FLIP FLOP WITH POSITIVE EDGE CLOK AND CLOCK ENABLE

 

module flop (clk, d, ce, q);

                input  clk, d, ce;

                output q;

                reg    q;

always @(posedge clk)

   begin

   if (ce)

   q <= d;

end

endmodule

 

 

Program 16: 4-BIT REGISTER WITH A POSITIVE EDGE CLOCK, SYNCHRONOUS SET AND CLOCK ENABLE



module flop (clk, d, ce, pre, q);

                input  clk, ce, pre;

                input  [3:0] d;

                output [3:0] q;

                reg    [3:0] q;

always @(posedge clk or posedge pre)

   begin

   if (pre)

 q <= 4'b1111;

else if (ce)

   q <= d;

   end

endmodule

 

 

Program 17: TRI-STATE BUFFER



module three_st (t, i, o);

        input  t, i;

        output o;

        reg    o;

always @(t or i)

        begin

      if (~t)

        o = i;

      else

        o = 1'bZ;

 end

endmodule



Program 18:TRI-STATE BUFFER USING CONDITIONAL OPERATORS (USING CONCURRENT ASSIGNMENTS)



module three_st (t, i, o);

                input  t, i;

                output o;

assign o = (~t) ? i: 1'bZ;

endmodule

 

 

Program 19: 4-BIT UNSIGNED UP COUNTER WITH ASYNCHRONUOS CLEAR



module counter (clk, clr, q);

        input  clk, clr;

        output [3:0] q;

        reg    [3:0] tmp;

always @(posedge clk or posedge clr)

        begin

        if (clr)

        tmp <= 4'b0000;

           else

        tmp <= tmp + 1'b1;

        end

   assign q = tmp;

endmodule

 

 

Program 20: 4-BIT UNSIGNED DOWN COUNTER WITH SYNCHRONUOS SET

module counter (clk, s, q);

        input        clk, s;

        output [3:0] q;

        reg    [3:0] tmp;

always @(posedge clk)

        begin

        if (s)

        tmp <= 4'b1111;

           else

        tmp <= tmp - 1'b1;

    end

assign q = tmp;

endmodule




Program 21: 4-BIT UNSIGNED UP COUNTER WITH AN ASYNCHRONOUS LOAD FROM THE PRIMARY INPUT.  

 

 

 

module counter (clk, load, d, q);

 

        input  clk, load;

 

        input  [3:0] d;

 

        output [3:0] q;

 

        reg    [3:0] tmp;

 

always @(posedge clk or posedge load)

 

        begin

 

        if (load)

 

        tmp <= d;

 

           else

        tmp <= tmp + 1'b1;

    end

assign q = tmp;

endmodule

 

 

Program 22: 4-BIT UNSIGNED UP COUNTER WITH A SYNCHRONOUS LOAD WITH A CONSTANT.

 

module counter (clk, sload, q);

                input        clk, sload;

                output [3:0] q;

                reg    [3:0] tmp;

always @(posedge clk)

                begin

                if (sload)

   tmp <= 4'b1010;

                   else

                tmp <= tmp + 1'b1;

end

assign q = tmp;

endmodule

 

 

 

Program 23: 4-BIT UNSIGNED UP COUNTER WITH AN ASYNCHRONOUS CLEAR AND A CLOCK ENABLE.

 

 module counter (clk, clr, ce, q);

                input        clk, clr, ce;

                output [3:0] q;

                reg    [3:0] tmp;

always @(posedge clk or posedge clr)

                begin

                if (clr)

                tmp <= 4'b0000;

                else if (ce)

                tmp <= tmp + 1'b1;

                end

assign q = tmp;

endmodule

 

program 24: 4-BIT UNSIGNED UP/DOWN COUNTER WITH AN ASYNCHRONOUS CLEAR.

 

module counter (clk, clr, up_down, q);

                input        clk, clr, up_down;

                output [3:0] q;

                reg    [3:0] tmp;

always @(posedge clk or posedge clr)

                begin

                if (clr)

                tmp <= 4'b0000;

                else if (up_down)

                tmp <= tmp + 1'b1;

                   else

                tmp <= tmp - 1'b1;

end

assign q = tmp;

endmodule

 

 

Program 25: 4-BIT SIGNED UP COUNTER WITH AN ASYNCHRONOUS RESET.

 

module counter (clk, clr, q);

    input clk, clr;

    output signed [3:0] q;

    reg    signed [3:0] tmp;

always @ (posedge clk or posedge clr)

     begin

     if (clr)

     tmp <= 4'b0000;

      else

     tmp <= tmp + 1'b1;

   end

assign q = tmp;

endmodule

 

 

Program 26: 4-BIT SIGNED UP COUNTER WITH AN ASYNCHRONOUS RESET AND A MODULO MAXIMUM.

 

module counter (clk, clr, q);

parameter MAX_SQRT = 4, MAX = (MAX_SQRT*MAX_SQRT);

        input clk, clr;

        output [MAX_SQRT-1:0] q;

        reg    [MAX_SQRT-1:0] cnt;

always @ (posedge clk or posedge clr)

        begin

        if (clr)

        cnt <= 0;

           else

        cnt <= (cnt + 1) %MAX;

        end

    assign q = cnt;

endmodule 

 

         

Program 27: 4-BIT UNSIGNED UP ACCUMULATOR WITH AN ASYNCHRONOUS CLEAR.

 

module accum (clk, clr, d, q);

        input        clk, clr;

        input  [3:0] d;

        output [3:0] q;

        reg    [3:0] tmp;

always @(posedge clk or posedge clr)

        begin

        if (clr)

        tmp <= 4'b0000;

           else

        tmp <= tmp + d;

        end

assign q = tmp;

endmodule

 

 

Program 28: 8-BIT SHIFT-LEFT REGISTER WITH A POSITIVE-EDGE CLOCK, SERIAL IN AND SERIAL OUT.

 

module shift (clk, si, so);

                                   input  clk,si;

                                   output so;

                                   reg    [7:0] tmp;

                                   always @(posedge clk)

                                   begin

                                   tmp    <= tmp << 1;

                                   tmp[0] <= si;

                                   end

assign so = tmp[7];

endmodule

 

 

 

 

 

 

Program 29: 8-BIT SHIFT-LEFT REGISTER WITH A NEGATIVE-EDGE CLOCK, A CLOCK ENABLE, A SERIAL IN AND A SERIAL OUT.

 

module shift (clk, ce, si, so);

                                   input        clk, si, ce;

                                   output       so;

                                   reg    [7:0] tmp;

always @(negedge clk)

                                   begin

                                   if (ce) begin

                                   tmp    <= tmp << 1;

                                   tmp[0] <= si;

                                   end

end

assign so = tmp[7];

endmodule

 

 

Program 308-BIT SHIFT-LEFT REGISTER WITH A POSITIVE-EDGE CLOCK, ASYNCHRONOUS CLEAR, SERIAL IN AND SERIAL OUT.

 

module shift (clk, clr, si, so);

                                   input        clk, si, clr;

                                   output       so;

                                   reg    [7:0] tmp;

always @(posedge clk or posedge clr)

                                   begin

                                   if (clr)

                                   tmp <= 8'b00000000;

                                      else

                                   tmp <= {tmp[6:0], si};

                                   end

assign so = tmp[7];

endmodule

 

 

 

Program 31: 8-BIT SHIFT-LEFT REGISTER WITH A POSITIVE-EDGE CLOCK, A SYNCHRONOUS SET, A SERIAL IN AND A SERIAL OUT.

 

module shift (clk, s, si, so);

                                   input        clk, si, s;

                                   output       so;

                                   reg    [7:0] tmp;

always @(posedge clk)

                                   begin

                                   if (s)

                                   tmp <= 8'b11111111;

                                      else

                                   tmp <= {tmp[6:0], si};

                                   end

assign so = tmp[7];

endmodule

 

 

Program 32: 8-BIT SHIFT-LEFT REGISTER WITH A POSITIVE-EDGE CLOCK, A SERIAL IN AND A PARALLEL OUT.

 

 module shift (clk, si, po);

        input  clk, si;

        output [7:0] po;

        reg    [7:0] tmp;

always @(posedge clk)

        begin

        tmp <= {tmp[6:0], si};

        end

assign po = tmp;

endmodule

 

 

 

Program 33: 8-BIT SHIFT-LEFT REGISTER WITH A POSITIVE-EDGE CLOCK, AN ASYNCHRONOUS PARALLEL LOAD, A SERIAL IN AND A SERIAL OUT.

 

 module shift (clk, load, si, d, so);

                                   input  clk, si, load;

                                   input  [7:0] d;

                                   output so;

                                   reg    [7:0] tmp;

always @(posedge clk or posedge load)

                                   begin

                                   if (load)

                                tmp <= d;

                                      else

                                   tmp <= {tmp[6:0], si};

                                   end

assign so = tmp[7];

endmodule

 

 

Program 34: 8-BIT SHIFT-LEFT REGISTER WITH A POSITIVE-EDGE CLOCK, A SYNCHRONOUS PARALLEL LOAD, A SERIAL IN AND A SERIAL OUT.

 

module shift (clk, sload, si, d, so);

        input  clk, si, sload;

        input  [7:0] d;

        output  so;

        reg    [7:0] tmp;

always @(posedge clk)

        begin

        if (sload)

        tmp <= d;

           else

        tmp <= {tmp[6:0], si};

        end

  assign so = tmp[7];

endmodule

 

 

 

Program 35: 8-BIT SHIFT-LEFT/SHIFT-RIGHT REGISTER WITH A POSITIVE-EDGE CLOCK, A SERIAL IN AND A SERIAL OUT.

 

module shift (clk, si, left_right, po);

                                   input   clk, si, left_right;

                                   output  po;

                                   reg    [7:0] tmp;

always @(posedge clk)

                                   begin

                                   if (left_right == 1'b0)

                                   tmp <= {tmp[6:0], si};

                                      else

                                   tmp <= {si, tmp[7:1]};

                                   end

assign po = tmp;

endmodule

 

module ASK_modulator(clk,rst,din,dout);

input clk,rst;

input din;

output dout;

 

wire dout;

reg cnt;

reg carrier;

 

always @(posedge clk)

begin

  if(!rst)

    begin

    cnt<=2'b00;

    carrier<=0;

    end

  else

      if(cnt==1)

       begin

            cnt<=0;

            carrier<=~carrier;

       end

      else

        begin

          cnt<=cnt+1;

          carrier<=carrier;

        end

end

       

assign dout=din&carrier;

 

endmodule       

 

module ASK_demodulator(clk,rst,ddin,ddout);
input clk,rst;
input ddin;
output ddout;
 
reg ddout;
reg [4:0]cnt1;
reg [2:0]cnt2;
 
always @(posedge clk)
begin 
  if(!rst)
    cnt1<=5'b00000;
  else
    if(cnt1==5'b10011)
      cnt1<=5'b00000;
    else
      cnt1<=cnt1+1;
end
 
always @(posedge ddin)
begin
  if(!rst)
    cnt2<=3'b000;
  else
    cnt2<=cnt2+1;
end
 
always @(posedge clk)
begin
  if(cnt1==5'b00000)
    begin 
       if(cnt2>1)
          ddout<=1;
        else
            ddout<=0;
        cnt2<=3'b000;    
     end
end
 

endmodule                

Design the 4:1 multiplexer circuit using TG switches.

 Design a 4:1 mux using three 2:1 TG multiplexers.

 Consider the 2-input XOR function. 

What is the practical application of XOR and XNOR gate?

A particular circuit could be given and asked to find the output.

Combinational Circuits:-Implement all the basic gates using 2:1 Mux.

NAND vs NOR circuitry.

Circuit for 1st one finder for a series input

For an input clk of f frequency generate an output of 2*f frequency

For an input clk of f frequency generate a clk output of frequency f÷(3/2) or (5/2)

Clock dividers with 50℅ duty cycle

Sequence detectors

Output should be high for only odd +ve edge transition

Max frequency calculation with transmitter as +ve edge flip flop and receiver as - ve edge flipflop with combinational circuits having false paths in it

Sync and Asynchronous  counters (Mod n counter)

Mealy,Moore

Synchronous and Async Reset difference

Latch vs Flipflop

All logic gates implementation using NAND , NOR

Logic gate implementation using MUX .

Boolean exp implementation using Decoder.

No. of 2*1 mux needed for 64*1 mux

No. of 2*4 decoders needed to implement 4*16 Decoder

Implement 4:1 Mux using 2:1 Mux

Implement Full adder using 4:1 Mux

 A function will be given like f(a,b,c) = sum(m){1,3,5,6} and implement it using 4:1 and 2:1 Mux.

 Implement 2:1 Mux using Tristate buffers.

 Design 4:16 Decoder using 3:8 Decoder.

Design Full adder using 3:8 Decoder.

Implement Full adder(FA),HA,FS,HS using either NAND or NOR gates.

Implement Full adder using Half Adder.

LAC adder and it's working principle.

Questions on Implicants,Prime Implicants and Essential Prime Implicants.

Karnaugh Map and Tabulation Method - Which one to use and when.

  4 x 4 Mux

 8 bit counter

 Decade Counter

 32 x 8 ROM

 32 x 8 RAM

 32 x 8 FIFO

  1)      Design a 4 bit combinational circuit 2’s complementer. The output generates the  2’s complement of the input binary number.Show that the circuit can be constructed using exclusive NOR gates.

      2)      Design a code converter that converts decimal digits from 842 code to BCD.

      3)      Design a combinational circuit that converts a 4 bit Gray code to 4 bit number.Implement using exclusive NOR gates.

    4)      Implement with a mux

a)F(A,B,C,D)=∑m(0,1,3,4,8,9,15)

b)F1(A,B,C,D)=∑m(1,3,4,11,12,13,14,15)

c)F2(A,B,C,D)=∑m(1,2,5,7,8,10,11,13,15)

5) a)Draw the logic diagram of 2-4 decoder using a)NOR gates b)

        NAND gates b) Construct 4-16 decoder with four 3 to 8 decoder.

 1)Convert RS FF to JK FF

2) A counter that follows the sequence 1,2,3,12,3…Design a state machine to follow this sequence using D type FF and as few gates.

3) Convert DFF to TFF

4) Draw a gated latch.

Give two ways of converting a two input NAND gate to an inverter.

Hazards types and Causes.

Sequential Circuits:-

Conversion of one Flip Flop to another like JK to SR,T to D,etc.

Race around condition in JK flip flop and how to avoid it.

Difference between Latch and Flip Flop.

Different types of shift register and it's working.Timing diagram

Difference between Johnson and Ring Counter.Timing diagram

Design a synchronous counter using JK flip flop and count sequence in XS-3 code.

Implement a counter with Mux

Design a MOD 10 counter with 50%/33% duty cycle.

Difference between Mealy and Moore State Machine.

Sequence detector problems like Design a Mealy/Moore FSM for 1001.

Design a Mealy FSM for 010 and 1010.

Frequency Divider Circuits.

 Design an XOR gate using a 4:1 mux.      Modify the circuit in a) to produce a 2-input XNOR

 Design a CMOS logic gate for the function   f= a.b+a.c+b.d

 Design a NAND3 gate using an 8:1 mux

 Design a NOR3 gate using an 8:1 mux as a basis.

 Why Race Condition? 

Q : If inverted op of D ff is connected to input of ff how the flop behave ??

A : It behave as T flipflop

Q : Design a circuit for dividing input frequency by 2 ?

A : please give input frequency as the clock of T flip flop & input of flop is 1. Output will be input clock divide by 2 .

Q : What are the different type of adder implementation ?

A : Carry Ahead,And & Xor combinational circuit , Ripple carry .

Q: Give the Truth Table for a Half Adder ?? Give gate level Implementaion of it ??

A:
A B Y Carry
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

Y = A xor B , Carry = A and B

Q : Design OR gate from 2:1 mux

A : assume that A & B are the input of OR gate . Then
Give A as sel pin of 2:1 mux , B to the 0th pin Mux & 1 to 1th pin of Mux

Q : Design a D FF from two latches ?

A : Connect two latches serially , First latch enable pin positive level & second latch enable pin
as negative level or vice versa . Connect clock to enable pin it will work as FF .

 Is the design area efficient? Will it cause problems in layout? Can we reduce the power  Consumed? Is it easy to test post silicon ? Is it easy to verify?

What are different type of counters?

Ans: ripple counter, synchronous counter, ring counter, Johnson counter etc.

Which counter will consume less power? Which will have largest area?

Another thing is to ask to design a logic circuit. 

For instance, given an input digital clock design digital circuit to divide the clock by 3, how about divide by 5?

Design a circuit to divide a clk by 2 ,4 , 8 ?

      Design a counter for a simple given sequence (0,1,3,2)

Mealy and Moore FSMs.

How to compare two input bit streams.

SOP-POS(SUM OF PRODUCT - PRODUCT OF SUM) form conversion of digital equations and logic 

optimization

Implementing functions using Decoder/Encoder

Waveform deterioration

Mathematics equations design and optimized hardware

Memory design questions

Race conditions in Digital circuitry

How many 2:1 Muxs are needed for 8:1/16:1 Mux.

Implementation of MUX using Tristate BUFFERS.

Area calculations of Mux implementation from different ways i.e. whic MUX will have more area on chip 8:1 MUX, 8:1 Mux using 2:1 Mux.

HALF-ADDER ←> FULL ADDER conversion

RAS  CAS in SRAM.

SRAM cells explanations working.

Ram vs FIFO.

SIPO/PISO related logic for fast implementations of any given problem

How  to do Handshake between designs.

Disk rotation detection/Ant walking and other probability questions, expected to be answered as digital design concept.

What is metastability?

When setup or hold window is violated in an flip flop then signal attains a unpredictable value or state known as metastability.

What is MTBF? What it signifies?

MTBF-Mean Time Before Failure

Average time to next failure

How chance of metastable state failure can be reduced?

 Lowering clock frequency

 Lowering data speed

Using faster flip flop

What are the advantages of using synchronous reset ?

 No metastability problem with synchronous reset (provided recovery and removal time for reset is taken care).

Simulation of synchronous reset is easy.

What are the disadvantages of using synchronous reset ?

 Synchronous reset is slow.

 Implementation of synchronous reset requires more number of gates compared to asynchronous reset design.

 An active clock is essential for a synchronous reset design. Hence you can expect more power consumption

What are the advantages of using asynchronous reset ?

 Implementation of asynchronous reset requires less number of gates compared to synchronous reset design.

Asynchronous reset is fast.

 Clocking scheme is not necessary for an asynchronous design. Hence design consumes less power. Asynchronous design style is also one of the latest design options to achieve low power. Design community is scrathing their head over asynchronous design possibilities.

What are the disadvantages of using asynchronous reset ?

 Metastability problems are main concerns of asynchronous reset scheme (design).

Static timing analysis and DFT becomes difficult due to asynchronous reset.

In a system with insufficient hold time, will slowing down the clock frequency help?

No.

 Making data path slower can help hold time but it may result in setup violation.

In a system with insufficient setup time, will slowing down the clock frequency help?

 Yes.

 Making data path faster can also help setup time but it may result in hold violation.

Setup and Hold time and what is Meta-stability and how to avoid it?

Setup and hold time of flops and what it signify and what is its violations.

     What are set up time & hold time constraints? What do they signify? Which one is critical for estimating maximum clock frequency of a circuit?

Setup and hold time definition and expression for both latch and flipflop

Setup time and Hold time - (i)Given a simple flop-flop design, find the maximum frequency of operation? 

       Explain hold time/occurrence of hold violation.

 Clock Skew/Slew/Slack/Propagation Delay.


What are False Path and Multicycle Path.?

Hold Slack Calculation of a given Circuit.

Frequency calculation of a given Circuit.

Reset Strategies and what is asynchronous assertion and Synchronous Deassertion.

Clock domain Crossing and what is asynchronous CDC.

What are synchronizers and when to use them?

FIFO depth Calculation of a Asynchronous FIFO.
How to calculate depth of FIFO for rate change implementation ?

 FIFO wrapper. Diagram of FIFO

 What is Empty and Full Condition in FIFO.

 Between Binary and Gray Counter, which one to use and why?

Meta stability.

Operating frequency calculations.

FIFO depth calculation.

Data accumulation (FIFO, read-ahead FIFO, etc)

Priority encoding

Arbitration (round-robin, weighted round-robin, etc)

Data window inspection, shifting, wrapping

Data width transitions

 If there are 4 inputs in decoder..no of output lines?

Application of decoder.

. Signal vs variable

. Fsm types.. difference between the two with block diagram

. No of inputs in 4 bit parallel adder

 Full adder

 Buffer using XNOR

 Setup and hold time. 

 If a number 101 is left shifted 2 times, what is the value of new number in decimal system. Ans. 20 (10100)

 Difference between flip flops and latch

 Libraries used in vhdl...why ieee.std_logic library is used?

Verilog 2001 vs 95

 Latches

 clock gatimg

 resource sharing

 operator overloading

operator balancing

power gatimg

 flip flop vs latches

 counters

registers

memories

 fifo

 fifo depth

 meta stability resolve of it

overlap

 skew 

 slack

 setup

hold  fix ‘

encoder

 decoder

 throughput latency calculation

bufg

power reduction in rtl

Fsm verilog mealy moore

Clock schemes

 pattern gen

defparam

 local parameter

 parameter

dynamic ram sram and its types.memory calculation

.shift register types .all digital mux encoder flip conversions race race around glitches static hazard and dynamic hazards

1010 11001 overlap or non overlap

Booth multiplier verilog

Full subt adder carry

Mealy conversion to moore.

Booth encoding

For loop generate while loop forever

: Encoding schemes .clocking schemes. Advantages

Save adder

Verilog rtl synthesis

Task and functions

Mcp false path sta dta

: Generate statements for multiplication

Parity error check and correction clock crossing in verilog verilog renerta web and tidbits fully

Setup and pulse width

  Implement K map

 1)F(A,B,C,D,E)=∑(0,2,4,6,9,13,21,23,25,29,31)

 2)F(W,X,Y,Z)=∑(0,1,2,4,5,6,8,9,12,13,14)

 3) F=A1C+A1B+AB1C+BC

 4)F(A,B,C,D)= ∑ (0,1,2,3,6,10,11,14)

 5) F(A,B,C,D)= ∑(0,1,2,3,6,10,11,14)

1)Design 4 bit combinational circuit 2’s complement, the output generates the 2’s complement of the input binary number,show that the  circuit can be constructed using EX-OR gates?

 2)Design a code converter that converts decimal digits from 8-4-2-1  code to binary?

 3)Design a combinational circuit  that converts  a 4 bit grey code to 4 bit binary number, Implement using EX-NOR  gates?

 4) Implement with a mux

   a) F(A,B,C,D)= Σm(0,1,3,4,8,9,15);

   b)F1(A,B,C,D)=Σ (1,3,4,11,12,13,14,15);

   c)F2(A,B,C,D)= Σ(1,2,5,7,8,10,11,13,15))

  d) Construct 16x1 multiplier with two 8x1  ans 8 one 2x1 multiplier using block diagram

 5)a)Draw  the logic diagram of 2-4 line decoder using

            a) NOR gates b) NAND gate

            b) Construct 4 to 16 line decoder with four 3x8 decoder


1. How do you convert a XOR gate into a buffer and an inverter (Use only one XOR gate for each)?

2.      Implement a 2-input NAND gate using a 2x1 mux.

3.      How can you convert a SR flip-flop to a JK flip-flop?

4.      What are the differences between a flip-flop and a latch?

5.      What is the difference between Mealy and Moore FSM?

6.      Give the transistor level circuit of a CMOS NAND gate.

7.      Give two ways of converting a two input NAND gate to an inverter.

8.      Give the design of 8x1 multiplexer using 2x1 multiplexers. 

9.      Design 2 input AND, OR and XOR gates using 2 input NAND gate.

10.  Implement a D-latch using 2x1 multiplexers.

11.  Implement a full adder using muxs.

12.  Realize A+(B.C+D.E)’ using CMOS.

Q : If inverted op of D ff is connected to input of ff how the flop behave ??

A : It behave as T flipflop

Q : Design a circuit for dividing input frequency by 2 ?
A : please give input frequency as the clock of T flip flop & input of flop is 1. Output will be input
clock divide by 2 .

Q : What are the different type of adder implementation ?


A : Carry Ahead,And & Xor combinational circuit , Ripple carry .

Q: Give the Truth Table for a Half Adder ?? Give gate level Implementaion of it ??
A:
A B Y Carry
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

Y = A xor B , Carry = A and B

Q : Design OR gate from 2:1 mux


A : assume that A & B are the input of OR gate . Then
Give A as sel pin of 2:1 mux , B to the 0th pin Mux & 1 to 1th pin of Mux

Q : Design a D FF from two latches ?
A : Connect two latches serialy , First latch enable pin positive level & second latch enable pin
as negative level or vice versa . Connect clock to enable pin it will work as FF .

Guideline To Avoid Race Condition 


(A). Do not mix blocking and nonblocking statements in same block.
(B). Do not read and write using blocking statement on same variable.( avoids read write race)
(C). Do not initialize at time zero.
(D). Do not assign a variable in more than one block.( avoids write-write race)
(E). Use assign statement for inout types of ports & do not mix blocking and nonblocking styles of declaration in same block. It is disallow variables assigned in a blocking assignment of a clocked always block being used outside that block and disallow cyclical references that don't go through a non-blocking assignment. It is require all non-blocking assignments to be in a clocked always block.
(F). Use blocking statements for combinational design and nonblocking for sequential design. If you want gated outputs from the flops, you put them in continuous assignments or an always block with no clock.


Avoid Race Between Testbench And DUT


Race condition may occurs between DUT and testbench. Sometimes verification engineers are not allowed to see the DUT, Sometimes they don't even have DUT to verify. Consider the following example. Suppose a testbench is required to wait for a specific response from its DUT. Once it receives the response, at the same simulation time it needs to send a set of stimuli back to the DUT.

Most Synchronous DUT works on the posedge of clock. If the Testbench is also taking the same reference, then we may unconditionally end in race condition. So it~Rs better to choose some other event than exactly posedge of cock. Signals are stable after the some delay of posedge of clock. Sampling race condition would be proper if it is done after some delay of posedge of clock. Driving race condition can be avoided if the signal is driven before the posedge of clock, so at posedge of clock ,the DUT samples the stable signal. So engineers prefer to sample and drive on negedge of clock, this is simple and easy to debug in waveform debugger also.