0% found this document useful (0 votes)
50 views

Set 10

The document discusses various digital logic building blocks including full adders, adders, latches, and flip-flops. It provides circuit implementations and descriptions for conventional static CMOS and transmission gate full adders, serial adders, ripple carry adders, carry skip adders, carry select adders, and other adder types. Circuit diagrams and descriptions are also given for different types of latches including transmission gate latches and dynamic latches. Finally, the document outlines master-slave D flip-flops, JK flip-flops, and other types of flip-flop circuits.

Uploaded by

api-3804613
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views

Set 10

The document discusses various digital logic building blocks including full adders, adders, latches, and flip-flops. It provides circuit implementations and descriptions for conventional static CMOS and transmission gate full adders, serial adders, ripple carry adders, carry skip adders, carry select adders, and other adder types. Circuit diagrams and descriptions are also given for different types of latches including transmission gate latches and dynamic latches. Finally, the document outlines master-slave D flip-flops, JK flip-flops, and other types of flip-flop circuits.

Uploaded by

api-3804613
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 70

Basic Building Blocks 

Amir M. Sodagar 

Spring 2003

Amir M. Sodagar  K.N.Toosi University of Technology  1 
Full Adders, Conv. Static CMOS 
q  Conventional Static CMOS Implementation 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  2 
Full Adders, TG 
q  Transmission­Gate Implementation 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  3 
Full Adders, Fully­Diff. 
q  A fully­differential implementation 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  4 
Full Adders, Fully­Diff. 
q  A fully differential full adder in which the 
carry­in is known to be a “0”. 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  5 
Full Adders, Manchester 
q  Manchester­type Full Adder 
o  To be effectively used in Carry­Skip Adders 

With non­complemented carry  With complemented carry
[The VLSI Handbook’2000] 

Amir M. Sodagar  K.N.Toosi University of Technology  6 
Adders 
q  Adders 
Ø Serial Adder 
Ø Ripple Carry Adder 
Ø Carry Skip Adder 
Ø Carry Select Adder 
Ø Carry Save Adder 
Ø Carry Look­Ahead Adder 
Ø Conditional Carry Adder

Amir M. Sodagar  K.N.Toosi University of Technology  7 
Adders 
q  Possible symbols for full adders used in the 
proceeding adder architectures. 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  8 
Adders, Serial 
q  A Serial Adder 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  9 
Adders, Ripple­Carry 
q  A fast 4­bit ripple­carry adder based on 
using complemented inputs 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  10 


Adders, Carry­Skip 
q  Carry Skip Adder 

p i =XOR(x i , y i )

[The VLSI Handbook’2000] 

Amir M. Sodagar  K.N.Toosi University of Technology  11 


Adders, Carry­Skip 
q  Carry Skip Adder 
Ø In a ripple carry adder, a carry propagates 
through the i­th FA when p i =XOR(x i , y i )=1. 
Ø A carry skip adder is a ripple carry adder that is 
partitioned into several blocks of FAs, attaching 
a carry skip circuit to each block. 
o A carry skip circuit detects the carry propagation 
condition of the block and lets the carry from the 
next lower block bypass the block when the condition 
holds. 
C h+1 =OR(C j+k , C h .[p j .p j+1 …p j+k­1 ]) 

[Uyemura, 99]

Amir M. Sodagar  K.N.Toosi University of Technology  12 


Adders, Carry­Select 
q  Carry­select adder 
Ø A 5­bit building block 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  13 


Adders, Carry­Select 
q  Differential realization of 

The multiplexor  The logic required for generating C out

[Martin, 2000] 

Amir M. Sodagar  K.N.Toosi University of Technology  14 


Adders, Conditional­Carry 
q  Conditional­Carry Adder 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  15 


Adders, Carry­Save 
q  Carry­save adder 
Ø  This technique is important when a number of additions 
are necessary (e.g. a DSP application or an array 
multiplier). 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  16 


Adders, Carry­Save 
q  Carry­save adder 
Ø  The basic idea is to save the carry propagates until the very last 
addition, where a very fast adder is used that is optimized for fast 
carry propagate speed. 
o  At all levels before the last, the carry­outputs are not rippled through 
the adders. Rather, they are shifted to a more significant position and 
added to the carry­ins of the next adder. 
o  To be specific, consider the carry­out of the i­th bit of an adder. This 
will be sent to the i+1th carry­in of the next adder. 
o  Notice that the top­level carry­outs are shifted right before being 
added into the next stage down. The same is true for the carry­outs at 
the second level down. 
Ø  The critical path for this architecture would be through the two left­ 
most full adders and then the carry propagation through the 
bottom row of full adders. 
o  The delay through this path would normally be minimized through the 
use of techniques such as carry­propagate adders or carry­select 
adders. 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  17 


Latches 
q  Using two cross­coupled inverters to store a 
logic “0” or “1”. 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  18 


Latches 
q  A transmission­gate­ 
based latch 

q  A simplified latch 
with hysteresis 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  19 


Latches 
q  An alternative clocked latch 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  20 


Latches 
q  A latch based on 
cross­coupled NOR 
gates 

q  A CMOS realization 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  21 


Latches 
q  A pseudo­NMOS 
biphase latch 

q  A compromise 
biphase latch 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  22 


Latches 
q  True Single­Phase Clock (TSPC) Latches 

N­block latch  P­block latch

[Uyemura, 99] 

Amir M. Sodagar  K.N.Toosi University of Technology  23 


Latches 
q  Dynamic CMOS latches 
Dynamic latches 
Ø A TG­based realization  must be refreshed 
periodically.

Ø An inverter­based 
realization 

[Martin, 2000] 

Amir M. Sodagar  K.N.Toosi University of Technology  24 


Flip­Flops 
q  SR flip­flop 
Ø Characteristic table 

Ø Master­slave architecture 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  25 


Flip­Flops 
q  A negative edge­sensitive SR FF 
Ø  When the clock is high, the outputs of AND gates a and b are affected by 
inputs S and R. this has no effect on the NOR­based cross­coupled latch. 
The high clock signal also guarantees that the output of NOR gates e and 
f, and therefore the inputs to the cross­coupled latch are both “0”. 
Ø  When clock goes low, the NOR gates e and f pass the results to the latch. 
A short time later, the delay time through inverters a and b to be exact, 
AND gates a and b are disabled by the output of inverter b going low. 
Ø  Thus, the only time the S and R inputs can pass through to the latch is 
during the negative edge of clock. 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  26 


Flip­Flops 
q  A master­slave D FF 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  27 


Flip­Flops 
q  A CMOS D­FF with 
asynchronous 
set/reset and 
output buffers 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  28 


Flip­Flops 
q  A TG­based master­slave D­FF 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  29 


Flip­Flops 
q  JK FF 

JK­FF using a D­FF  JK­FF based on cross­coupled 
NOR gates
[Martin, 2000] 

Amir M. Sodagar  K.N.Toosi University of Technology  30 


Flip­Flops 
q  A CMOS JK­FF 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  31 


Flip­Flops 
q  A TG­based JK­FF 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  32 


Counters 
Ø  Counters that produce an output signal that is an integer submultiple of an 
input or clock signal are often called dividers. 

q  A ripple counter 
Ø  The maximum input frequency of this counter is constrained only by how 
fast the first flip­flop can toggle. This makes the ripple counter one of the 
fastest available, particularly if a biphase flip­flop is used for the first 
stage. 
Ø  However, the time from when the first flip­flop changes to when the last 
flip­flop has settled can be quite large. 
o  This is because the changes ripple through from flip­flop to flip­flop. 
o  This makes the counter a poor choice for use in synchronous circuits. 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  33 


Counters 
q  A serial­carry synchronous counter 
Ø  The AND gates are used as a carry­in to each flip­flop. 
o  If all the preceding flip­flops are in “1” state, then the output of 
the AND gate will be one and the next flip­flop will toggle on 
the next activating clock edge. 
Ø  The major speed limitation is the time it takes the signal 
to ripple through the AND gates when all AND gates are 
changing. 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  34 


Counters 
q  A carry­lookahead synchronous counter 
Ø A separate AND gate is used for generating 
every carry­in. 
o Thus there is only one gate delay from the time the 
clock changes to when all carry­ins are stable, 
although the delay can be moderately large for the 
AND gates having a large fan­in. 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  35 


Multipliers 
q  Digital Multipliers 
Ø  Unsigned 
o  Sequential Multiplier (Shift­and­Add) 
o  Array Multiplier 
o  Systolic Array Multiplier 
o  Multiplier Based on Wallace Tree 
o  Multiplier Based on Redundant Binary Adder Tree 
o  … 

Ø  Signed 
o  Baugh­Wooley 
o  Booth 
o  Array 
o  …

Amir M. Sodagar  K.N.Toosi University of Technology  36 


Multipliers 
q  Review: Unsigned Multiplication 

0 1 1 1 0 1  multiplicand (29) 
x  1 0 1 0 1 1  multiplier (43) 
­­­­­­­­­­­­­­­­­­­­­­­­ 
0 1 1 1 0 1  partial product 
0 1 1 1 0 1 
•  product = 0 
0 0 0 0 0 0 
•  for i = 0 to n-1 
0 1 1 1 0 1  –  compute partial product 
0 0 0 0 0 0  (AND operation) 
0 1 1 1 0 1  –  left­shift partial product by i 
–  product += partial product 
­­­­­­­­­­­­­­­­­­­­­­­­­­­­ 
1 0 0 1 1 0 1 1 1 1 1  product 
[U of Alabama, 2003]

Amir M. Sodagar  K.N.Toosi University of Technology  37 


Multipliers, Shift & Add 
q  Shift and Add Multiplier 
Ø  for i = 0 to n-1 
o  pp = B × a[0] 
o  P[2n-1:n] += pp  B  multiplicand 
o  P = P >> 1 

pp 

adder 

product P 

multiplier 
[U of Alabama, 2003]

Amir M. Sodagar  K.N.Toosi University of Technology  38 


Multipliers, Array Mult. 
q  A 4x4­bit Array Multiplier 

Critical Path 1 

Critical Path 2

[Martin, 2000] 

Amir M. Sodagar  K.N.Toosi University of Technology  39 


Multipliers, Array Mult. 
q  A 6x6­bit Array Multiplier
q  Adders a0­f0 
may be eliminated => 
this eliminates adders a1­a6 
q  Complexity: 
CSA ­ 5x6 adders 
A 5  (including 5 half adders) 
CPA – 6 adders (2 HAs) 
B 0 
q  Delay: 
B 1  proportional to n + 
delay of CPA (f6 – b6) 
q  How to improve 
performance? 
Ø  decrease the number of 
partial products 
Ø  improve the speed of the 
addition of the partial 
products 

Amir M. Sodagar  K.N.Toosi University of Technology  40 


Multipliers, Array Mult. 
q  A 6x6­bit Array Multiplier 
X6  X5  X4  X3  X2  X1 

Y1 

P1 
Y2
+  +  +  +  + 

P2 
Y3 
+  +  +  +  + 

P3
Y4 
+  +  +  +  + 

P4 
Y5 
+  +  +  +  + 

P5 
Y6 
+  +  +  +  + 

P6 

+  +  +  +  + 

C P11  P10  P9  P8  P7 

Amir M. Sodagar  K.N.Toosi University of Technology  41 


Pipelining 
q  Basic Concept 
Ø Parallel Adder 
A  B 

C in  C out
FA  FA  FA 


Amir M. Sodagar  K.N.Toosi University of Technology  42 
Pipelining 
q  Basic Concept  A 2  B 2 
Ø Pipelined Adder 
A 1  B 1  D  D 

A 0  B 0  D  D  D  D 
C in  C out 
FA  D  FA  D  FA  D 

D  D  D 

D  D  S 2

D  S 1 

S 0 
Amir M. Sodagar  K.N.Toosi University of Technology  43 
Pipelining 
q  Basic Concept  0  0 
A 2  1  B 2  0 


Ø Pipelined Adder  1  1 
A 1  0  B 1  1  D  D 
1  1 
0  0 
A 0  0  B 0  1  D  D  D  D 
1  0 
0 1 0  0 
C in  FA  D  FA  D  FA  D  C 
1  out 

D  D  D 
S 2 
D  D 
S 1  A=110, 001, 010 
D  T1   T2    T3   T4    T5   T6    T7
B=011, 110, 010 
S 0  f
C in =0, 1, 0 
Amir M. Sodagar  K.N.Toosi University of Technology  44 
Pipelining 
q  Basic Concept 
A 2  0  B 2  0 


Ø Pipelined Adder 
A 1  1  B  1  D  D 
0  1  1  0  1 

A 0  0  B  0  D  D  D  D 
0  0  1  1  1 
0 1  1  0  1 
C in  FA  D  FA  D  FA  D  C 
0  0  out 

D  D  D 

S 2 
D  D 
S 1  A=110, 001, 010 
D  T1   T2    T3   T4    T5   T6    T7
B=011, 110, 010 
S 0  f
C in =0, 1, 0 
Amir M. Sodagar  K.N.Toosi University of Technology  45 
Pipelining 
q  Basic Concept 
A 2  B 2  0 

Ø Pipelined Adder 
A 1  1  B 1  1  D  D 
1  0 

A 0  0  B 0  0  D  D  D  D 
0  1  0  1 
0  0  1  1 
C in  FA  D  FA  D  1  FA  1 
D  C 
0  0  0  out 

D  D  D 
0  0 
S 2 
D  D 

S 1  A=110, 001, 010 
D  T1   T2    T3   T4    T5   T6    T7
B=011, 110, 010 
S 0  f
C in =0, 1, 0 
Amir M. Sodagar  K.N.Toosi University of Technology  46 
Pipelining 
q  Basic Concept 
A 2  B 2 
Ø Pipelined Adder 
A 1  B 1  D  D 
0  0 

A 0  B 0  D  D  D  D 
1  1  1  0 
0  1  1  1 
C in  FA  D  FA  D  FA  D 1  C 
0  0  out 

D  D  D 
0  0 
S 2  0 
D  D 

S 1  0  A=110, 001, 010 
D  T1   T2    T3   T4    T5   T6    T7
1  B=011, 110, 010 
S 0  f
C in =0, 1, 0 
Amir M. Sodagar  K.N.Toosi University of Technology  47 
Pipelining 
q  Basic Concept 
A 2  B 2 
Ø Pipelined Adder 
A 1  B 1  D  D 

A 0  B 0  D  D  D  D 
0  0 
1  0  1 1 
C in  FA  D  FA  D  FA  D  C 
1  out 

D  D  D 
0  0 
S 2  0 
D  D 
0  0 
S 1  0  A=110, 001, 010 
D  T1   T2    T3   T4    T5   T6    T7
0  B=011, 110, 010 
S 0  1  f
C in =0, 1, 0 
Amir M. Sodagar  K.N.Toosi University of Technology  48 
Pipelining 
q  Basic Concept 
A 2  B 2 
Ø Pipelined Adder 
A 1  B 1  D  D 

A 0  B 0  D  D  D  D 
0 1 1 
C in  FA  D  FA  D  FA  D  C 
out 

D  D  D 

S 2  0 
D  D  0 

S 1  0  A=110, 001, 010 
D  0 
T1   T2    T3   T4    T5   T6    T7
0  B=011, 110, 010 
S 0  0  f
1  C in =0, 1, 0 
Amir M. Sodagar  K.N.Toosi University of Technology  49 
Multipliers, Pipelined Array Mult. 
x4  x3 

Pipelined 
y4  y3  y2  y1  x2  x1 

Array 
Multiplier 
+  0 

+  +  0 

+  +  +  0 

+  + 

p8  p7  p6  p5  p4  p3  p2  p1

Amir M. Sodagar  K.N.Toosi University of Technology  50 


Multipliers, Pipelined Array Mult. 
q  Pipelined 
Array 
Multiplier

Amir M. Sodagar  K.N.Toosi University of Technology  51 


Multipliers, Wallace Tree 
q  Wallace­Tree Multiplier 

[The VLSI Handbook’2000]

Amir M. Sodagar  K.N.Toosi University of Technology  52 


PLAs 
q  Programmable 
Logic Arrays 
(PLAs), 
Simplified 
Architecture 

OR  AND 
Program  Program 
Cell Cell 
[Geiger, Allen, Stradr, 1990] 

Amir M. Sodagar  K.N.Toosi University of Technology  53 


PLAs 
q  Programmable Logic Arrays (PLAs) 
Ø A NOR­NOR PLA architecture 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  54 


PLAs 
q  Programmable Logic Arrays (PLAs) 
Ø  A pseudo­NMOS OR­AND or equivalently NOR­NOR PLA 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  55 


Multiplexors 
q  An inverted­tree multiplexor 
Ø  A pseudo­NMOS load pulls the 
internal nodes high 
Ø  This load can be replaced 
by a dynamic load. 
Ø  The output inverter also serves 
as a buffer. 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  56 


Multiplexors 
q  Realizing a multiplexor using two levels of NOR gates 

This circuit can be laid out very densely 
using a programmable logic array (PLA)­ 
like layout.

[Martin, 2000] 

Amir M. Sodagar  K.N.Toosi University of Technology  57 


Multiplexors 
q  A PLA­like implementation of the circuit 
Ø  There are fewer NMOSs in series between any node and ground. 
o  Increases the speed, 
o  Allows the transistors to be taken with smaller widths => saving on area. 
Ø  A modern design might have the pseudo­NMOS loads replaced with dynamic loads. 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  58 


Multiplexors 
q  Another possibility for a multiplexor 
Ø  Combination of a PLA­like structure and N­channel 
transmission gates 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  59 


Multiplexors 
q  A bipolar current­mode multiplexor 
Must be connected to Vcc.

[Martin, 2000] 

Amir M. Sodagar  K.N.Toosi University of Technology  60 


Decoders 
q  A 3­to 1­of­8 decoder based on a tree structure 
Ø  In addition to not requiring many transistors, the output 
inverters can be taken wider and can therefore drive 
larger loads. 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  61 


Decoders 
q  A two­level approach for realizing a 6­to 1­of­64 decoder 
Ø  When realizing decoders having more than 8 outputs, a two­level approach 
is usually taken. 
Ø  Latches might be added to the output of the first­level decoders in order to 
pipeline the circuits when latent time delay is not a problem and large 
throughput is desired. 

A 4­input inverting decoder

[Martin, 2000] 

Amir M. Sodagar  K.N.Toosi University of Technology  62 


Combinational Shifters 
q  Binary Shifter 
Right  nop  Left 

A i  B i 

A i­1  B i­1 

Bit­Slice i 

...

Amir M. Sodagar  K.N.Toosi University of Technology  63 


Combinational Shifters 
q  Barrel Shifter 
Ø  A barrel shifter is a circuit that will shift the contents of a bus a 
specified number of positions left or right as specified by a control 
word. 
o  Normally, when shifting to the right, the positions vacated will be filled 
with values from the left, or if no values are available, then filled with 
0s. 
o  Alternatively, when no values are available, the vacated positions may 
be filled with the value of the most significant digit (i.e., the most left 
digit). 
o  As a third alternative, some shifters may actually rotate the contents of 
a bus filling the least significant bits with the previous contents of of 
the most significant bits for a shift left and vice versa for a shift right. 
o  The actual functionality is application dependent. 
Ø  A barrel shifter 
o  essentially consists of a number of multiplexors, one for each bit of the 
bus. 
o  normally contains a decoder as well that is used to supply the 
necessary control bits to the multiplexors. 
[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  64 


Combinational Shifters 
q  Barrel Shifter 
Ø  A 4­bit barrel shifter with a programmable shift of 0 to 3 bits. 
o  The LSBs are rotated into vacated most­significant positions. 

(MSB) 
(MSB) 

(LSB) 
(LSB)
[Martin, 2000] 

Amir M. Sodagar  K.N.Toosi University of Technology  65 


Combinational Shifters 
q  Barrel Shifter 
Ø  Operation: No shift 

1  0       0        0 

(MSB) 
(MSB) 
0  1  0        0 

0        0  1  0 

0        0       0  1
(LSB) 
(LSB) 
[Martin, 2000] 

Amir M. Sodagar  K.N.Toosi University of Technology  66 


Combinational Shifters 
q  Barrel Shifter, A different view 
A 3 
B 3 

Sh1 
A 2 
B 2 

Sh2  : Data Wire
A 1 
B 1  : Control Wire 

Sh3 
A 0 
B 0 

Sh0  Sh1  Sh2  Sh3 

Amir M. Sodagar  K.N.Toosi University of Technology  67 


Combinational Shifters 
q  Barrel Shifter, Layout 
Ø Area is dominated by wiring 

A 3 

A 2 

A 1 

A 0

Sh0  Sh 1  S h2  Sh3 


B uffer 
Amir M. Sodagar  K.N.Toosi University of Technology  68 
Combinational Shifters 
q  Barrel Shifter 
Ø  A modified architecture 
o  The vacated bits are filled with the MSB of the input 

[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  69 


Combinational Shifters 
q  Barrel Shifter 
Ø  In the 4­bit examples just presented, each output bus is 
the equivalent of a 4­bit NOR gate. If this approach was 
used for a 32­bit barrel shifter, the junction capacitance 
on each line would be excessively large. 
Ø  For larger barrel shifters, a multistage approach is 
necessary, similar to what has been described for 
decoders. 
o  For example, assume a bus has 32 bits. Then a five­stage 
approach might be adopted. 
§  The first stage would shift the input either left by 1 bit, right by 1 
bit, or leave it unshifted. 
§  The second stage would shift its input either left by 2 bits, right by 
2 bit, or leave it unshifted. 
§  And so on for the third to the fifth stages. 
§  The combination of all five stages would allow a shift left or right 
by any integer between 0 and 31. 
[Martin, 2000]

Amir M. Sodagar  K.N.Toosi University of Technology  70 

You might also like