BOOLEAN FUNCTION DECOMPOSITION BASED ON FPGA BASIC CELL STRUCTURE

Similar documents
Implementing Logic in FPGA Memory Arrays: Heterogeneous Memory Architectures

Efficient SAT-based Boolean Matching for FPGA Technology Mapping

VARIATION OF INTERNAL FORCES USING ARTIFICIAL NEURONAL NETWORK

A NOVEL SYSTOLIC ALGORITHM FOR 2-D DISCRETE SINE TRANSFORM

DETERMINATION OF INITIAL BASIC FEASIBLE SOLUTION OF A TRANSPORTATION PROBLEM: A TOCM-SUM APPROACH

AUTONOMOUS ROBOT NAVIGATION BASED ON FUZZY LOGIC AND REINFORCEMENT LEARNING

INTRODUCTION TO FPGA ARCHITECTURE

CHECKING THE HOMOGENEITY OF CONCRETE USING ARTIFICIAL NEURAL NETWORK

MAC LEVEL BASED QUALITY OF SERVICE MANAGEMENT IN IEEE NETWORKS

SOFTWARE FOR THE MINIMIZATION OF THE COMBINATIONAL LOGIC FUNCTIONS

ABOUT MANUFACTURING PROCESSES CAPABILITY ANALYSIS

Software for The Minimization of The Combinational Logic Functions

Breakup Algorithm for Switching Circuit Simplifications

MODELING THE FORCE-ELONGATION CURVE OF SINGLE YARNS

FPGA based Design of Low Power Reconfigurable Router for Network on Chip (NoC)

A COMPETENT ALGORITHM TO FIND THE INITIAL BASIC FEASIBLE SOLUTION OF COST MINIMIZATION TRANSPORTATION PROBLEM

Field Programmable Gate Array (FPGA)

DESIGN STRATEGIES & TOOLS UTILIZED

FPGA: What? Why? Marco D. Santambrogio

Spiral 2-8. Cell Layout

INTRODUCTION TO FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)

TECHNOLOGY MAPPING FOR THE ATMEL FPGA CIRCUITS

! Program logic functions, interconnect using SRAM. ! Advantages: ! Re-programmable; ! dynamically reconfigurable; ! uses standard processes.

Topics. Midterm Finish Chapter 7

CHAPTER 9 MULTIPLEXERS, DECODERS, AND PROGRAMMABLE LOGIC DEVICES

Synthesis of VHDL Code for FPGA Design Flow Using Xilinx PlanAhead Tool

Learning Outcomes. Spiral 3 1. Digital Design Targets ASICS & FPGAS REVIEW. Hardware/Software Interfacing

Design and Implementation of FPGA Logic Architectures using Hybrid LUT/Multiplexer

How Much Logic Should Go in an FPGA Logic Block?

Hybrid LUT/Multiplexer FPGA Logic Architectures

VHDL-MODELING OF A GAS LASER S GAS DISCHARGE CIRCUIT Nataliya Golian, Vera Golian, Olga Kalynychenko

Beyond the Combinatorial Limit in Depth Minimization for LUT-Based FPGA Designs

What is Xilinx Design Language?

Mapping-aware Logic Synthesis with Parallelized Stochastic Optimization

Evolution of Implementation Technologies. ECE 4211/5211 Rapid Prototyping with FPGAs. Gate Array Technology (IBM s) Programmable Logic

A COMPETENT ALGORITHM TO FIND THE INITIAL BASIC FEASIBLE SOLUTION OF COST MINIMIZATION TRANSPORTATION PROBLEM

HAI ZHOU. Evanston, IL Glenview, IL (847) (o) (847) (h)

FPGA for Complex System Implementation. National Chiao Tung University Chun-Jen Tsai 04/14/2011

FBDD: A Folded Logic Synthesis System

EITF35: Introduction to Structured VLSI Design

BOOSTER: Speeding Up RTL Property Checking of Digital Designs by Word-Level Abstraction

THE field-programmable gate array (FPGA) has become

FPGA architecture and design technology

Topics. Midterm Finish Chapter 7

APPLICATIONS OF MICROSOFT EXCEL - SOLVER FOR HORIZONTAL AND LEVELLING NETWORKS ADJUSTMENT

Prog. Logic Devices Schematic-Based Design Flows CMPE 415. Designer could access symbols for logic gates and functions from a library.

Implementation and Analysis of an Error Detection and Correction System on FPGA

Scalable and Dynamically Updatable Lookup Engine for Decision-trees on FPGA

Synthesizable FPGA Fabrics Targetable by the VTR CAD Tool

FPGA. Logic Block. Plessey FPGA: basic building block here is 2-input NAND gate which is connected to each other to implement desired function.

On the Decreasing Significance of Large Standard Cells in Technology Mapping

Saving Power by Mapping Finite-State Machines into Embedded Memory Blocks in FPGAs

ANALYSIS OF DATA TRANSMITTED BETWEEN THE SERVER AND THE CLIENT THROUGH DIFFERENT TYPES OF COMMUNICATION

Figure 1. PLA-Style Logic Block. P Product terms. I Inputs

ECE 545 Lecture 12. FPGA Resources. George Mason University

PROGRAMMABLE MODULES SPECIFICATION OF PROGRAMMABLE COMBINATIONAL AND SEQUENTIAL MODULES

Testability Optimizations for A Time Multiplexed CPLD Implemented on Structured ASIC Technology

DISTRIBUTED ARITHMETIC (DA) provides multiplierless

A STUDY ON CLASSIFIERS ACCURACY FOR HAND POSE RECOGNITION

ReNoC: A Network-on-Chip Architecture with Reconfigurable Topology

Functionally Linear Decomposition and Synthesis of Logic Circuits for FPGAs

Keywords: Soft Core Processor, Arithmetic and Logical Unit, Back End Implementation and Front End Implementation.

Very Large Scale Integration (VLSI)

Digital Integrated Circuits

Simulation & Synthesis of FPGA Based & Resource Efficient Matrix Coprocessor Architecture

Evolution of CAD Tools & Verilog HDL Definition

5. ReAl Systems on Silicon

FPGAs: FAST TRACK TO DSP

Programmable Logic Devices (PLDs)

Advanced FPGA Design Methodologies with Xilinx Vivado

An Intelligent Multi-Port Memory

Spiral 3-1. Hardware/Software Interfacing

A FAULT PRIMITIVE BASED MODEL OF ALL STATIC FOUR- CELL COUPLING FAULTS IN RANDOM-ACCESS MEMORIES

1/28/2013. Synthesis. The Y-diagram Revisited. Structural Behavioral. More abstract designs Physical. CAD for VLSI 2

Stacked Silicon Interconnect Technology (SSIT)

Fig. 6-1 Conventional and Array Logic Symbols for OR Gate

Stratix vs. Virtex-II Pro FPGA Performance Analysis

BARCODE READER MANAGEMENT WITH THE ATMEL MICROCONTROLLER (I)

FPGA Clock Network Architecture: Flexibility vs. Area and Power

Investigating the Effect of Different Kernel Functions on the Performance of SVM for Recognizing Arabic Characters

Introduction to Field Programmable Gate Arrays

DISTRIBUTED DIFFERENTIAL CRIPTANALYSIS OF FEAL - 8

Challenges of FPGA Physical Design

IMPLEMENTATION DESIGN FLOW

Power Solutions for Leading-Edge FPGAs. Vaughn Betz & Paul Ekas

Designing Heterogeneous FPGAs with Multiple SBs *

Vdd Programmable and Variation Tolerant FPGA Circuits and Architectures

Unit 4: Formal Verification

PS2 VGA Peripheral Based Arithmetic Application Using Micro Blaze Processor

Hardware Design Environments. Dr. Mahdi Abbasi Computer Engineering Department Bu-Ali Sina University

Christophe HURIAUX. Embedded Reconfigurable Hardware Accelerators with Efficient Dynamic Reconfiguration

Representations of Terms Representations of Boolean Networks

Copyright 2007 Society of Photo-Optical Instrumentation Engineers. This paper was published in Proceedings of SPIE (Proc. SPIE Vol.

Implementation of Low Power High Speed 32 bit ALU using FPGA

A Boolean Paradigm in Multi-Valued Logic Synthesis

A SIMULINK-TO-FPGA MULTI-RATE HIERARCHICAL FIR FILTER DESIGN

1 Introduction Data format converters (DFCs) are used to permute the data from one format to another in signal processing and image processing applica

Placement Algorithm for FPGA Circuits

Low area implementation of AES ECB on FPGA

COE 561 Digital System Design & Synthesis Introduction

Transcription:

BULETINUL INSTITUTULUI POLITEHNIC DIN IAŞI Publicat de Universitatea Tehnică Gheorghe Asachi din Iaşi Tomul LXI (LXV), Fasc. 1, 2015 SecŃia AUTOMATICĂ şi CALCULATOARE BOOLEAN FUNCTION DECOMPOSITION BASED ON FPGA BASIC CELL STRUCTURE BY CĂLIN MIRCEA MONOR * and ALEXANDRU VALACHI Gheorghe Asachi Technical University of Iaşi, România, Faculty of Automatic Control and Computer Engineering Received: January 8, 2015 Accepted for publication: February 25, 2015 Abstract. The authors present a method for the decomposition of Boolean functions starting from the structure of the basic cell of the FPGA technologies. Starting from a general method of implementing Boolean functions, the authors develop a new method of decomposition using sub-functions that can be synthesized using one single FPGA basic cell. The general method proves that there is a solution for implementing a Boolean function with a given number of variables. The method presented in the current paper provides, if it exists, an optimization of the general result. If the optimized solution exists, it will be working at higher frequency and, eventually, it will require a smaller number of basic cells for implementation. Key words: Boolean function; decomposition; sub-function; basic cell; FPGA; LUT; frequency optimization; area optimization. 2010 Mathematics Subject Classification: 06E30, 49M27, 94C05. * Corresponding author e-mail: cmonor@tuiasi.ro

62 Călin Mircea Monor and Alexandru Valachi 1. Introduction During the last decade the success of the research and development of the deep sub-micron technologies - 90 nm, 65 nm, 45 nm, 32 nm and 22 nm - solved the requirements for higher frequency and smaller area while implementing a digital design. For this reason, the research on new methods and algorithms of optimizing the implementation was left aside. In the same decade the trend of the electronic industry was to create devices with very large number of features. As long as the users will ask for devices more and more complicated and faster, the development of the deep sub-micron technologies will be pushed to the limit. Already, there are fewer silicon vendors able to provide chips with smaller size of the transistors with a reasonable yield. The reasons mentioned before, the effort of optimizing the performance of digital circuits will be focused in the future in two directions. One direction is to develop new ideas and technologies which will change radically the approach of the infrastructure to be used. Another direction, easier to develop and that provided good results in the past, is to develop new methods for implementing a design, optimizing the critical aspects by using features of the technology that were not used until now. The authors present a method of decomposition for Boolean functions while taking into consideration the particularities of the FPGA technologies. The existing methods and algorithms are based on classical decomposition using a set of simple sub-functions, with small number of variables or on various representation and manipulation of the Boolean functions (Scholl, 2001; Nowicka et al., 1999; Muthukumar et al., 2007; Yang, 1991; Bertacco & Damiani, 1997; Brayton & McMullen, 1982). Another research direction for optimizing the logic synthesis of Boolean functions is to represent the function as a BDD and to apply the specific operation (Vemuri et al., 2002; Pan et al., 1996; Yang et al., 2000). 2. FPGA Basic Cell Structure A FPGA circuit (Field Programmable Gate Array) consists of a matrix of cells with identical structure, several groups of input-output cells, called banks, clocking resources, digital clock managers, embedded blocks of RAM, embedded arithmetical blocks and programmable interconnect resources (Xilinx, 2013). Most parts of the design will be implemented using cells of the array and programmable interconnect resources. Most of the FPGA technologies developed a structure of the basic cell using the same few components: look-up tables (LUT), registers (DFF), multiplexers and buffers. A typical structure of a basic cell of a FPGA technology is shown in Fig. 1.

Bul. Inst. Polit. Iaşi, t. LXI (LXV), f. 1, 2015 63 The basic cells of the various FPGA technologies include 3 or 4 input LUTs, which are RAM-based function generator. The LUTs can be configured to work as distributed RAM, 8 or 16 bit shift registers or to implement logic functions. During power-on sequence the LUTs can be initialized and the content written can be the truth table of a 3 or 4 input logic function. The authors are using the special feature of a LUT, the possibility to implement a complex function with the number of variables equal to the number of LUT s inputs. The existing design flows for FPGAs include, after the logic synthesis which has as target a virtual library including simple logic gates that does not exist in silicon, a stage called mapping. During this stage, using dedicated algorithms, a CAD software tries to map as many gates included into the output netlist as possible into the physical LUTs, (Farrahi & Sarrafzadeh, 2004; Wilton, 1998; Chen & Cong, 2004). Fig. 1 Typical structure of a basic cell of a FPGA technology. In the following sections it will be used the structure of a slice, the basic cell in several families of one of the most important FPGA vendor Xilinx. The slice includes 2 LUTs with 4 inputs and a 1:2 MUX. The LUTs can implement 2 functions of 4 variables: fx ( x3, x2, x1, x0 ) and f y ( x3, x2, x1, x 0 ). Using this feature and connecting the selection of the MUX to another variable, x 4, the slice can implement a 5 variable function: f ( x, x, x, x, x ) = x f ( x, x, x, x ) + x f ( x, x, x, x ) (1) 4 3 2 1 0 4 x 3 2 1 0 4 y 3 2 1 0

64 Călin Mircea Monor and Alexandru Valachi f1, f 2 : 3. Representation of Boolean Functions Using Sub-Functions Let be a function depending on 2 variables, x4, x 3, and 2 sub-functions, (,,, ) G x x f f = f x x + f x x + f f x (2) 4 3 1 0 0 3 4 1 3 4 0 1 4 where f = f ( x, x, x ) and f f ( x, x, x ) 1 1 2 1 0 It can be written: Let be: =. 0 0 2 1 0 G= 0000 0101 1100 0100 (3) f 1 = 0111 0100and f0 = 0101 0011 (4) It can be written: f1= x1 x0 + x2x1 and f0 = x2x0 + x2x1 (5) Now, the 5 variables function can be written: (,,,, ) ( ) F x x x x x = x x x + x + x x x x + x x x x + x x x x (6) 4 3 2 1 0 2 1 4 3 4 3 2 0 4 3 2 0 4 3 1 0 and F = 0000 0000 01010011 100010110000 0011 (7) The function F can be represented using the matrix: 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 Ε { x4x3} :{ x2x1 x0} = 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 (8) and the function G can be represented using the following matrix:

Bul. Inst. Polit. Iaşi, t. LXI (LXV), f. 1, 2015 65 0 0 0 0 0 1 0 1 Ε { x4x3} :{ f1 f0} = 1 1 0 0 0 1 0 0 (9) After observing that the columns of E are also columns of Ε, the following matrix can be built: R JI 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 = 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 (10) using the following rules: each column of R has at most one value of logic 1; JI if a column of RJI has a value of logic 1, this will be located in the line with the index equal to the rank of the corresponding column in the matrix Ε identical to the column in the matrix E. 4. Decomposition of Boolean Functions Using Complex Sub-Functions Let be F, a Boolean function of n variables: F = F( x, x,..., x, x,..., x, x ) n 1 n 2 n/2 n/2 1 1 0 When applying the Veitch-Karnaugh minimization method, the input variables are split into two partitions: { xn 1, xn 2,..., xn/2} and { xn/2 1,..., x1, x0}, if the number of variables is even. If the number of the variables is odd, one partition will have one more variable than the other. As shown previously, a FPGA basic cell can implement any 5 variable Boolean function. For this reason, we are trying to find a set of partitions from which one has 5 variables. After building the E matrix for that partition, the number of different columns will give the number of 5 variable sub-functions needed to decompose the function F. To prove the method, let s make a case study on a 9 variable Boolean function that we know that can be decomposed using a 5 variable function. First, let s consider a random 5 variable Boolean function described by: ( ) f 1 = R 1 0,3,5,10,12,16,23,25,28 (11)

66 Călin Mircea Monor and Alexandru Valachi The Karnaugh map associated is: x1x 0 x x x 4 3 2 00 01 11 10 000 1 1 001 1 011 1 010 1 110 1 111 1 101 1 100 1 The function is described by the expression: f = x x x x x + x x x x x + x x x x x + x x x x x + x x x x x + 1 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 + x x x x x + x x x x x + x x x x x 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 (12) The general implementation method requires a single basic cell for implementation, as shown in the Fig. 2. x 0 x 1 x 2 L U T x 3 out L U T x 4 Fig. 2 Implementation of a 5 variabble Boolean function. The area utilized is 1 basic cell, the longest path from any input to the output is, obviously, one basic cell long. The results of the synthesis of the same Boolean function using Precision Synthesis RTL Plus 2014, from Mentor Graphics, with the library of Spartan 3E family from Xilinx:

Bul. Inst. Polit. Iaşi, t. LXI (LXV), f. 1, 2015 67 area: 3 slices/5 LUTs; longest path from any input to the output: 2 slices. Let s consider now a Boolean function depending on 4 variables and a f = f x, x, x, x, f described by the following Karnaugh map: sub-function ( ) x8 x 7 x6x5 f 1 2 2 8 7 6 5 1 000 001 011 010 110 111 101 100 00 1 1 1 01 1 1 11 1 1 10 1 The function is described by the expression: f = x x x x f + x x x x f + x x x x f + x x x x f + x x x x f + 2 8 7 6 5 1 8 7 6 5 1 8 7 0 5 1 8 7 6 5 1 8 7 5 8 1 + x x x x f + x x x x f + x x x x f 8 7 6 5 1 8 7 6 5 1 8 7 6 5 1 (13) Using the decomposition of the Boolean functions using 5 variable subfunctions, a possible implementation for f2 is shown in Fig. 3. x 0 x 1 x 2 x 3 f 1 x 4 x 5 x 6 x 7 x 8 Fig. 3 Implementation of a function that can be decomposed. The results of the decomposition method are: area: 2 basic cells; longest path from any input to the output: 2 basic cells.

68 Călin Mircea Monor and Alexandru Valachi The results of the general implementation method using FPGA basic cell structure: area: 21 basic cells; longest path from any input to the output: 3 basic cells. The results of Precision Synthesis RTL Plus: area: 6 slices/11 LUTs; longest path from any input to the output: 3 slices. These statistics show the good results generated by the method presented here and the need of applying it, if possible to the general implementation method using FPGA basic cell structure. f = f x, x, x, x, x, x, x, x, x can be The Karnaugh map for ( ) 2 2 8 7 6 5 4 3 2 1 0 deducted (Table 1). As stated before, the number of different columns in the E matrix will give the number of 5 variable sub-functions needed to decompose the function. Table 1 Karnaugh Map for f 2 00000 00001 00011 00010 00110 00111 00101 00100 01100 01101 01111 01110 01010 01011 01001 01000 0000 1 1 1 1 1 0001 1 1 1 1 1 1 1 1 1 1 1 0011 0010 1 1 1 1 1 1 1 1 1 1 1 0110 0111 1 1 1 1 1 0101 0100 1 1 1 1 1 1 1 1 1 1 1 1100 1101 1 1 1 1 1 1111 1 1 1 1 1 1 1 1 1 1 1 1110 1010 1 1 1 1 1 1011 1001 1000

Bul. Inst. Polit. Iaşi, t. LXI (LXV), f. 1, 2015 69 Table 1 Continuation 11000 11001 11011 11010 11110 11111 11101 11100 10100 10101 10111 10110 10010 10011 10001 10000 0000 1 1 1 1 0001 1 1 1 1 1 1 1 1 1 1 1 1 0011 0010 1 1 1 1 1 1 1 1 1 1 1 1 0110 0111 1 1 1 1 0101 0100 1 1 1 1 1 1 1 1 1 1 1 1 1100 1101 1 1 1 1 1111 1 1 1 1 1 1 1 1 1 1 1 1 1110 1010 1 1 1 1 1011 1001 1000 Inspecting the Karnaugh map, we can see that for the partitions { x8, x7, x6, x5} and { x4, x3, x2, x1, x0} the columns have just 2 values: 0 = [ ] T and C [ 0101000100100000] T C 1000010001001000 1 = (14) and this shows that there is enough one sub-function for the variables x4, x3, x2, x1, x0 to decompose f 2. 5. Conclusions The authors present a method dedicated to logic synthesis of Boolean functions while the target is a FPGA technology. The method combines a general implementation method using FPGA basic cell structure with a

70 Călin Mircea Monor and Alexandru Valachi mathematical method of decomposing, where possible, of the Boolean functions using sub-functions. The result of the method presented here by the authors has as outputs an implementation with two advantages: smaller number of basic cells to be used; shorter critical path between the inputs and the output. The research will be completed with the analysis of the cases when choosing various partitions of input variables and with sub-functions depending on disjunctive variable partitions. REFERENCES Bertacco V., Damiani M., The Disjunctive Decomposition of Logic Functions. Proceedings ICCAD '97, 78 82, 1997. Brayton R., McMullen C., The Decomposition and Factorization of Boolean Expressions. Proceedings ISCAS 82, 29 54, 1982. Chen D., Cong J., DAO Map: A Depth-Optimal Area Optimization Mapping Algorithm for FPGA Designs. Proceedings ICCAD 04, 752 757, 2004. Farrahi A., Sarrafzadeh M., Complexity of Look-Up Table Minimization Problem for FPGA Technology Mapping. IEEE TCAD, 13, 11, 1319 1332, 2004. Muthukumar V., Bignall R.J., Selvaraj H., An Efficient Variable Partitioning Approach for Functional Decomposition of Circuits. Journal of Systems Architecture, 53, 53 67, 2007. Nowicka M., Luba T., Rawski M., FPGA-Based Decomposition of Boolean Functions. Algorithms and Implementation. Proceedings of the 6th International Conference on Advanced Computer Systems, Szczecin, 1999. Pan K.-R., Lai Y.-T., Pedram M., OBDD-Based Functional Decomposition: Algorithms and Implementation. IEEE Transactions on CAD/ICAS, 15, 8, 977 990, 1996. Scholl C., Functional Decomposition with Application to FPGA Synthesis. Kluwer Academic Publishers, 2001. Vemuri N., Kalla P., Tessier R., BDD-Based Logic Synthesis for LUT-Based FPGAs. ACM TODAES, 7, 501 525, 2002. Wilton S.J.E, SMAP: Heterogeneous Technology Mapping for Area Reduction in FPGAs with Embedded Memory Arrays. FPGA, 171 178, 1998. Xilinx Corp., Spartan-3E FPGA Family Data Sheet, 2013, http://www.xilinx.com/support/documentation/data_sheets/ds312.pdf. Yang C., Ciesielski M., Singhal V., BDS: A BDD-based Logic Optimization System. Proceedings DAC, 92 97, 2000. Yang S., Logic Synthesis and Optimization Benchmarks. version 3.0. Microelectronics Center of North Carolina, Tech. Rep., 1991.

Bul. Inst. Polit. Iaşi, t. LXI (LXV), f. 1, 2015 71 DESCOMPUNEREA FUNCłIILOR LOGICE UTILIZÂND STRUCTURA CELULEI DE BAZĂ A TEHNOLOGIILOR FPGA (Rezumat) Autorii prezintă o metodă de descompunere a funcńiilor logice complexe, cu număr mare de variabile. Se foloseşte structura generală a celulei de bază întâlnită la majoritatea tehnologiilor FPGA şi caracteristicile Look-Up Table-urilor. Se caută partińii ale variabilelor în aşa fel încât să se determine un număr de subfuncńii care să aibă una din partińiile de variabile ca parametru şi să poată fi folosite la descompunerea funcńiei originale. Se va continua cercetarea şi către dezvoltarea unei metode de determinare a unor seturi de subfuncńii care să fie dependente de partińii disjuncte de variabile de intrare şi care să poată fi folosite la descompunerea funcńiei inińiale.