Wednesday, 25 March 2020

does knowlege on Location of MEMORIES was important during mbist implementation

MBIST( Memory Built In Self Test) is implemented to test memories in the design for different types of faults. MBIST contains the processor and wrapper which will be wrapped arround the memories.The MBIST processor controlls the wrapper and generates various control signals during the memory testing. A design may have multiple processors depending on the number of memories, memory size, power, frequency and memory placement.

Memories which are placed near by are grouped together and controlled by single processor. Thereofore, we need the memory placement info to group the memories under a controller and this info was given to the DFT team in the form of DEF and floorplan snapshot. This info will be given by PD/PNR team.

What happens if memories are not grouped properly?
If memories are not grouped properly according to their physical location i.e memories under same processors are sitting at different corners. This will lead to MBIST logic spreading, which impacts on MBIST timing during the STA due to long paths or increase in congestion due to lots of criss-cross while implementing the PNR and also increases the unneccesary power consumtption.

Wednesday, 18 March 2020

CHISEL:multiplexer

A multiplexer is a circuit which selects between the input signals depending on select signal. In basic form of multipexer (2:1 mux) selects between two signals. Below fig represents the 2:1 multiplexer , depending upon the sel signal y will represent the input signal a or b


A multiplexer can be designed using logic gates. As the multiplexer is used more frequently in digital desgin, chisel provides the function called MUX

val results = Mux(sel , a, b)

where a is selected when sel is true, otherwise b is selected, type of sel is a chisel Bool. The inputs a and b can be any chisel base type or aggregate (bundlers or vectors) as long as they are same type

A Bundle to group signals of different types. A Vec to represents an indexable collection of signals of the same type

Friday, 13 March 2020

Techniques to reduce the patterns count without losing coverage

During the DFT validation patterns are used which are generated during ATPG stage, even these patterns(in Still, wgl format) are used to test a chip on ATE. As there is limitation on memory of the ATE, size of the patterns generated must be with in the memory limit of ATE. Thus we have to reduce the patterns count/pattern volume for a design without losing the coverage. Few of the technique are

  • For pattern reduction, First step is chain balancing. During scan insertion scan chains present in the design must be balanced(of equal length), so that tool will insert the less dummy patterns for reaching a required flip flop.
  • we can also include compression on the chains. This means if we are having the compression factor of 2 then your 1 scan chain will get divided into 2 inside the device reducing your chain length (flops per scan chain), thus less patterns are required.

compression ratio:
The compression ratio in DFT used to reduce the TESTER Application time and TESTER data volume(size of pattern).

Wednesday, 12 February 2020

What are the deciding factors for a scan desgin

If u ask to do DFT implementation on a design, then what factors do we need consider mainly. While doing the DFT implementation designer need to have some knowledge on tester which will be used for testing IC.

  • Number of channels available on the tester
  • Memory size of the channel
  • Number of scan pins
  • The operational frquecny of the tester

This above facotrs must be considered while implementing the DFT on the design

Tuesday, 4 February 2020

DFT:Ad-hoc methods, Structured methods,Scan cell

Design for Testability (DFT) is required to guarantee the product quality, reliability, performances, etc. Design for Testability refers to those design techniques that

  • Enhances testability of device
  • Ease ability to generate vectors
  • Reduce test time
  • Reduce the cost involved during test

There are different methods to implement the DFT Logic for Digital circuits which are listed below

  • Ad-hoc methods: Good design practices learnt through experience and those methods are used as guidelines
    • Avoid combinational feedback
    • All flip flops must be initializable
    • Avoid redundant and large fanin gates
    • Provide test control for the signals which are not controllable
    • While designing test logic we have to consider the ATE requirements

Ad-hoc methods had few disadvantages, and these gives more advantage to Structured methods.

  • Disdvantages od ad-hoc DFT methods:
    • Experts and tools not always available
    • Test generation is often manual with no guarantee of high fault coverage
    • Design iterations may be necessary
  • Structured Methods: Structured DFT provides a more systematic and automatic approach to enhancing design testability. Structured DFT’s goal is to increase the controllability and observability of a circuit. Various methods exist for accomplishing this. The most common is the scan design technique, which modifies the internal sequential circuitry of the design.
    • Scan: In the design all the flip flops are converted to scan flip flop.
    • Boundary Scan
    • Built-in self-test

we have came across the scan flip flop, and you may be wondering, what would be the difference between a norml flip flop and a scan flip flop. Below pictorial representation give clear picture about a flop and scan flop.


TM represents Test Mode signal and this signal should be 1 during DFT testing and 0 for functional model.

Wednesday, 29 January 2020

CHISEL:Combinational circuits

Chisel uses the boolean algebra operators and arithmetic operators same as in c, java, scala, etc programming languages.

val sel = a & b

The keyword val is part of scala which is used to name the variables that have values that won’t change. And here it is used to name the chisel wire, sel, holding the output of the bitwise and operation. A signal can also first be defined as a Wire of some type. Afterward, we can assign a value to the wire with the  ‘:=’ update operator.

val sel = Wire(UInt()))
sel := a & b

Boolean operators

& —– represents bitwise AND operator
val and = a & b
| —– represents bitwise OR operator
val or = a | b
^ —– represents bitwise XOR operator
val xor = a ^ b
~ —– represents bitwise negation
val not = ~a

Arithmetic operations

+ —– Addition operation
val add = a + b
– —– Subtraction operation
val sub = a – b
* —– multiplication operation
val mul = a * b
/ —– division operation
val div = a / b
% —– modulo operation
val mod = a % b

OperatorDescriptionData Types
*        /         %Multiplication, division, modulusUInt, SInt
+       –Addition, subtractionUInt, SInt
===      =/=Equal, not equalUInt, SInt, returns Bool
>    >=    <=Comparison operationsUInt, SInt, returns Bool
<<      >>Shift left, shift rightUInt, SInt
~NOTUInt, SInt, Bool
&        |        ^AND, OR, XORUInt, SInt, Bool
!Logical NOTBool
&&      ||Logical AND, ORBool
Chisel defined hardware operators are show above

Wednesday, 22 January 2020

Vi Editor Series III

Below commands must be used in visual mode (ctrl+v)

  • Type  dw  to delete a word.
  • Type  d$   to delete to the end of the line.
  • Press  a  to append text.
  • Type  %  to find a matching ),], or } .
  • Type  :s/vlsispace_old/vlsispcae_new/g  to substitute ‘vlsispace_new‘ for ‘vlsispace_old‘ in the line
  • Type   :%s/vlsispace_old/vlsispcae_new/g  to change every occurrence in the whole file.
  • Type  :!     followed by an external command to execute that command.
  • CTRL+R a few times  to redo the commands.
  • Type CTRL+g to show your location in the file and the file status.
  • Type  CTRL+G  to move to a line in the file.
  • Press  G  to move you to the bottom of the file.
  • Type  gg  to move you to the start of the file.
  • Type  a  to insert text AFTER the cursor.
  • Type  A  to insert text after the end of the line.
  • Type a capital  R  to replace more than one character.
  • yw  yanks one word.
  • y  operator to copy text and  p  to paste it 
  • Type  o  to open a line BELOW the cursor and start Insert mode.    Type  O  to open a line ABOVE the cursor.
  • The  command moves to the end of a word.
  • Typing “:set xxx” sets the option “xxx”.  Some options are:
    • ic‘ ‘ignorecase’       ignore upper/lower case when searching
    • is‘ ‘incsearch’        show partial matches for a search phrase
    • hls‘ ‘hlsearch’        highlight all matching phrases
    •  You can either use the long or the short option name.
  • Prep-end “no” to switch an option off:   :set noic
  •  Vim has a comprehensive on-line help system.  To get started, try one of  these three:
    • press the <HELP> key (if you have one)
    • press the <F1> key (if you have one)
    • type   :help <ENTER>
  •  You can find help on just about any subject, by giving an argument to the  “:help” command.
    • :help w
    • :help c_CTRL-D 
    • :help insert-index 
    • :help user-manual 
    • :help vimrc-intro
  • There is a variable in VIM runtime..
    • $VIMRUNTIME/  ==> we can refer to this if want to know any vim  versions etc..
  • Command line completion with CTRL-D and <TAB>

Physical Cells :TAP CELLS, TIE CELLS, ENDCAP CELLS, DECAP CELLS

Tap Cells (Well Taps) :  These library cells connect the power and ground connections to the substrate and n­wells, respectively.  By plac...