1.29k likes | 1.42k Views
Lecture 6.5. Paolo PRINETTO Politecnico di Torino (Italy) University of Illinois at Chicago, IL (USA) Paolo.Prinetto@polito.it Prinetto@uic.edu www.testgroup.polito.it. Tackling circuit complexity (2). Goal.
E N D
Lecture 6.5 Paolo PRINETTO Politecnico di Torino (Italy)University of Illinois at Chicago, IL (USA) Paolo.Prinetto@polito.it Prinetto@uic.edu www.testgroup.polito.it Tackling circuit complexity (2)
Goal • This lecture is the latter part of a group of 2 lectures aiming at presenting methods used in manual combinational synthesis to overcome the limitations of the purely manual approach presented in lectures 6.1-6.3
Prerequisites • Lectures 5.1 and 6.4
Homework • Students are warmly encouraged to solve the proposed exercises
Further readings • No particular suggestion
Outline • Partitioning based techniques • RT level minimizations • Synthesis by iterating basic cells
Partitioning-bases techniques • The system is first partitioned in functional blocks • Each functional block is then implemented resorting to one of the above mentioned approaches • The system is eventually designed simply assembling the functional blocks.
Partitioning-bases techniques • The system is first partitioned in functional blocks • Each functional block is then implemented resorting to one of the above mentioned approaches • The system is eventually designed simply assembling the functional blocks. This step is iterated until each functional block is implemented resorting to elements that are considered to be “basic” or “elementary” for the target design
RT Level Synthesis • A peculiar case is the one in which the “elementary blocks” are the RT level combinational blocks presented in lecture 5.2.
User'sRequirements RT Level Synthesis system RT logic Impl behavior structure physical
RT level synthesis • Approaches to manual RT level synthesis can be clustered in 2 major classes: • intuitive • systematic(from VHDL RT descriptions) (presented in module 12).
Intuitive approach • The intuitive approach will be presented resorting to a couple of examples.
|X| Module generator • Design a circuit which, getting in input a number X of n bits, represented according to the 2’complement notation, provides in output the value: • Y = |X|.
|X| Module generator • Design a circuit which, getting in input a number X of n bits, represented according to the 2’complement notation, provides in output the value: • Y = |X|. X < 0 Y = | X | = X X 0 Y = | X | = + X
|X| X X 0 1 X < 0 Y = | X | = X X 0 Y = | X | = + X Y
|X| X 2’s compl. X 0 1 X < 0 Y = | X | = X X 0 Y = | X | = + X Y
|X| X 0 2’s compl. < X 0 1 X < 0 Y = | X | = X X 0 Y = | X | = + X Y
Iteration • The process is iterated until all the functional blocks the system has been partitioned in are “elementary”, i.e., can be directly implemented by one of the components present in the target library.
Iteration • The process is iterated until all the functional blocks the system has been partitioned in are “elementary”, i.e., can be directly implemented by one of components present in the target library. • Let’s assume the target library be the RT level combinational blocks presented in lecture 5.1
|X| Comparator X 0 2’s compl. < X 0 1 Y
|X| X 0 2’s compl. < X 0 1 Multiplexer Y
|X| X 0 2’s compl. < X 0 1 Can be implemented in several ways Y
X = 0 X 2’s compl.
X = 0 X 0 X 0 2’s compl. ADD/~SUB Adder / Subtracter
X = 1’s_compl(X) + 1 2’s compl.
X = 1’s_compl(X) + 1 1’s compl. 2’s compl. +1
|X| 1 +1
|X| Alternative implementation • Design a circuit which, getting in input a number X of n bits, represented according to the 2’complement notation, provides in output the value: • Y = |X|. X < 0 Y = | X | = X = X’ + 1 X 0 Y = | X | = + X = X + 0
|X| X < 0 Y = | X | = X = X’ + 1 X 0 Y = | X | = + X = X + 0 Y
|X| X X’ 0 1 X < 0 Y = | X | = X = X’ + 1 X 0 Y = | X | = + X = X + 0 Y
|X| X 0 1 X’ 0 1 0 1 X < 0 Y = | X | = X = X’ + 1 X 0 Y = | X | = + X = X + 0 Y
|X| X 0 1 X’ 0 1 0 1 X < 0 Y = | X | = X = X’ + 1 X 0 Y = | X | = + X = X + 0 Y
|X| X 0 0 1 X’ < 0 1 0 1 X < 0 Y = | X | = X = X’ + 1 X 0 Y = | X | = + X = X + 0 Y
Programmable Divider • Design a circuit which, getting in input: • An 8-bit number X coded 2C • A 2-bit number D coded 2C • provides on the output Y (coded 2C) the value Y = X / D
Solution • The divider D can get the following 4 values, only: • D=2 Y = X/2 • D=1 Y = X • D=0 error • D=1 Y = X
X divider / complementer don’t care X/2 X X 10 11 00 01 D 0 = Y ERR
X divider / complementer X/2 X X X 2’s compl. X / 2 X X X/2
/ 2
X 2’s compl. X / 2 don’t care X/2 X X 11 00 01 10 D Y
Question • How many bits are needed to properly represent Y?
Answer • D = 1 Y = X • Thus, representing Y requires one bit more than representing X.
Outline • Partitioning based techniques • RT level minimizations • Synthesis by iterating basic cells
Hints • At the end of an intuitive RT level synthesis, it’s highly recommended to perform an optimization step aiming at locally minimizing the Functional Blocks.
Graphic notations U A op U = A1op A2 op … op An where op = and, or, xor, nand, nor, exnor
Graphic notations U A op U = A1op A2 op … op An A U op Ui = Aiop B B where op = and, or, xor, nand, nor, exnor
Graphic notations U A op U = A1op A2 op … op An A U op Ui = Aiop B B A U op Ui = Aiop Bi B where op = and, or, xor, nand, nor, exnor
1 0 select 1 0
1 0 select 1 0 select