<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Physical synthesis for CPLD architectures</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Sid-Ahmed</forename><surname>Senouci</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Mentor Graphics</orgName>
								<address>
									<settlement>Grenoble</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Physical synthesis for CPLD architectures</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">108ADB903499BC1345DCA90C216E82AA</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T00:19+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>In this paper, we present a new synthesis feature namely, "Xor matching", and the foldback product term synthesis for Complex Programmable Logic Devices (CPLD) architecture that is based on PAL-like macrocells. Our goal is to use the Xor gate and the foldback terms, (or shareable expander − Altera equivalent terminology [17]), available in each macrocell for minimizing the number of macrocells required to implement a circuit. We propose two innovative approaches: the first, is a very fast algorithm which always gives a match for a function onto the Xor gate of the CPLD device, when one exists; the second approach, is based on answering a fundamental problem: determine if a given foldback cluster can be assigned to a PAL block. A foldback cluster is defined as a set of functions and sub-functions that result in the same foldback which is created by the foldback decomposition algorithm. A suite of test cases (MCNC) were tested with device-fitting algorithms targeting the Atmel CPLD device (ATF15xx series) which implemented the corresponding hardware resources.</p><p>the Xor detection. Definitions, foldback decompostion algorithm and assignment problem are presented in section 4. Experimental results and conclusions are presented in sections 5 and 6.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I. Introduction</head><p>The growth of the programmable logic market is a non-debatable success in the IC world over the last decade. CPLDs and FPGAs share this success in a balanced way and seem to be perfectly adapted to complementary needs. Most FPGAs have logic blocks based on look-up-tables (LUTs) , and some have multiplexer-based logic blocks. CPLDs are based on Programmable Array Logic style macrocells. Each macrocell can implement any Boolean function of up to k inputs and with no more than m product terms. Figure <ref type="figure">2</ref> shows the structure of an Atmel's CPLD macrocell. It consists of Xor gate, foldback (or shareable expander − Altera equivalent terminology <ref type="bibr" target="#b16">[17]</ref>), cascade (or parallel expander − Altera equivalent terminology <ref type="bibr" target="#b16">[17]</ref>) and a flip-flop (Architecture of the macrocell is detailed in section II. <ref type="bibr" target="#b0">1</ref>). An FPGA offers high logic density, high capacity and somewhat unpredictable delays, as a critical path may need to go through multiple levels of logic cells connected by programmable interconnections. On the other hand, CPLD offers lower logic density and predictable delays, as a critical path may need to go through fewer levels of macrocells. It is well known that fast decoders, finite state machines are the favorite application field of CPLD whilst FPGA products have become aggressive in offering efficient high complexity logic and in embedding RAM or hard blocks in their architectures. In the last decade, the synthesis problem for FPGAs has been widely addressed. Many LUT-based technology mapping, placement and floor-planning algorithms have been presented <ref type="bibr" target="#b4">[5,</ref><ref type="bibr" target="#b5">6,</ref><ref type="bibr" target="#b6">7]</ref>. However, only some studies have been proposed on the synthesis problem for CPLDs, and consequently, very few mapping algorithms have been published <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b1">2,</ref><ref type="bibr" target="#b2">3,</ref><ref type="bibr" target="#b3">4]</ref>. <ref type="bibr" target="#b0">[1]</ref> presented an approach that allows existing multi-level synthesis techniques to be adapted to implement circuits that are well-suited for CPLD architectures. The TEMPLA flow includes three phases: optimal tree mapping, heuristic partial collapsing−, and bin packing. The objective of this algorithm is to minimize the number of PLAs. In <ref type="bibr" target="#b1">[2]</ref> PLAmap was developed to minimize the delay of mapped circuits. The PLAmap algorithm breaks the technology mapping problem into three phases: labeling, mapping and packing. <ref type="bibr" target="#b2">[3]</ref> proposed k_m_flow as a technology mapper for single-output PLA-like macrocells, with both inputs and product term. The k_m_flow algorithm consists of two phases: labeling the network and mapping the network into k/m-macrocells. In <ref type="bibr" target="#b3">[4]</ref> area/depth is the primary goal where the algorithm takes advantange of existing LUT mapper for single-output PLAs and packing for multiple-output PLAs. Most these algorithms are based on PLA architecture, without taking into account the macrocell architecture. This paper focuses on innovative techniques in the synthesis flow for complex programmable logic devices (CPLDs) especially for those containing foldbacks, which are like an inverted product term, and an Xor block such as (Pterm ⊕ Sum of Pterms). For Xor synthesis, the detected Xor templates become "don't touch" subfunctions similar to other macros such as arithmetic blocks generated by parameterized macrogenerators. Furthermore the foldback decomposition, which is a pseudo factorization, is performed if and only if a global cost evaluation in terms of the potential number of macrocells shows a gain. As foldback product terms can only be used within a Programmable Array Logic (PAL), the combinational logic using a foldback product term has to be put in the same PAL (Fig <ref type="figure">2</ref>). Thus the foldback cluster is created. This cluster assignment is somwhat similar to the cone-based approach used for timing-driven floorplan <ref type="bibr" target="#b7">[8]</ref>, but here the clusters give priority to foldback gains. The aim of the Xor and foldback detection procedures is to reduce the number of macrocells required to implement a circuit. We propose a very fast Xor matching algorithm based on algebraic theory <ref type="bibr" target="#b8">[9]</ref>. We have also successfully reduced the number of macrocells by applying the foldback decomposition. Finally, we address the assignment problem on the PAL block. The rest of the paper is organized as follows: after having introduced the CPLD features we are dealing with, the global flow is presented in section 2. In section 3, we give basic definitions, notations and problem formulation of II.1 CPLD features Atmel's ATF15xx family of CPLDs <ref type="bibr" target="#b15">[16]</ref> will be used as an example throughout this paper. The architecture is a classical CPLD structure partitioned into PAL blocks. Each PAL consists of a set of macrocells and a switch matrix block. All PAL blocks are linked together via the global bus (Fig 1 <ref type="figure">)</ref>, which contains all input and I/O pin signals as well as the buried feedback signals from all macrocells. The switch matrix in each PAL block receives as its inputs all signals from the global bus in their true and inverted form. These signals can be selected as inputs to the individual PAL blocks by the fitter software. Each input signal or feedback signal has access to a few multiplexers from switch matrix block, thus greatly limiting the available opportunities to route a global bus signal. F i g 2 : ATF15xx Macrocell Figure <ref type="figure">2</ref> illustrates the macrocell architecture. Each macrocell consists of product terms, a product term select multiplexer, OR gate, Xor gate, Cascade logic (or parallel expander), foldback bus, a flip-flop/latch and an output buffer. The product term select multiplexer (PTMUX) allocates five product terms as needed to the macrocell. Within a single macrocell, all the product terms can be routed to the OR gate. For the Cascade capability, the number of product terms can be extended from neighboring macrocells, up to 40 as long as space is available in the same PAL. An Xor gate exists at the output of the macrocell for each Boolean function. One input to the Xor gate comes from the OR sum product terms (SOP). The other Xor gate input can be a product term (PT). Thus he the macrocell's Xor gate allows efficient implementation of any Boolean function that can be expressed as ( )</p><formula xml:id="formula_0">SOP PT ⊕</formula><p>. Each macrocell can also generate a foldback product term. This signal goes to the regional bus and is available to all the macrocells in a given PAL block. The foldback is an inverse polarity of one of the macrocell's product terms. Lastly, the flip-flop has very flexible data and control functions and can be configured for D and T operation.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>II.2 The global design flow</head><p>The global design flow takes as input a netlist which is the output of a higher level compiler (VHDL, CUPL, Verilog or ABEL Compiler) as well as user constraints (Fig <ref type="figure" target="#fig_1">3</ref>). )</p><formula xml:id="formula_1">SOP PT ⊕</formula><p>, where PT is a Product Term and SOP a Sum of Product terms Boolean expression. The second step is a Foldback product term detection/selection. It will be decided at this point if the use of a foldback product term appears to be suitable for the initial functions or subfunctions. These approaches will be explained in detail in this paper. The Xor matching and Foldback decomposition are performed if and only if a global cost evaluation in terms of potential number of macrocells shows a gain. After the foldback detection step, foldback clusters are created. As foldback product terms can only be used within a PAL, the logic utilizing a foldback product term has to be put in the same PAL. Unfortunately, the presence of foldback clusters may lead to a difficult fitting process. Nevertheless, it is interesting to use the foldback physical pattern and to perform minimization on logic as required. The assignment of foldback clusters consists of two phases: first, control and size limitation of the foldback clusters are processed. The second phase is to check if each cluster input is affected to one and only one input of the PAL block. This will lead to the final placement/routing that will not be considered at all in this paper.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III. Xor Matching for CPLD architectures</head><p>Xor operators commonly appear in high level descriptions and are preserved through the RTL synthesis path. It may happen, particularly in the CPLD world, that Xor expressions are flattened and one of the tasks of this paper is to reintroduce them in order to take full advantage of the available Xor gates of the CPLD device. This study is therefore completely different from the basic problem of expressing Boolean functions using the Xor operator. It is well known that a large amount of published literature exists on Reed-Muller expressions <ref type="bibr" target="#b14">[15]</ref>. In this section we present a matching algorithm for the Xor gate of the CPLD device based on the necessary </p><formula xml:id="formula_2">+ + + = (ii)</formula><p>The macrocell architecture is based on five product terms. In (i), use 1 macrocell to implement F, but in (ii), use 2 macrocells to implement F.</p><p>After the Xor extraction, we reduce the number of macrocells required to implement F, and the gain is equal to one macrocell. The problem selected here as expressed above is rather a rewriting of the Boolean function equivalent to f PT ⊕ in which such a form has been hidden by a flattening process. Given a Boolean function, F is a sum of product terms expression. We assume that F is expressed in minimum support. In this section we try to use the new approach to detect if F can be implemented by an Xor_CPLD. F can be expressed as follows:</p><formula xml:id="formula_3">g Pt F ⊕ =</formula><p>(1) Where g is a sum of product terms expression.</p><p>The input variable supports of Pt and g are disjoint. This corresponds to the CPLD physical pattern. By applying this restriction, we obtain a much faster algorithm. The aim of the procedure presented in this subsection is to extract a product term Pt having a maximal number of literals called "Xor cofactors" from the Boolean function F.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III.2 Necessary conditions verified by literals of a XOR cofactor</head><p>Let F be a minimized sum of product terms expression.</p><formula xml:id="formula_4">∑ = = n i i m F 1 where i m is the product term. (<label>2</label></formula><formula xml:id="formula_5">)</formula><p>Let us suppose that F can be implemented by an Xor_CPLD, then F has a decomposition as shown in <ref type="bibr" target="#b0">(1)</ref>.</p><p>Where Pt is Xor cofactor. The problem reduces to finding Pt, which is an Xor cofactor.</p><formula xml:id="formula_6">p x x x Pt ... 2 1 =</formula><p>(3)</p><formula xml:id="formula_7">g p x x x F ⊕ ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ = ... 2 1 (<label>4</label></formula><formula xml:id="formula_8">)</formula><p>Proposition III.2.1: If Pt is an Xor cofactor, then all the inputs of Pt have the same occurrence in a decomposition of F as in <ref type="bibr" target="#b1">(2)</ref>. Let j x i x , be two inputs of Pt and ( )</p><formula xml:id="formula_9">i x Occ i x Occ ),</formula><p>( be respectively the occurrence of the literals</p><formula xml:id="formula_10">i x i x , in<label>(2).</label></formula><p>An input occurrence be expressed as follows:</p><p>( ) ( ) ( )</p><formula xml:id="formula_11">i x Occ i x Occ i x SumOcc + =</formula><p>From (4) we have:</p><formula xml:id="formula_12">g p x j x i x g p x j x i x F ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ = ... ...<label>(5)</label></formula><p>With g being independent of all inputs of Pt :</p><formula xml:id="formula_13">∑ = = k i i p g 1 and ∑ = = h i l i g 1 where i</formula><p>p and i l are product terms then :</p><formula xml:id="formula_14">= ) ( i x SumOcc h k j x SumOcc + = ) ( Proposition III.2.2: Xor cofactor Pt exists if, ⎭ ⎬ ⎫ ⎩ ⎨ ⎧ = ∈ ∀ g i x F Pt Lt i x i x ), ( ,<label>.</label></formula><p>Where ) (Pt Lt is a set of literals of Pt . We compute i x F or i x F according to this literal i</p><p>x appears under a direct or complemented form in Pt .</p><p>We know g is independent of all inputs of Pt and using (4) we then have:</p><formula xml:id="formula_15">g F F F p j i x x x = = = =</formula><p>...</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III.3 Xor_CPLD matching algorithm</head><p>The approach used here consists of two phases. If</p><formula xml:id="formula_16">g Pt F ⊕ =</formula><p>, then obvious necessary conditions exist dealing with the occurrence of the literals of Pt. A first phase aims at detecting these necessary conditions of identifying the Pt literals. Having identified the variable candidates, a second phase based on ROBDDs (Reduced Ordered Binary Decision Diagram) verifies if F is equivalent to a g Pt ⊕ expression.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III.3.1 Binary decision diagram</head><p>We assume here that the reader is familiar with binary decision diagrams and all related numerous BDD packages <ref type="bibr" target="#b8">[9]</ref> </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III.3.2 Algorithm</head><p>Based on this theory, we describe the algorithm that checks whether F can be implemented by an Xor_CPLD gate. The Boolean function F is minimized once. Let S(F) be the set of inputs of F. We perform this check only if we need more than one macrocell to implement F. The matching steps are done as follows: </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV. Foldback synthesis</head><p>A foldback is a product term PT of a macrocell which is inverted and fed back into the PAL logic array for use by any or all of the macrocells in the same PAL block (Fig <ref type="figure">2</ref>) (i.e this signal is available to all macrocells within the same PAL block). The foldback terms in each PAL can also generate additional fan-in sum terms with small additional delays.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV.1 Basic definitions: Definition 1: Cost of a Boolean expression</head><p>Consider a Boolean function F expressed as a sum of product terms. The cost of the function F, denoted as Cost (F), is the number of product terms.  In this case we do not have the foldback form since, the expression ) ( cd e + is not a foldback factor.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV.2 Foldback detection algorithm</head><p>The algorithm proceeds like a "pseudo" factorization with a filtering of all the factors which are not the foldback form ) ... (</p><formula xml:id="formula_17">x x x x + + + +</formula><p>, where i x is an input variable or a subfunction (shared or not) under a direct or inverted form. We describe the foldback detection algorithm as follows:</p><p>1. Form cliques of functions by specifying number of literals in common.</p><p>For each clique of functions.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">For each function in clique,</head><p>Create all foldback product terms for both onset and offset expressions and for each such foldback product term a. Determine if the identical foldback product term is derived from other product terms of this function or from product terms of other functions of the clique. b. Form an association with this foldback of each function of the clique which will factor into this foldback. When all foldback product terms of the clique are determined, 3. For each foldback in the clique, For each function in the clique, a. Determine if the function factors into that foldback, onset, offset, or both onset and offset. b. If the use of the foldback is indicated, determine whether or not a reduction in the number of product terms occurs by the use of the foldback for instance, if foldback factoring is designated for the onset specification, compare the onset implementation with the expander against the offset implementation without foldback to determine if use of the foldback results in a reduction in the number of product terms. c. If there is a reduction in the number of product terms through use of the foldback, accumulate the number of saved product terms for all functions of the clique.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>4.</head><p>Select that expander which yields the optimal savings in number of product terms in the clique a. Create a foldback node for that foldback. b. For each function in the clique which yields a product term reduction by use of that foldback, form the appropriate function implementation having that foldback node as a literal, both onset, offset when appropriate. c. Remove the designated expander from the list of clique foldbacks. d. Perform step 2 on newly created function implementations, that is, determine if the newly factored function, with foldback implementation, can be factored again into foldbacks which may have a common use in the clique, allowing factoring into multiple foldbacks.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>5.</head><p>Return to step 4.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV.3 Foldback cluster assignment</head><p>The preparation of the fitting process needs to answer a basic question whether a given foldback cluster candidate can be assigned to the PAL block.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV.3.1 Definitions Definition 1:</head><p>The PAL block architecture is defined as the number of inputs, denoted as I, the number of macrocells, denoted as M and the number of outputs, denoted as O. Definition 2: In a PAL block, each pin signal is routed to X Muxs. This means that there are X possibilities for routing each pin signal into a PAL block. as the number of outputs.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV.3.2 Problem formulation</head><p>The assignment problem for the foldback cluster can be formally stated as follows: given a cluster of the functions and the basic PAL block , the cluster is assigned to a PAL block. This problem is solved by checking two conditions: first that the PAL block capacity is respected. Secondly, that if each input (or output, or feedback) of cluster is affected by one and only one input (or output, or feedback) of the PAL block. Is means finding a free Mux of the switch matrix in the PAL block to route the input (or output, or feedback). We denote an input (or output, or feedback) of the foldback cluster as an element. Definition: Let ) ( FB CL ELT be the set of elements of FB CL . Property: If a cluster of functions has been assigned to a PAL block, then all the functions of this cluster have the same foldback. Proposition: A FB CL is said to be assigned to the PAL block if and only if:</p><formula xml:id="formula_18">(1). M CL MC I CL IN FB FB ≤ ≤ ) ( , ) ( and O CL OUT FB ≤ ) (<label>(2)</label></formula><p>. Each element of FB CL is assigned to one and only one Mux of the switch matrix in a PAL block. Proposition (1) is a quick and easy check. For proposition <ref type="bibr" target="#b1">(2)</ref> we propose the problem formulation. We have a set of elements of FB CL and a set of Muxs of the PAL block. These are the two kinds of nodes in our bipartite graph. We know which Mux can be routed with elements of flodback cluster (Definition 2 and Definition 3). This defines the edges of our bipartite graph. Our aim in the maximum cardinality matching problem is assigning elements to Muxs in such a way that as many Muxs as possible are used by an element that can handle it. One element can be assigned to at most one Mux and we can assign at most one element to one Mux. At this point, the problem can be expressed more naturally in graph theory terms. A bipartite graph G = (U, V, E) with vertex sets U , V and edge set E, where U is a set of inputs of FB CL , V is a set of Mux of switch matrix in PAL block and</p><formula xml:id="formula_19">{ } V v U, u ) , ( ∈ ∈ = v u E</formula><p>. If (u, v) is an edge, i.e, (u,v)∈ E, then there exists a possibility of routing the vertex u by the vertex v (Definition 2 and Definition 3). Obviously, the problem reduces to a classical bipartite matching problem and the solution consists in performing a maximum matching algorithm in a graph G <ref type="bibr" target="#b9">[10,</ref><ref type="bibr" target="#b10">11]</ref>.</p><p>In conclusion, the foldback cluster can be assigned to the PAL block if there exists a maximum cardinality of a matching in a graph G equal to ) ( FB CL ELT .</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>V. Experimental results</head><p>The techniques presented above have been implemented in C language and incorporated in new Atmel EDA tools.</p><p>To assess the results produced by Atmel fitters, these were compared to Altera's MAX+PLUS II tool (version 9.5).</p><p>Table <ref type="table" target="#tab_4">1</ref> shows the analysis of the results for MCNC benchmark circuits. For each benchmark, 2 indications are given. For Atmel, the first one gives the number of macrocells (NberMC) and the second gives the number of foldbacks (NberFB). The results of Altera are obtained by trying two different synthesis options with optimization for area (index 0) : Normal and Fast. NberLC values and NberSE values indicate respectively the number of logic cells and the number of the shareable expanders. For comparison we used the ATF15xx device from Atmel <ref type="bibr" target="#b15">[16]</ref> and the MAX7000 device from Altera <ref type="bibr" target="#b16">[17]</ref>. The two devices have the same logical capacity. Then, a logic cell (LC) in a MAX7000 is basically equivalent to a macrocell (MC) in a ATF15xx (Fig 2 On average, when the circuits in Table1 are fitted using the Altera tool, they require 34% to 39% more logic cells than the Atmel fitters targeted to the ATF15xx.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>VI. Conclusion</head><p>The overall design flow for a CPLD is organized around processing for innovative features. The Xor synthesis based on algebraic matching and foldback processing creates initial foldback clusters. Once the clusters are defined, the clustering step explores a bipartite matching method of cluster assignment to PALs. This flow has been fully implemented and validated on the ATMEL flow. In conclusion, it has been shown during the last two decades that successful topic synthesis is a combination of fundamental successful achievements (ROBDD ...) and device-specific features requiring permanently innovative heuristics.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>F</head><label></label><figDesc>ig 1 : A T F 1 5 x x F am ily o f C P L</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Fig 3 :</head><label>3</label><figDesc>Fig 3: Global design flow After a classic polarity selection phase based on product term number minimization (ESPRESSO), a mapping step is called. Thereafter, the Xor matching and Foldback decomposition stages are considered. The first step detects Xor expressions that are of interest for CPLD synthesis, namely expressions having the following form ( )</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head></head><label></label><figDesc><ref type="bibr" target="#b9">[10]</ref>. Example1: The ROBDD templates of b a ⊕(Fig 4)  Example2: We begin the construction of the ROBDD following an order of variables which starts with the Pt variables. The ROBDD templates of g Pt ⊕ is shown in (Fig5).</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head></head><label></label><figDesc>Fig 5</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>Consider the Xor_CPLD expressed in the following form f PT ⊕ , where PT is a product term of a macrocell and f is a sum of product terms of a macrocell (Fig2).</figDesc><table><row><cell>conditions theory [9].</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>III.1 Problem formulation</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="7">Definition: Example : Let F be an Xor Boolean function : ( cd ab F ⊕ =</cell><cell>+</cell><cell cols="3">gh</cell><cell>)</cell><cell></cell><cell>(i)</cell></row><row><cell cols="14">After flattening and minimization , F can be expressed as :</cell></row><row><cell>F</cell><cell>a</cell><cell>cd</cell><cell></cell><cell></cell><cell>b</cell><cell cols="2">cd</cell><cell></cell><cell></cell><cell cols="2">a</cell><cell>gh</cell><cell>b</cell><cell>gh</cell><cell>+</cell><cell>ab</cell><cell>c</cell><cell>g</cell></row><row><cell>+</cell><cell cols="2">ab</cell><cell>c</cell><cell>h</cell><cell cols="2">+</cell><cell cols="2">ab</cell><cell>d</cell><cell cols="2">g</cell><cell>+</cell><cell>ab</cell><cell>d</cell><cell>h</cell></row><row><cell cols="8">Open Abel Format</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="8">Flip-Flop Processing</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell>User constraints</cell></row><row><cell cols="12">Minimization/Polarity Selection</cell><cell></cell></row><row><cell cols="4">Mapping</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="6">Xor Matching</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="7">Foldback detection</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="8">Cluster assignement</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="7">Final Place/Route</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head></head><label></label><figDesc>subfunction (shared or not) under a direct or complemented form and denoted by the term FB Node which is always inverted.Definition 3: Cost of foldbackThe cost of a foldback subfunction selected as an admissible foldback candidate is 1. This means that it corresponds to the foldback physical pattern.</figDesc><table><row><cell cols="23">Definition 2: foldback candidate</cell></row><row><cell cols="23">A foldback candidate is a Boolean expression having the form</cell><cell>(</cell><cell>1 x</cell><cell>+</cell><cell>x</cell><cell>2</cell><cell>+</cell><cell>x</cell><cell>3</cell><cell>+</cell><cell>...</cell><cell>+</cell><cell>x</cell><cell>k</cell><cell>)</cell><cell>where i x is an input</cell></row><row><cell cols="23">variable or a We detect a foldback factor of two or more product terms of a set of functions.</cell></row><row><cell cols="23">Example1: Let F be a minimized sum of the product terms expression.</cell></row><row><cell>F</cell><cell>=</cell><cell cols="4">abde</cell><cell cols="2">+</cell><cell cols="5">abce</cell><cell cols="2">+</cell><cell cols="4">abe</cell><cell>f</cell><cell cols="2">+</cell><cell>gh</cell><cell>+</cell><cell>lm h</cell><cell>+</cell><cell>np</cell><cell>and Cost (F) = 6</cell></row><row><cell cols="23">yields a foldback factoring as follows:</cell></row><row><cell>F</cell><cell>=</cell><cell cols="2">abe</cell><cell>(</cell><cell cols="2">d</cell><cell cols="2">+</cell><cell>c</cell><cell cols="2">+</cell><cell></cell><cell>f</cell><cell cols="2">)</cell><cell>+</cell><cell></cell><cell cols="2">gh</cell><cell>+</cell><cell></cell><cell>lm h</cell><cell>+</cell><cell>np</cell><cell>,</cell><cell>Node FB =</cell><cell>( f d c</cell><cell>)</cell><cell>and Cost (</cell><cell>FB Node ) = 1</cell></row><row><cell cols="3">then:</cell><cell cols="2">F</cell><cell></cell><cell cols="2">=</cell><cell cols="3">abe</cell><cell cols="6">Node</cell><cell cols="2">FB</cell><cell cols="2">+</cell><cell cols="2">gh</cell><cell>+</cell><cell>lm h</cell><cell>+</cell><cell>np</cell><cell>and Cost (F) = 4</cell></row><row><cell cols="23">After the foldback decomposition the gain is equal to 2 product terms.</cell></row><row><cell cols="9">Example 2:</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="23">The following case does not generate a foldback factor.</cell></row><row><cell>F</cell><cell>=</cell><cell cols="2">abe</cell><cell cols="3">+</cell><cell cols="5">abcd</cell><cell cols="2">=</cell><cell cols="4">ab</cell><cell cols="5">( cd e +</cell><cell>)</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head></head><label></label><figDesc>Definition 3: In a PAL block, each feedback is routed to Y Muxs , providing Y possibilities for routing this signal in to the PAL block. Definition 4: The number of inputs of the PAL block is equal to the number of Muxs of the switch matrix block. Definition 5: The foldback cluster, denoted as</figDesc><table><row><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell cols="4">FB CL , is defined as the set of functions and subfunctions that have</cell></row><row><cell cols="3">the same foldback. Let</cell><cell>IN</cell><cell cols="2">( FB CL</cell><cell>)</cell><cell>be the set of inputs or subfunction of</cell><cell>FB CL ,</cell><cell>MC</cell><cell>( FB CL</cell><cell>)</cell><cell>as the number of</cell></row><row><cell>macrocells and</cell><cell>OUT</cell><cell cols="3">( FB CL</cell><cell>)</cell><cell></cell><cell></cell><cell></cell><cell></cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_4"><head>Table 1 :</head><label>1</label><figDesc>). Comparison with Altera tool</figDesc><table><row><cell></cell><cell>ATMEL</cell><cell></cell><cell></cell><cell></cell><cell>ALTERA</cell><cell></cell><cell></cell><cell></cell></row><row><cell>Bench</cell><cell>synthesis</cell><cell></cell><cell cols="2">Normal synthesis</cell><cell></cell><cell cols="2">Fast synthesis</cell><cell></cell></row><row><cell></cell><cell>NberMC</cell><cell>NberFB</cell><cell>NberLC</cell><cell>NberSE</cell><cell>Gain(%)</cell><cell>NberLC</cell><cell>NberSE</cell><cell>Gain(%)</cell></row><row><cell>5xp1</cell><cell>12</cell><cell>9</cell><cell>16</cell><cell>9</cell><cell>33</cell><cell>15</cell><cell>7</cell><cell>25</cell></row><row><cell>alu4</cell><cell>81</cell><cell>30</cell><cell>141</cell><cell>29</cell><cell>74</cell><cell>149</cell><cell>26</cell><cell>84</cell></row><row><cell>apex3</cell><cell>142</cell><cell>34</cell><cell>154</cell><cell>43</cell><cell>8</cell><cell>168</cell><cell>41</cell><cell>18</cell></row><row><cell>apex4</cell><cell>207</cell><cell>36</cell><cell>248</cell><cell>23</cell><cell>20</cell><cell>250</cell><cell>21</cell><cell>21</cell></row><row><cell>clip</cell><cell>16</cell><cell>26</cell><cell>22</cell><cell>3</cell><cell>37</cell><cell>19</cell><cell>10</cell><cell>19</cell></row><row><cell>cps</cell><cell>163</cell><cell>44</cell><cell>175</cell><cell>88</cell><cell>7</cell><cell>157</cell><cell>62</cell><cell>-3</cell></row><row><cell>duke2</cell><cell>45</cell><cell>25</cell><cell>52</cell><cell>28</cell><cell>16</cell><cell>51</cell><cell>10</cell><cell>13</cell></row><row><cell>ex5</cell><cell>64</cell><cell>18</cell><cell>63</cell><cell>23</cell><cell>-1,5</cell><cell>67</cell><cell>8</cell><cell>4</cell></row><row><cell>misex3</cell><cell>96</cell><cell>30</cell><cell>225</cell><cell>77</cell><cell>134</cell><cell>220</cell><cell>54</cell><cell>129</cell></row><row><cell>rd84</cell><cell>26</cell><cell>17</cell><cell>32</cell><cell>06</cell><cell>23</cell><cell>32</cell><cell>18</cell><cell>23</cell></row><row><cell>seq</cell><cell>173</cell><cell>36</cell><cell>266</cell><cell>122</cell><cell>54</cell><cell>237</cell><cell>67</cell><cell>37</cell></row><row><cell>t481</cell><cell>7</cell><cell>6</cell><cell>6</cell><cell>6</cell><cell>-14</cell><cell>17</cell><cell>5</cell><cell>143</cell></row><row><cell>table3</cell><cell>104</cell><cell>28</cell><cell>139</cell><cell>102</cell><cell>34</cell><cell>127</cell><cell>25</cell><cell>22</cell></row><row><cell>table5</cell><cell>90</cell><cell>23</cell><cell>125</cell><cell>77</cell><cell>39</cell><cell>118</cell><cell>34</cell><cell>31</cell></row><row><cell>vg2</cell><cell>10</cell><cell>13</cell><cell>16</cell><cell>4</cell><cell>60</cell><cell>16</cell><cell>0</cell><cell>60</cell></row><row><cell cols="2">Total avrage Gain</cell><cell></cell><cell></cell><cell></cell><cell>34%</cell><cell></cell><cell></cell><cell>39%</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_0">2 1 k</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Technology Mapping for Large Complex PLDs</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">H</forename><surname>Anderson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">D</forename><surname>Brown</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. 35 th ACM/IEEE Design Automation Conference</title>
				<meeting>35 th ACM/IEEE Design Automation Conference</meeting>
		<imprint>
			<date type="published" when="1998">1998</date>
			<biblScope unit="page" from="698" to="703" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Performance-Driven Mapping for CPLD Architectures</title>
		<author>
			<persName><forename type="first">D</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Cong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Ercegovac</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Huang</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Trans. on Computer-Aided Design</title>
		<imprint>
			<biblScope unit="volume">22</biblScope>
			<biblScope unit="issue">10</biblScope>
			<biblScope unit="page" from="1424" to="1431" />
			<date type="published" when="2003-10">oct. 2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Technology mapping for k/m-macrocell based FPGA&apos;s</title>
		<author>
			<persName><forename type="first">J</forename><surname>Cong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Huang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">X</forename><surname>Yuan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. ACM/SIGDA Int. Symp. Field Programmable Gate Arrays</title>
				<meeting>ACM/SIGDA Int. Symp. Field Programmable Gate Arrays<address><addrLine>San Jose, CA</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2000-02">Feb 2000</date>
			<biblScope unit="page" from="51" to="59" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">A Technology Mapping Algorithm for CPLD Arcitectures</title>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">L</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Hwang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Liu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. IEEE. Int. Conf. on Fiel-Programmable Technology</title>
				<meeting>IEEE. Int. Conf. on Fiel-Programmable Technology<address><addrLine>Hong Kong</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2002-12">Dec. 2002</date>
			<biblScope unit="page" from="204" to="210" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">FlowMap: An Optimal Technology Mapping Algorithm for Delay Optimization in Lookup-Table Based FPGA Designs</title>
		<author>
			<persName><forename type="first">J</forename><surname>Cong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Ding</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Trans. On Computer-Aided Design</title>
		<imprint>
			<biblScope unit="volume">13</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="1" to="12" />
			<date type="published" when="1994-01">Jan. 1994</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">DAG-Map: Graph-based FPGA technology mapping for delay optimization</title>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">C</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Cong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Ding</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Kahng</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Trajmar</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Design Test Comput</title>
		<imprint>
			<biblScope unit="page" from="7" to="20" />
			<date type="published" when="1992-09">Sept.1992</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Generic Global Placement and Floorplanning</title>
		<author>
			<persName><forename type="first">H</forename><surname>Eisenmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Johannes</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc.35 th ACM/IEEE Design Automation Conference</title>
				<meeting>.35 th ACM/IEEE Design Automation Conference</meeting>
		<imprint>
			<date type="published" when="1998">1998</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Timing-Driven Floorplanning on Programmable Hierarchical Targets</title>
		<author>
			<persName><forename type="first">S</forename><surname>Senouci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Amoura</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Krupnova</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Saucier</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. ACM/SIGDA Int. Symp. Field Programmable Gate Arrays</title>
				<meeting>ACM/SIGDA Int. Symp. Field Programmable Gate Arrays<address><addrLine>San Jose, CA</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1998">1998</date>
			<biblScope unit="page" from="85" to="92" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">An improved synthesis algorithm for multiplexor-based PGA&apos;s</title>
		<author>
			<persName><forename type="first">R</forename><surname>Murgai</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">K</forename><surname>Brayton</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Vincentelli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc.29th ACM/IEEE DAC 1992</title>
				<meeting>.29th ACM/IEEE DAC 1992</meeting>
		<imprint>
			<biblScope unit="page" from="380" to="386" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Computing a maximum cardinality matching in a bipartite graph in time O(n 1.5 (m log n) 0.5 )</title>
		<author>
			<persName><forename type="first">H</forename><surname>Alt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Blum</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Mehlhorn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Paul</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Information Processing Letters</title>
		<imprint>
			<biblScope unit="volume">37</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="237" to="240" />
			<date type="published" when="1991">1991</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<title level="m" type="main">Algorithms for VLSI Physical Design Automation</title>
		<author>
			<persName><forename type="first">N</forename><surname>Sherwani</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1999">1999</date>
			<publisher>Kluwer Academic Publishers</publisher>
		</imprint>
	</monogr>
	<note>Third edition</note>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">A technology mapping algorithm for PAL-based devices using multi-output function graphs</title>
		<author>
			<persName><forename type="first">D</forename><surname>Kania</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. 26th Euromicro Conf</title>
				<meeting>26th Euromicro Conf</meeting>
		<imprint>
			<date type="published" when="2000-09">Sept. 2000</date>
			<biblScope unit="page" from="146" to="153" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">The Universal Algorithm for Fitting Targeted to Complex Programmable Logic Devices</title>
		<author>
			<persName><forename type="first">V</forename><surname>Solovjev</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Chyzy</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. 25th Euromicro Conf</title>
				<meeting>25th Euromicro Conf</meeting>
		<imprint>
			<date type="published" when="1999-09">Sept. 1999</date>
			<biblScope unit="page" from="286" to="289" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Technology Mapping Algorithms for Hybrid FPGAS Containing Lookup Tables and PLAs</title>
		<author>
			<persName><forename type="first">S</forename><surname>Krishnamoorthy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Tessier</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Trans. on Computer-Aided Design</title>
		<imprint>
			<biblScope unit="volume">22</biblScope>
			<biblScope unit="issue">5</biblScope>
			<biblScope unit="page" from="545" to="559" />
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Logic Minimization using Exclusive OR Gates</title>
		<author>
			<persName><forename type="first">V</forename><surname>Ciriani</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc 38 st ACM/IEEE Design Automation Conference</title>
				<meeting>38 st ACM/IEEE Design Automation Conference</meeting>
		<imprint>
			<date type="published" when="2001">2001</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<title level="m" type="main">The ATF15xx Family Data Sheet</title>
		<imprint>
			<date type="published" when="2000">2000</date>
			<publisher>Atmel Corporation</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<monogr>
		<title level="m" type="main">MAX 7000B Programmable Logic Device Family, the Altera Data Book</title>
		<imprint>
			<date type="published" when="2000">2000</date>
			<publisher>Altera Corporation</publisher>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
