Zum Hauptinhalt springen

A New Pairwise NPN Boolean Matching Algorithm Based on Structural Difference Signature

Zhang, Juling ; Yang, Guowu ; et al.
In: Symmetry, Jg. 11 (2018-12-01), Heft 1, S. 27-27
Online academicJournal

A New Pairwise NPN Boolean Matching Algorithm Based on Structural Difference Signature 

In this paper, we address an NPN Boolean matching algorithm. The proposed structural difference signature (SDS) of a Boolean function significantly reduces the search space in the Boolean matching process. The paper analyses the size of the search space from three perspectives: the total number of possible transformations, the number of candidate transformations and the number of decompositions. We test the search space and run time on a large number of randomly generated circuits and Microelectronics Center of North Carolina (MCNC) benchmark circuits with 7–22 inputs. The experimental results show that the search space of Boolean matching is greatly reduced and the matching speed is obviously accelerated.

Keywords: NPN Boolean matching; structural difference signature vector; independent variable; variable symmetry

1. Introduction

Boolean equivalence classification and matching constitute a long-standing and open problem. The authors of [[1]] applied a group algebraic approach to NP and NPN Boolean equivalence classification. Reference [[2]] computed the classification results for 10 inputs. Affine equivalence classification is also an important field of study with applications in logic synthesis and cryptography [[3]]. All Boolean functions in an equivalence class are equivalent to each other. NPN Boolean matching determines whether two Boolean functions are equivalent under input negation and/or permutation and/or output negation. This paper studies NPN Boolean matching for single-output completely specified Boolean functions.

NPN Boolean matching is an important research topic that can be applied to a number of applications in integrated circuit design, such as technology mapping, cell library binding and logic verification [[4]]. When a Boolean circuit is functionally NPN-equivalent to another Boolean circuit, one of these circuits can be realized by means of the other. There are n!2n+1 NPN transformations for a n-variable Boolean function. If Boolean function f is NPN-equivalent to Boolean function g, there must be a NPN transformation that can transform f to g. On the contrary, no NPN transformation can transform f to g. The purpose of our proposed algorithm is to find the NPN transformation that can transform Boolean function f to g as early as possible. Based on the structural signature (SS) vector in our previous study [[5]], we proposes a new combined signature vector, i.e., SDS vector. In this paper, Boolean difference sigture is introduced into SS vector to form SDS vector. The new signature vector SDS is better able to distinguish variables and reduce the research space for NPN Boolean matching. Experimental results show that the search space is reduced by more than 48% compared with [[5]] and that the run time of our algorithm is reduced by 42% and 80% compared with [[5]], respectively.

In the following, Section 2 introduces relevant works on NPN-equivalence matching. Section 3 introduces some terminology and notation. Section 4 describes the proposed algorithm in detail. In Section 5, we present experimental results to demonstrate the effectiveness of our algorithm. Section 6 concludes the paper.

2. Related Works

Many methods can be exploited to solve the problem of NPN Boolean matching. The main results of such research are focused on four methods: (1) algorithms on canonical forms; (2) pairwise matching algorithms using signatures; (3) algorithms based on satisfiability (SAT) and (4) algorithms based on spectral analysis.

Each method has its own advantages. In canonical-form-based matching algorithms, the canonical form of each Boolean circuit of cell library is stored in advance. When cell-library binding is implemented, the canonical form of each Boolean circuit to be matched is computed and compared with the canonical forms of each Boolean circuits in the cell library via a hash table. All Boolean functions in an equivalence class have the same canonical form. The canonical form of each equivalence class has a special value. References [[6]] studied Boolean matching based on canonical forms and attained significant achievements.

Reference [[12]] reported P-equivalence matching for 20-input Boolean functions. The canonical forms considered in reference [[12]] was the binary strings with the maximal scores in lexicographic comparison. Reference [[7]] devised a procedure to canonicalize a threshold logic function and judged equivalence of two threshold logic functions by their canonicalized linear inequalities. Based on the canonical form of Boolean function, the reference [[8]] reduced the number of configuration bits in an FPGA architecture. The authors of [[10]] proposed fast Boolean matching based on NPN Boolean classification; their canonical form has the maximal truth table. The authors of [[6]] proposed new canonical forms based on signatures.

A pairwise matching algorithm searches the NPN transformations between two Boolean functions using signatures, which is a semi-exhaustive search algorithm. The merit of this method is that once it finds a transformation that can prove the equivalence of two Boolean functions, other transformations will not be checked. The authors of [[4], [13]] proposed Boolean matching algorithms based on pairwise matching and used binary decision diagrams (BDDs) to represent Boolean functions. The authors of [[5]] proposed a structural signature vector to search the transformations between two Boolean functions and implemented NPN Boolean matching for 22 inputs. In pairwise matching algorithms, signatures are usually used as a necessary condition for judging whether two Boolean functions are equivalent, and variable symmetry is commonly utilized to reduce the search space. Symmetric attributes are used in many fields. Reference [[15]] studied the symmetries of the unitary Lie group. The variable symmetric attributes of Boolean function are widely used in NPN Boolean equivalence matching. In reference [[5]], the search space was reduced and the matching speed was improved by means of structural signatures, variable symmetry, phase collision check and variable grouping.

Since a SAT solver can help solve the problem of NPN Boolean matching and because many quick SAT solvers can be utilized, many Boolean matching algorithms based on SAT have emerged in recent years. The authors of [[16]] studied SAT-based Boolean matching. Based on graphs, simulation and SAT, Matsunaga [[16]] achieved PP-equivalence Boolean matching with larger inputs and outputs. The authors of [[17]] studied Boolean matching for FPGAs utilizing SAT technology. Cong et al. [[19]] used the implicant table to derive the SAT formulation and achieved significant improvements. The authors of [[20]] combined simulation and SAT to perform P-equivalent Boolean matching for large Boolean functions. Compared with studies based on the previous three methods, studies on Boolean matching that use spectral techniques are fewer in number. Moore et al. [[21]] presented an NPN Boolean matching algorithm using Walsh spectra. The authors of [[22]] utilized Haar spectra to check the equivalence of two logic circuits.

Regardless of which method is used, the key to Boolean matching is to reduce the search space. It is universally known that the search space for exhaustive NPN Boolean matching is O(n!2n+1) . In the methods discussed above, many strategies are used to reduce the search space. The authors of [[6]] used general signatures and symmetry to reduce the search space.

Based on our previous study [[5]], we propose a new combined signature, i.e., the structural difference signature. We present a new pairwise algorithm based on the following conditions: (1) two NP-equivalent Boolean functions have the same SDS vectors; (2) two variables of a variable mapping have the same SDS values; and (3) two groups of Boolean functions Shannon decomposed with splitting variables are NP-equivalent.

3. Terminology and Notation

Let f(x0,x1,,xn1) and g(x0,x1,,xn1) be two single-output completely specified Boolean functions. The problem to be solved in this paper is to determine whether f is NPN-equivalent to g. Some related terminology has been introduced in [[5]].

An NP transformation T is composed of input negations and/or permutations. It can also be expressed as a group of variable mappings. In reference [[5]], the mapping from the variable xi of f to the variable xj of g, φi , can be classified into two cases: (1) xi maps to xj with the same phase, in which case the mapping is xixj or x¯ix¯j ; or (2) xi maps to xj with the opposite phase, in which case the mapping is xix¯j or x¯ixj . A same-phase relation indicates no input negation, whereas an opposite-phase relation indicates input negation. A same-phase variable mapping between the variables xi and xj is abbreviated as ij0 , and an opposite-phase variable mapping between the variables xi and xj is abbreviated as ij1 . For two NPN-equivalent Boolean functions f and g, there may be an output negation when f=g¯ .

Definition 1.

(NPN equivalence) Two Boolean functions f and g are NPN equivalent, fg , if and only if there exists an NP transformation T that satisfies f(TX)=g(X) or f(TX)=g(X)¯ .

As a general signature, the cofactor signature is widely applied in NPN Boolean matching. The cofactor signature of f(X) with respect to xi (x¯i) is fxi (fx¯i) [[5]].

Reference [[5]] proposed SS vector. The SS value of f with respect to xi , Vi , is (fxi,fx¯i,Ci,Ci,Gi) . (fxi,fx¯i) is the 1st signature of the variable xi , and Ci and |Ci| are the symmetry mark, and Gi is group mark. According to their symmetry properties, the variables of a Boolean function are classified as either asymmetric and symmetric. An asymmetric variable may have a single-mapping set or a multiple-mapping set. The variable mapping set of the asymmetric variable xi is denoted by χi . Similarly, a symmetric variable may have a single symmetry-mapping set or a multiple symmetry-mapping set. The symmetry-mapping set of the symmetry class Ci is denoted by Si , and the symmetry mapping between Ci and Cj is denoted by CiCj . The literal ψi represents a group of two or more variable mappings generated by CiCj .

A P transformation does not change the cofactor signature of a variable. However, an N transformation changes the order of the positive and negative cofactor signatures without changing their numerical values. Therefore, we do not consider the order of the positive and negative cofactor signatures when comparing the 1st signature values of two variables. A variable xi may be transformed into an arbitrary variable xj , 0jn1 ; therefore, we also do not consider the order of the variables when we compare two SS vectors.

Given two NP-equivalent Boolean functions f and g with a variable mapping xixj between them, we have the following four facts: (1) Vf=Vg and Vi=Vj ; (2) The Boolean functions decomposed with xi and xj using the Shannon expansion must be NP equivalent. Specifically, xifxi is NP equivalent to xjgxj , and x¯ifx¯i is NP equivalent to x¯jgx¯j ; (3) xi and xj are either both asymmetric variables or both symmetric variables; (4) If there is a variable mapping between xl of f and xh of g, then the SS values of xl must be the same as those of xh no matter how many times the Boolean functions f and g are decomposed [[5]].

Two Boolean functions f and g may undergo one or more transformations in the process of matching. A transformation consists of n variable mappings. The algorithm of [[5]] and the algorithm presented in this paper detect all possible transformations between f and g according to their SS and SDS vectors, respectively.

4. The Proposed Algorithm

The goal of the proposed algorithm is to reduce the size of the search space as much as possible, thereby improving the speed of NPN Boolean matching.

4.1. Boolean Difference

For n inputs, there are 22n different Boolean functions. Many Boolean functions have one or more independent variables. Whether a variable xi of f is independent can be determined using cofactors.

The Boolean difference of a Boolean function f with respect to xi , fxi , is the Boolean function fxifx¯i , where fxi=f[xi1] and fx¯i=f[xi0] [[23]].

Definition 2.

(Boolean difference signature) The Boolean difference signature of a Boolean function f with respect to xi , |fxi| , is the number of minterms of fxi .

When a variable xi of f is NP transformed into xj (x¯j) , its Boolean difference signature does not change. Thus, Boolean difference signature, like cofactor signature, can be used to distinguish variables.

Example 1.

Consider an 5-input Boolean function f(X)=x0x¯2x¯3+x¯0x1x2x¯3+x0x1x3x4+x¯0x¯1x3x¯4+x0x¯1x¯3x¯4+x0x2x3x4+x¯0x¯1x¯2x3+x¯0x2x¯3x4+x0x1x2x3+x¯0x¯2x3x¯4 . Let us compute the 1st signature and the Boolean difference signature of each variable.

The 1st signatures of x0 , x1 , x2 , x3 and x4 are (9,7) , (8,8) , (8,8) , (8,8) and (8,8) , respectively. The variable x1 is symmetric to x4 . The Boolean difference signatures of the variables are 32, 12, 20, 28 and 12, respectively. From the 1st signatures and a symmetry check, we can distinguish variables x0 , x1 and x4 . Variables x2 and x3 are both asymmetric variables and have the same 1st signature values. If we only utilize on their 1st signatures, the variables x2 and x3 cannot be distinguished. However, these two variables have different Boolean difference signatures. Thus, the variables x2 and x3 are actually different and can be distinguished.

Definition 3.

(Independent variable) A variable xi of a Boolean function f is an independent variable if it satisfies |fxi|=0 .

NP transformations do not change the independence of a variable. Thus, an independent variable is still an independent variable after NP transformation.

Definition 4.

(Independent-variable set) The independent-variable set of a Boolean function f, Df , is a set that consists of all independent variables of f.

Lemma 1.

Two NPN-equivalent Boolean functions f and g have the same number of independent variables.

Proof.

If the Boolean function f is NPN-equivalent to g, then f and g are in the same NPN equivalence class. There must exist an NP transformation T that can transform f into g or g¯ . After NP transformation, an independent variable is still an independent variable. Therefore, it can be deduced that f and g have the same number of independent variables. □

Property 1.

The cofactor signature of a Boolean function f with respect to its variable xi is fxi=fx¯i=12f when the variable xi is an independent variable.

Proof.

Since fxi=fxifx¯i and |fxi|=0 and |fxi|+|fx¯i|=|f| , it holds that fxi=fx¯i=12f . □

Because the positive cofactor signature is the same as the negative cofactor signature for an independent variable, the phases of independent variables cannot determined by using the phase assignment method presented in [[5]]. However, independent variables have no influence on a Boolean function. Thus, the proposed algorithm assigns a positive phase to all independent variables.

Example 2.

Consider two 6-input Boolean functions f(X)=x¯0x1x¯2+x¯0x1x2x3+x0x¯1x¯2+x0x¯1x2x3 and g(X)=x¯0x¯1x¯3x4+x¯0x1x3x4+x0x¯1x¯3+x0x1x3 . Let us compute the SS vectors, Boolean difference signatures and independent-variable sets.

The SS vectors of f and g are as follows:

Vf={(12,12,2,0,1),(12,12,2,0,1),(8,16,2,2,0),(16,8,2,2,0),(12,12,2,4,1),(12,12,2,4,1)},

Vg={(16,8,2,0,0),(12,12,2,1,1),(12,12,2,2,1),(12,12,2,1,1),(16,8,2,0,0),(12,12,2,2,1)}.

The Boolean difference signatures of the variables of f are 48, 48, 16, 16, 0 and 0. The Boolean difference signatures of the variables of g are 16, 48, 0, 48, 16 and 0. The independent-variable sets of f and g are Df={x4,x5} and Dg={x2,x5} .

Definition 5.

(Independent mapping set) The independent mapping set between Boolean functions f and g is D={φi:xixj|xiDf,xjDg} .

Consider two NP-equivalent Boolean functions f and g with independent-variable sets of Df={xi1,xi2,xik} and Dg={xj1,xj2,xjk} , respectively. If we do not consider the symmetry and independence of variables, then there are 2kk! groups of different variable mappings between Df and Dg according to their 1st signatures. However, according to the properties of independent variables, we need to consider only the positive phase and create one independent-mapping set {xi1xj1,xi2xj2,xikxjk} . Therefore, the search space is reduced significantly if there are independent variables in the Boolean functions.

In Example 2, the Boolean function f has the three symmetry classes C0={x0,x1} , C2={x2,x3} and C4={x4,x5} , and the Boolean function g has the three symmetry classes C0={x0,x4} , C1={x1,x3} and C2={x2,x5} if we do not consider the Boolean difference signatures. The symmetry class C0 of f can be mapped to the symmetry classes C1 and C2 of g using the method of reference [[5]]. In other words, the symmetry classes C0 and C4 of Boolean function f cannot be distinguished. However, the variables in C0 and C4 of Boolean function f have different Boolean difference signatures. Thus, if we consider the Boolean difference signatures when searching the variable mappings, the symmetry class C0 of f can be mapped only to the symmetry class C1 of g, and the symmetry class C4 of f can be mapped only to the symmetry class C2 of g. There exists an independent-mapping set {x4x2,x5x5} .

Definition 6.

(Structural difference signature vector) An n-input Boolean function f has a structural difference signature (SDS) vector Vf={V0,V1,,Vn1} , where Vi=(fxi,fx¯i,Ci,Ci,Gi,|fxi|) .

The algorithm presented in [[5]] groups variables by their 1st signature values. The algorithm proposed in this paper groups variables by their 1st signature values and Boolean difference signatures. We define the '<' relation between xi and xj as follows.

Definition 7.

(<) The variables xi and xj have the relation xi<xj if one of the following two cases is satisfied: (1) (fxi,fx¯i)<(fxj,fx¯j) or (2) (fxi,fx¯i)=(fxj,fx¯j)fxi<fx¯i .

The group numbers of the variables are generated with the above '<' relation. The SDS vectors of f and g in example 2 are as follows: Vf={(12,12,2,0,1,48),(12,12,2,0,1,48),(8,16,2,2,0,16), (16,8,2,2,0,16),(12,12,2,4,2,0),(12,12,2,4,2,0)} and Vg={(16,8,2,0,0,16),(12,12,2,1,1,48), (12,12,2,2,2,0),(12,12,2,1,1,48),(16,8,2,0,0,16),(12,12,2,2,2,0)} . In the process of grouping variables of Boolean function f, we first compare their 1st signature and do not consider the order of positive and negative cofactor signature. Therefore, variables x2 and x3 are grouped into group 0. The varibales in symmetry class C0 and C4 have the same 1st signature, so we compare their Boolean difference signature. Because the Boolean difference signature of variables in C0 is greater than that of variables in symmetry class C4 , the group number of variables x0 and x1 are 1 and the group number of variables x4 and x5 are 2.

The SDS vector is a new signature vector that consists of the SS vector plus a Boolean difference mark. The variable mapping search and the transformation detection of our algorithm are based on two facts: (1) two NP-equivalent Boolean functions have the same SDS vectors; and (2) there exists a possible variable mapping between the variables xi and xj if they have the same SDS values.

4.2. SDS-Based Boolean Matching Algorithm

NPN Boolean matching is defined as follows:

Given two Boolean functions f and g, if there exists an NP transformation T that satisfies f(TX)=g(X) or f(TX)=g(X)¯ , then f is NPN-equivalent to g.

Before searching the variable mappings, the proposed algorithm first determines whether there is an output negation for Boolean function f. If there is, then our algorithm will match f and g¯ . The method of identifying the presence of an output negation is the same as that in reference [[5]]. If |f|=|g||f||g¯| , then there is no output negation. There is an output negation if |f||g||f|=|g¯| . There is a tie if |f|=|g||f|=|g¯| . Our algorithm handles first the condition without output negation and then the condition with output negation if f is not NP equivalent to g.

The algorithm will terminate when it finds a transformation T that satisfies f(TX)=g(X) (g(X)¯) or when all candidate transformations have been checked and found not to satisfy f(TX)=g(X) (g(X)¯) . The algorithm will attempt all possible variable mappings, and thus, it will certainly find an NP transformation T between two NP-equivalent Boolean functions f and g (g¯) .

The pseudo-code for NPN Boolean matching is given in Procedure 1.

In Procedure 1, trans_list is a tree that stores the NP transformations generated in the process of transformation detection. A candidate transformation is an unabridged branch in trans_list . sp_f and sp_g are the decomposition expressions for f and g, respectively. After the existence of an output negation has been determined, Procedure 1 calls Handle_SDS() to detect the NP transformations between f and g ( g¯ ) and judge the NP equivalence of f and g (g¯) .

Any one NP transformation between the Boolean functions f and g (g¯) is composed of n variable mappings. Thus, the proposed algorithm searches variable mappings and generates NP transformations. In this paper, the necessary condition for two Boolean functions to be judged NP equivalent is that they must have the same SDS vector. For a variable mapping to be established between xi and xj , these two variables must satisfy the following conditions:

(1) xi and xj have the same 1st signature values, i.e., (|fxi|,|fx¯i|)=(|fxj|,|fx¯j|)(|fxi|,|fx¯i|)=(|fx¯j|,|fxj|) .

(2) xi and xj have the same Boolean difference signature, i.e., |fxi|=|fxj| .

(3) xi and xj have the same symmetry class cardinality, i.e., |Ci|=|Cj| .

(4) xi and xj have the same group number, i.e., Gi=Gj .

Procedure 1 NPN Boolean Matching.
Input:f and gOutput: 0 or 1functionMatching(

f,g

) Create BDD of f and g

sp_f=bddtrue,sp_g=bddtrue,trans_list=NULL

Compute

|f|

and

|g|

if

|f|=|g|

thenif

|f||g¯|

then Return Handle_SDS(

f,g

)elseif Handle_SDS(

f,g

)=1 then Return 1else Return Handle_SDS(f,

g¯

)end ifend ifelseif

|f|=|g¯|

then Return Handle_SDS(f,

g¯

)else Return 0end ifend ifend function

In the process of the variable mapping search, Handle_SDS() searches the variable mappings for each variable that has not been identified. A variable is identified when its phase and variable mappings are determined in a transformation. After searching all variable mapping sets, Handle_SDS() selects the minimal variable mapping set to handle. The minimal variable mapping set is the one with the lowest cardinality. There are eight possible cases for the variable mapping set of the variable xi of f, as follows.

(1) The variable xi is an asymmetric variable. The phase of xi is determined, and there is only one variable xj of g that has the same SDS values as those of xi . The variable mapping set of xi is a single-mapping set. χi={ijk} , k{0,1} , and |χi|=1 .

(2) The variable xi is an asymmetric variable. There exist multiple variables xj1,xj2,,xjm of g, where m2 , that have the same SDS values as those of xi , and their phases are determined. The variable mapping set of xi is a multiple-mapping set. χi={ij1k1,ij2k2,,ijmkm} , where k1,k2,,km{0,1} , and |χi|=m .

(3) The variable xi is an asymmetric variable. There exist one or more variables xj1,xj2,,xjm of g, where m1 , that have the same SDS values as those of xi , and their phases are not determined. The variable mapping set of xi is a multiple-mapping set. χi={ij10,ij11,ij20,ij21,,ijm0,ijm1} , and |χi|=2m .

(4) The variable xi is a symmetric variable, and its symmetry class is Ci={xi,xi1,xi2,,xim1} . There exists only one symmetry class Cj={xj,xj1,xj2,,xjm1} of g whose variables have the same SDS values as those of the variables in Ci , where |Ci|=|Cj| , and the phase of xi is determined. The variable mapping set of xi , Si , is a single symmetry-mapping set, i.e., |Si|=1 . There exists one group of variable mappings {ijk,i1j1k1,i2j2k2,,im1jm1km1} , where k,k1,k2,,km1{0,1} , between Ci and Cj .

(5) The variable xi is a symmetric variable, and its symmetry class is Ci={xi,xi1,xi2,,xim1} . There is only one symmetry class Cj={xj,xj1,xj2,,xjm1} of g whose variables have the same SDS values as those of the variables in Ci , where |Ci|=|Cj| , and the phase of xi is not determined. The variable mapping set of xi , Si , is a multiple symmetry-mapping set: |Si|=2 . There are two groups of variable mappings, {ij0,i1j1k1,i2j2k2,,im1jm1km1} , where k1,k2,,km1{0,1} , and {ij1,i1j1p1,i2j2p2,,im1jm1pm1} , where p1,p2,,pm1{0,1} , between Ci and Cj .

When the variable symmetry is checked, the phase relation between two symmetric variables is known. The variable mapping relations between Ci and Cj can be generated in the following way.

We first consider the case in which xi and xj have the same phase, i.e., there exists a variable mapping ij0 . A variable mapping i1j10 exists in two cases: (1) xi is symmetric to xi1 and xj is symmetric to xj1 or (2) xi is symmetric to x¯i1 and xj is symmetric to x¯j1 . A variable mapping i1j11 exists in two cases: (1) xi is symmetric to xi1 and xj is symmetric to x¯j1 or (2) xi is symmetric to x¯i1 and xj is symmetric to xj1 . Then, we consider the case in which xi and xj have the opposite phase, i.e., there exists a variable mapping ij1 . A variable mapping i1j11 exists in two cases: (1) xi is symmetric to xi1 and xj is symmetric to xj1 or (2) xi is symmetric to x¯i1 and xj is symmetric to x¯j1 . A variable mapping exists i1j10 in two cases: (1) xi is symmetric to xi1 and xj is symmetric to x¯j1 or (2) xi is symmetric to x¯i1 and xj is symmetric to xj1 . Thus, two groups of variable mappings between Ci and Cj will be generated via this method.

(6) The variable xi is a symmetric variable, and its symmetry class is Ci . There exist multiple symmetry classes Cj1,Cj2,,Cjm , where 2mn2 , whose variables have the same SDS values as the variables in Ci , where |Ci|=|Cj1|=|Cj2|==|Cjm| , and the phase of xi is determined. The variable mapping set of xi , Si , is a multiple symmetry-mapping set: |Si|=m . There exists one group of variable mappings between Ci and each Cjp , where p{1,2,,m} .

(7) The variable xi is a symmetric variable, and its symmetry class is Ci . There exist one or more symmetry classes Cj1,Cj2,,Cjm , where 1mn2 , whose variables have the same SDS values as those of the variables of Ci , where |Ci|=|Cj1|=|Cj2|==|Cjk| , and the phase of xi is not determined. The variable mapping set of xi , Si , is a multiple symmetry-mapping set: |Si|=2m . There exist two groups of variable mappings between Ci and each Cjp , where p{1,2,,m} .

(8) The variable xi is an independent variable. The variable mapping set of xi is an independent mapping set.

All possible variable mapping sets are listed above. To generate an NP transformation, n variable mappings are needed for x1,x2,,xn . Each node in the NP transformation tree, trans_list , represents a variable mapping, and all nodes in a given layer belong to the same variable mapping set. The methods for handling the variable mapping sets are as follows.

(1) If it is the first computation of SDS vectors, a check for independent variables is performed. If there are one or more independent variables, an independent-mapping set is created and added to trans_list , and the minimal variable mapping set is then sought among the remaining variables. If there are no independent variables, Handle_SDS() searches the variable mapping sets for all variables.

(2) If the current variable mapping set of xi is a single-mapping set, our algorithm adds the variable mapping in χi to trans_list . The variable xi is identified.

(3) If the current variable mapping set of xi is a single symmetry-mapping set and xi belongs to Ci , where |Ci|=m , then the group ψi of variable mappings of Si is added to trans_list . To the NP transformation tree, m layers are added, where each layer contains a variable mapping node. The variables in the symmetry class Ci are all identified.

(4) If the current variable mapping set of xi is a multiple-mapping set or a multiple symmetry-mapping set, then the cardinalities of the variable mapping sets are computed, and the minimal variable mapping set is recorded.

After searching all variable mapping sets, as in reference [[5]], our algorithm updates the two decomposition expressions sp_f and sp_g in the case of a single-mapping set or a single symmetry-mapping set. Otherwise, our algorithm handles the minimal variable mapping set. If the cardinality m of the minimal variable mapping set satisfies m2 , then m branches will be generated in trans_list . Each branch is handled in order.

The purpose of Procedure 2 is to search the variable mappings for all possible NP transformations. In the process of recursive_search, Procedure 2 uses the same methods applied in [[5]] to find and prune error NP transformation branches. That is, the current branch will be pruned if the two SDS vectors are not the same or if the current variable mapping has a phase collision.

The pseudo-code for Procedure 2 is as follows.

Procedure 2 recursive_search.
Input:f, g,

sp_f

,

sp_g

, and

trans_list

Output: 0 or 1functionhandle_SDS(

f,g,sp_f,sp_g,trans_list

)if

D1

then return VERIFY(

f,g,T

)end if UPDATE(

f,g,sp_f,sp_g

)if

VfVg

then return 0end ifif

D2

then Compute

Df

and

Dg

if

NotEmpty(Df)

then Add independent mappings to

trans_list

end ifend if

min_number

=32768for all

xif(x)

doif

D3

then Continueend iffor all

xjg(x)

do Search variable mappingsend for Compute

χi(Si)

if

D4

thenfor all

φj(ψj)χi(Si)

doif

D5

then return 0else Add

φj(ψj)

to

trans_list

end ifend for

min_number=1

elseif

|χi|(|Si|)<min_number

then

min=i

end ifend ifend forif

D6

then Update

sp_f

and

sp_g

Return Handle_SDS(

f,g,sp_f,sp_g,trans_list

)elsefor all

φj(ψj)χmin(Smin)

doif

D5

then continueelse Add

φj(ψj)

to

trans_list

Update

sp_f

and

sp_g

Return Handle_SDS(

f,g,sp_f,sp_g,trans_list

)end ifend for Return 0end ifend function

The meanings of conditions D1 , D2 , D3 , D4 , D5 and D6 and the operations that need to be performed when these conditions are satisfied are defined as follows:

D1 : When D1 is true, a candidate transformation is generated. Procedure 2 checks whether the current NP transformation T can transform f into g (g¯) .

D2 : When D2 is true, the transformation tree is NULL, and this is the first time that the SDS vectors have been computed. Procedure 2 checks and handles the independent-mapping set between f and g (g¯) .

D3 : When D3 is true, the current variable xi has already been identified, and Procedure 2 fetches the next xi to handle.

D4 : When D4 is true, the variable-mapping set of xi is a single-mapping set or a single symmetry-mapping set.

D5 : When D5 is true, there is a phase collision.

D6 : When D6 is true, the cardinality of the minimal variable mapping set is 1.

In the process of transformation detection, Procedure 2 attempts each variable mapping in each multiple-mapping set or each group of variable mappings in each multiple symmetry-mapping set. For two NP-equivalent Boolean functions f and g ( g¯ ), Procedure 2 must find a candidate transformation that satisfies f(TX)=g(X) (g(X)¯) . The purpose of VERIFY() is to check whether f(TX)=g(X) (g(X)¯) .

UPDATE() serves the following functions:

(1) Updates the SDS vector Vf of f and the SDS vector Vg of g by means of Shannon decomposition and the decomposition expressions sp_f and sp_g .

(2) Updates the phases of the variables in f and g.

(3) Checks the variable symmetry when the SDS vectors are computed for the first time.

(4) Groups the variables of f and g by their 1st signature values and Boolean difference signatures.

In Example 2, if we use the SS values to search the variable mappings, then there are one single symmetry-mapping set S2={C2C0} and two multiple symmetry-mapping sets S0={C0C1,C0C2} and S4={C4C1,C4C2} , where S0=S4=4 . Procedure 2 handles the single symmetry-mapping set S2 , and the variable mappings x¯2x0 and x3x4 are added to trans_list . sp_f and sp_g are updated to x¯2 and x0 . After the SS vectors are updated, the 1st signatures of the remaining variables of f and g are all (8,8) . Therefore, the remaining four variables still cannot be distinguished, and there are two multiple symmetry-mapping sets, S0 and S4 . The first symmetry-mapping set S0 is selected to be handled. The transformation tree for Example 2 using SS vectors is shown in Figure 1.

If we use the SDS values to search the variable mappings, then there are one independent-mapping set, one single symmetry-mapping set and one multiple symmetry-mapping set according to the first computed SDS vectors. Procedure 2 first adds the variable mappings x4x2 and x5x5 to the transformation tree. Then, the two variable mappings x¯2x0 and x3x4 of the symmetry mapping C2C0 are added to the transformation tree. The catch is that the independent variable is not a splitting variable because the decomposition results obtained via Shannon expansion with the independent variable are unchanged. Thus, the decomposition expressions sp_f and sp_g are updated to x¯2 and x0 . UPDATE() is called to compute new SDS vectors, and the SDS vectors are updated in accordance with sp_f and sp_g .

In this way, Procedure 2 determines 4 variable mappings, namely, x4x2 , x5x5 , x¯2x0 and x3x4 , after the first variable mapping search for example 2. In the next variable mapping search, there is one multiple symmetry-mapping set, S0={{x0x1,x1x3},{x0x¯1,x1x¯3}} . The transformation tree for Example 2 using SDS vectors is shown in Figure 2.

From Example 2, we can see that the number of candidate transformations decreases from 8 to 2. The use of Boolean difference signatures helps to distinguish symmetry classes C1 and C5 , and we need to consider only the positive phase for independent variables. Thus, Boolean difference signatures are very beneficial for distinguishing variables.

In cell library binding, a benchmark Boolean circuit is found to realize another NPN equivalent Boolean function. Example 3 demonstrates the process of NPN equivalent matching by SS and SDS vectors respectively, and illustrates the validity of the SDS vectors proposed in this paper.

Example 3.

Consider two 6-input Boolean functions f(X) and g(X) :

f(X)=x0x1(x3x5+x4x5)+x0x¯1(x4x¯5+x2x3x¯4x¯5)+x1x¯3x¯4x¯5+x1x¯2x¯4x¯5+x¯0x¯1(x¯4x5+x2x¯3x4x5)+x¯1x¯3x¯4x5+x¯0x1(x¯2x3x4+x2x¯3x4+x3x4x5+x2x¯4x¯5+x¯2x4x¯5)+x¯1x2x3x4x¯5,

g(X)=x¯0x1x2x¯3+x0x1x¯2x¯3+x¯0x¯1x¯2x3+x¯0x1x2x5+x¯0x1x3x4x¯5+x0x¯1x2x¯5+x0x1x¯2x5+x¯0x¯1x¯2x¯3x¯4+x¯0x¯1x2x¯3x5+x¯0x¯1x2x4x5+x¯0x¯1x¯2x4x¯5+x¯0x1x¯2x3x¯4x¯5+x0x1x2x3x¯4x¯5+x0x¯1x¯2x¯3x4x5.

The transformation detection process using SS vectors is as follows:

(1) Compute the SS vectors of f and g. The results are:

Vf={(16,16,1,1,1),(19,13,1,1,0),(16,16,1,1,1),(16,16,1,1,1),(16,16,1,1,1),(16,16,1,1,1)},

Vg={(13,19,1,1,1),(16,16,1,1,0),(16,16,1,1,1),(16,16,1,1,1),(16,16,1,1,1),(16,16,1,1,1)}.

From the above results, we can draw three conclusions: (1) these two SS vectors are the same; (2) the phases of the variable x1 of f and the variable x0 of g are determined; and (3) there is only one variable x0 of g with the same SS values as those of the variable x1 of f. Therefore, there is a single-mapping set {x1x¯0} . Concerning the splitting variables, the new splitting expressions are sp_f=x1 and sp_g=x¯0 .

(2) The algorithm enters the next iteration and computes the new SS vectors. The new SS vectors are:

Vf={(9,10,1,1,1),(0,0,1,1,0),(9,10,1,1,1),(10,9,1,1,1),(10,9,1,1,1),(9,10,1,1,1)},

Vg={(0,0,1,1,1),(9,10,1,1,0),(10,9,1,1,1),(10,9,1,1,1),(10,9,1,1,1),(10,9,1,1,1)}.

The results show the following: (1) the two new SS vectors are the same; (2) the phases of all variables are determined; and (3) the next variable-mapping set to be handled is χ0={x¯0x¯1,x¯0x2,x¯0x3,x¯0x4,x¯0x5} . Procedure 2 adds 5 nodes to the second layer of the transformation tree. Procedure 2 handles the first variable mapping in the order of the variable mappings in the set and updates sp_f=x1x¯0 and sp_g=x0x¯1 .

In the subsequent variable mapping search, the x¯0x¯1 branch is pruned by a phase collision. The x¯0x2 , x¯0x3 and x¯0x4 branches are pruned by having different SS vectors.

(3) Then, Procedure 2 handles the variable mapping x¯0x5 and detects a candidate transformation T={x1x¯0,x¯0x5,x4x¯1,x¯5x2,x¯2x4,x¯3x¯3} . After verification, this transformation is found to satisfy f(TX)=g(X) . Therefore, f is NPN-equivalent to g.

The transformation tree for Example 3 using SS vectors is shown in Figure 3.

Figure 3 shows that this transformation tree for Example 3 has 6 branches and that the two Boolean functions are decomposed 4 times. Let us examine the detection process using SDS vectors.

(1) The SDS vectors of f and g are as follows:

Vf={(16,16,1,1,3,28),(19,13,1,1,0,64),(16,16,1,1,5,12),(16,16,1,1,4,20),(16,16,1,1,2,36),(16,16,1,1,1,52)},

Vg={(13,19,1,1,0,64),(16,16,1,1,2,36),(16,16,1,1,1,52),(16,16,1,1,4,20),(16,16,1,1,5,12),(16,16,1,1,3,28)}.

From these results, we can draw the following conclusions: (1) these two SDS vectors are the same; (2) the phases of the variable x1 of f and the variable x0 of g are determined,; and (3) there is one single-mapping set {x1x¯0} to be used in the search. In Procedure 2, the splitting variables x1 and x¯0 are used to decompose f and g, respectively.

(2) The new SDS vectors are as follows:

Vf={(9,10,1,1,3,14),(0,0,1,1,0,64),(9,10,1,1,5,6),(10,9,1,1,4,10),(10,9,1,1,2,18),(9,10,1,1,1,26)},

Vg={(0,0,1,1,0,64),(9,10,1,1,2,18),(10,9,1,1,1,26),(10,9,1,1,4,10),(10,9,1,1,5,6),(10,9,1,1,3,14)}.

From these two new SDS vectors, the following can be seen: (1) the phases of all variables are determined; and (2) all unidentified variables can be identified from their Boolean differences. A candidate transformation T={x1x¯0,x¯0x5,x¯2x4,x3x3,x4x¯1,x¯5x2} is generated, and this T is verified to be correct.

When SDS vectors are used to perform Boolean matching, the transformation tree for Example 3 contains only one candidate transformation. In the transformation detection process, the search space comprises all branches of the transformation tree, including unabridged and abridged branches. The unabridged branches are the candidate transformations, and the abridged branches are the pruned transformations. When the transformation tree possesses fewer branches, the algorithm considers a smaller search space. The purpose of decomposing the Boolean functions is to update the SDS vectors to search the new variable mappings. When the algorithm requires fewer decompositions, more variables are identified in each iteration. These three indicators can be used to measure how much of the search space our algorithm searches.

In the best case, the variable mapping set of every variable is a single-mapping set, and there is only one candidate transformation. In this case, the spatial complexity is O(1) , and the time complexity is O(n2) . In the worst case, there are no symmetric variables, every variable has the same SDS value, and the phases of all variables cannot be determined in each SDS update. There are 2n+1n! candidate transformations that need to be verified. The spatial complexity is O(2nn!) , and the time complexity is O(n3) .

5. Experimental Results

To demonstrate the effectiveness of the proposed method, we re-implemented the algorithm of [[6]] and tested the algorithm presented in this paper, the algorithm of [[5]] and the algorithm of [[6]] on both a randomly generated circuit set and an MCNC benchmark circuit set. In the random circuit set, there were 1200 circuits in each input circuit set. Every circuit in the random circuit set contained at least two candidate transformations. In the test, we recorded the three indicators concerning the search space and the run time. The proposed algorithm was implemented in C with buddy package. The following experimental results were obtained in a hardware environment with a 3.3-GHz Intel Xeon processor and 4 GB of memory.

In the following tables, the first column shows the number of input variables (#I), and the following four columns show the experimental results for our algorithm. The next four columns show the corresponding experimental results of [[5]], and the last column shows the average run time of the algorithm of [[6]].

Table 1 and Table 2 show the average number of branches (#B.N.), the average number of candidate transformations (#C.N.), the average number of decompositions (#D.N.) and the average run time (#R.T.) of our algorithm and of the algorithm of [[5]] on the random circuit set and on the MCNC benchmark circuit set, respectively.

From Table 1, we can see that the run time of our algorithm is improved by 54% relative to that of [[5]] and by 84% relative to that of [[6]]. From the comparison of the three indicators for the search space, we can see that the number of branches in the transformation tree is reduced by 70%, the number of candidate transformations is reduced by 65%, and the number of decompositions is reduced by 27%. Because the Boolean difference facilitates the identification of the variables, the proposed algorithm reduces the search space and speeds up the matching process. Figure 4 presents the diagram of the search space comparison results for our algorithm and that of reference [[5]] tested on the random circuit set.

Figure 5 presents the diagram of the speed comparison results for our algorithm, that of reference [[6]] and that of reference [[5]] tested on the random circuit set.

Table 2 shows the experimental results obtained during testing on the MCNC benchmark circuit set.

Table 2 shows that with the proposed algorithm, the values of the three indicators for the search space are decreased, and the run time is also slightly reduced. When there are 22 inputs, however, the average run time of our algorithm is higher than that of [[5]]. This is because the variables of this group circuit are easy to identify and because the search space of our algorithm is almost the same as that of [[5]]. In this case, our algorithm spends additional time in computing the Boolean differences compared with the algorithm of [[5]].

From Table 1 and Table 2, we can see that the matching speed on the MCNC benchmark circuits is slower than that on random circuits, although the search space for the MCNC benchmark circuits is less than that for the random circuits. In this paper, we use BDDs to represent Boolean functions. The BDD structure of a Boolean function is closely related to the speed of operations on the BDD. Because the BDD operation speed on the MCNC benchmark circuits is slower than that on the random circuits, the matching speed on the MCNC benchmark circuits is also slower than that on the random circuits.

6. Conclusions

The major contribution of this paper is the raise of SDS vector. The paper demonstrates how SDS vectors can be used to effectively search variable mappings and reduce the search space. The algorithm of this paper take advantage of cofactor, symmetry and Boolean different when search the variable mappings between two Boolean functions. Therefore, the search space and match speed of ours algorithm is better than the competitors. Compared with the algorithm of [[5]], the search space is cut in 48%, and the run time is reduced by 42% and 80% compared with [[5]], respectively. The experimental results prove that the algorithm proposed in this paper is more effective than competing algorithms on general circuits. In future work, we will extend our algorithm to multiple-output Boolean matching and Boolean matching with don't care sets.

Figures and Tables

Graph: Figure 1 The transformation search tree for example 2 using SS vectors.

Graph: Figure 2 The transformation search tree for example 2 using SDS vectors.

Graph: Figure 3 The transformation search tree for example 3 using SS vectorss.

Graph: Figure 4 The search space comparison results for testing on random circuits.

Graph: Figure 5 The matching speed comparison results for testing on random circuits.

Table 1 Boolean matching results on random circuits.

#I#B.N.#C.N.#D.N.#R.T.#B.N. of [5]#C.N. of [5]#D.N. of [5]#R.T. of [5]#R.T. of [6]
72.22.13.20.000244.62.84.10.000240.00067
82.11.93.40.000229.23.74.90.000300.00091
93.72.23.60.0003411.57.15.00.000470.00099
101.91.83.50.0002715.014.15.30.000740.00123
117.87.73.30.0005919.419.24.20.000530.00228
122.12.13.20.000326.76.63.80.001460.00585
133.33.23.20.0006116.916.44.30.001270.00638
142.12.03.30.000638.77.34.60.002170.02743
151.81.73.20.000798.26.94.60.002620.02998
162.52.43.50.0015510.18.64.50.004260.04310
172.92.83.70.003089.38.44.80.007840.05044
182.32.23.20.004457.06.14.60.022740.07177
192.42.33.10.008707.76.64.20.032850.08870
203.02.93.60.020697.56.44.90.043370.13250
212.12.13.20.028799.68.64.30.114710.17362
223.83.83.60.103018.77.75.10.205540.30469

Table 2 Boolean matching results on MCNC benchmark circuitsd.

#I#B.N.#C.N.#D.N.#R.T.#B.N. of [5]#C.N. of [5]#D.N. of [5]#R.T. of [5]#R.T. of [6]
71.01.01.50.000141.31.01.80.000120.00121
81.11.13.20.000421.21.23.50.000350.00146
91.21.21.80.000341.61.52.40.000510.00186
101.11.11.30.000603.41.51.50.000630.00193
111.01.01.30.000741.41.42.60.000780.00243
121.01.01.30.000801.31.21.70.000910.00255
131.11.02.50.004671.31.13.80.004470.00535
141.11.11.40.004011.21.12.00.003680.01245
151.41.32.00.005691.71.53.10.004750.04077
161.21.21.90.013462.01.63.20.001510.04849
171.11.11.50.105021.21.22.20.115180.31644
181.11.01.50.109441.51.52.50.233940.64273
191.81.82.60.807475.55.34.40.891231.62971
201.31.32.11.003092.92.82.71.281562.13035
211.31.31.53.730721.71.52.73.7138210.2122
221.61.61.76.501302.82.73.16.2436811.2760

Author Contributions

J.Z. proposed and implemented the algorithm. G.Y. was the research advisor and provided suggestions. W.N.N.H. provided guidance for this paper and contributed to the revisions and gave advice on optimization issues. J.W. and Y.Z. completed the generation of data and test.

Funding

This research was funded by the National Natural Science Foundation of China Grant (Nos. 61572109, 11371003 and 61751110), the Special Fund for Bagui Scholars of Guangxi (Grant No. 113000200230010), Network and Data Security Key Laboratory of Sichuan Province Open Project (NDSMS201603).

Conflicts of Interest

The authors declare no conflict of interest.

Acknowledgments

We would like to thank the above funds for their technical and financial support.

References 1 Slepian D. On the number of symmetry types of Boolean functions of n variables. Can. J. Math. 1955; 2: 185-193. 10.4153/CJM-1953-020-x 2 Zhang J., Yang G., Hung W.N.N., Liu T., Song X., Perkowski M.A. A group algebraic approach to NPN classification of Boolean functions. Theory Comput. Syst. 2018. 10.1007/s00224-018-9903-0 3 Zhang Y., Yang G., Hung W.N.N., Zhang J. Computing affine equivalence classes of Boolean functions by group isomorphism. IEEE Trans. Comput. 2016; 12: 3606-3616. 10.1109/TC.2016.2557329 4 Lai Y.-T., Sastry S., Pedram M. Boolean matching using binary decision diagrams with applications to logic synthesis and verification. Proceedings of the 1992 IEEE International Conference on Computer Design: VLSI in Computers and Processors. Cambridge, MA, USA. 11–14 October 1992. 10.1109/ICCD.1992.276313 5 Zhang J., Yang G., Hung W.N.N., Zhang Y., Wu J. An efficient NPN Boolean matching algorithm based on structural signature and Shannon expansion. Cluster Comput. 2018; 6: 1-16. 10.1007/s10586-018-1787-x 6 Adbollahi A., Pedram M. Symmetry detection and Boolean matching utilizing a signature-based canonical form of Boolean functions. IEEE Trans. Comput.-Aided Des. Integr. Circuits Syst. 2008; 6: 1128-1137. 10.1109/TCAD.2008.923256 7 Lee S.Y., Lee N.Z., Jiang J.H.R. Canonicalization of threshold logic representation and its applications. Proceedings of the International Conference on Computer-Aided Design. San Diego, CA, USA. 5–8 November 2018: 85 8 Asghar A., Iqbal M.M., Ahmed W., Ali M., Parvez H., Rashid M. Logic algebra for exploiting shared SRAM-table based FPGAs for large LUT inputs. Proceedings of the Electrical Engineering and Computing Technologies. Karachi, Pakistan. 15–16 November 2017: 1-4. 10.1109/INTELLECT.2017.8277632 9 Soeken M., Mishchenko A., Petkovska A., Sterin B., Ienne P., Brayton R.K., De Micheli G. Heuristic NPN classification for large functions using AIGs and LEXSAT. Proceedings of the International Conference on Theory and Applications of Satisfiability Testing. Bordeaux, France. 5–8 July 2016: 212-227 Huang Z., Wang L., Nasikovskiy Y., Mishchenko A. Fast Boolean matching based on NPN classification. Proceedings of the International Conference on Field-Programmable Technology. Kyoto, Japan. 9–11 December 2013: 310-313. 10.1109/FPT.2013.6718374 Petkovska A., Soeken M., Micheli G.D., Ienne P., Mishchenko A. Fast hierarchical NPN classification. Proceedings of the International Conference on Field Programmable Logic and Applications. Lausanne, Switzerland. 29 August–2 September 2016: 1-4. 10.1109/FPL.2016.7577306 Agosta G., Bruschi F., Pelosi G., Sciuto D. A transform-parametric approach to Boolean matching. IEEE Trans. Comput.-Aided Des. Integr. Circuits Syst. 2009; 6: 805-817. 10.1109/TCAD.2009.2016547 Chen K.C., Yang C.Y. Boolean matching algorithms. Proceedings of the International Symposium on VLSI Technology, Systems, and Applications. Taipei, Taiwan. 12–14 May 1993: 44-48 Kapoor B. Improved technology mapping using a new approach to Boolean matching. Proceedings of the European Design and Test Conference. Paris, France. 6–9 March 1995: 86-90. 10.1109/EDTC.1995.470415 Vos A.D., Baerdemacker S.D. Symmetry groups for the decomposition of reversible computers, quantum computers, and computers in between. Symmetry. 2011; 2: 305-324. 10.3390/sym3020305 Katebi H., Igor I.L. Large-scale Boolean matching. Proceedings of the Conference on Design, Automation and Test in Europe. Dresden, Germany. 8–12 March 2010: 771-776. 10.1109/DATE.2010.5456949 Matsunaga Y. Accelerating SAT-based Boolean matching for heterogeneous FPGAs using one-hot encoding and CEGAR technique. Proceedings of the Design Automation Conference of 20th Asia and South Pacifics. Chiba, Japan. 19–22 January 2015: 255-260. 10.1109/ASPDAC.2015.7059014 Ghaderi Z., Bagherzadeh N., Albaqsami A. STABLE: Stress-Aware Boolean Matching to Mitigate BTI-Induced SNM Reduction in SRAM-Based FPGAs. IEEE Trans. Comput. 2018; 99: 1. 10.1109/TC.2017.2725952 Cong J., Minkovich K. Improved SAT-based Boolean matching using implicants for LUT-based FPGAs. Proceedings of the ACM/sigda International Symposium on Field Programmable Gate Arrays. Monterey, CA, USA. 18–20 February 2007: 139-147 Wang K.H., Chan C.M., Liu J.C. Simulation and SAT-based Boolean matching for large Boolean networks. Proceedings of the Design Automation Conference. San Francisco, CA, USA. 26–31 July 2009: 396-401 Moore J., Fazel K., Thornton M.A., Miller D.M. Boolean function matching using Walsh Spectral decision diagrams. Proceedings of the Design, Applications, Integration and Software. Richardson, TX, USA. 29–30 October 2006: 127-130. 10.1109/DCAS.2006.321050 Thornton M.A., Drechsler R., Gunther W. Logic circuit equivalence checking using Haar Spectral coefficients and partial BDDs. VLSI Des. 2014; 1: 53-64. 10.1080/10655140290009800 Zhang J.S., Chrzanowska-Jeske M., Mishchenko A., Burch J.R. Linear cofactor relationships in Boolean functions. IEEE Trans. Comput.-Aided Des. Integr. Circuits Syst. 2006; 6: 1011-1023. 10.1109/TCAD.2005.855951

By Juling Zhang; Guowu Yang; William N. N. Hung; Jinzhao Wu and Yixin Zhu

Reported by Author; Author; Author; Author; Author

Titel:
A New Pairwise NPN Boolean Matching Algorithm Based on Structural Difference Signature
Autor/in / Beteiligte Person: Zhang, Juling ; Yang, Guowu ; Hung, William N. N. ; Wu, Jinzhao ; Zhu, Yixin
Link:
Zeitschrift: Symmetry, Jg. 11 (2018-12-01), Heft 1, S. 27-27
Veröffentlichung: MDPI AG, 2018
Medientyp: academicJournal
ISSN: 2073-8994 (print)
DOI: 10.3390/sym11010027
Schlagwort:
  • NPN Boolean matching
  • structural difference signature vector
  • independent variable
  • variable symmetry
  • Mathematics
  • QA1-939
Sonstiges:
  • Nachgewiesen in: Directory of Open Access Journals
  • Sprachen: English
  • Collection: LCC:Mathematics
  • Document Type: article
  • File Description: electronic resource
  • Language: English

Klicken Sie ein Format an und speichern Sie dann die Daten oder geben Sie eine Empfänger-Adresse ein und lassen Sie sich per Email zusenden.

oder
oder

Wählen Sie das für Sie passende Zitationsformat und kopieren Sie es dann in die Zwischenablage, lassen es sich per Mail zusenden oder speichern es als PDF-Datei.

oder
oder

Bitte prüfen Sie, ob die Zitation formal korrekt ist, bevor Sie sie in einer Arbeit verwenden. Benutzen Sie gegebenenfalls den "Exportieren"-Dialog, wenn Sie ein Literaturverwaltungsprogramm verwenden und die Zitat-Angaben selbst formatieren wollen.

xs 0 - 576
sm 576 - 768
md 768 - 992
lg 992 - 1200
xl 1200 - 1366
xxl 1366 -