H_ — I SSI HH H In IB! ■HUH Hi HI BraKiflB&fli JffilflBl _flHBn£ BBdS But! MSI ■I ™ — I — HuillHl iRSin HhHH HI HuDl mi II wmirHiiMii Digitized by the Internet Archive in 2013 http://archive.org/details/programmanualnor714laih fJLOV , uiucdcs-r-75-7i^ /)/IAsC« °f Z^ PROGRAM MANUAL: NOR NETWORK TRANSDUCTION BY GENERALIZED GATE MERGING AND SUBSTITUTION (Reference Manual of NOR Network Transduction Programs NETTRA-G3 and NETTRA-G4) by April 1975 H.C. Lai Ah" 7 197: DEPARTMENT OF COMPUTER SCIENCE UNIVERSITY OF ILLINOIS AT URBANA-CHAMPAIGN URBANA, ILLINOIS UIUCDCS-R-75-71^ PROGRAM MANUAL: NOR NETWORK TRANSDUCTION BY GENERALIZED GATE MERGING AND SUBSTITUTION (Reference Manual of NOR Network Transduction Programs NETTRA-G3 and NETTRA-G4) by H.C. Lai April 1975 Department of Computer Science University of Illinois at Urbana-Champaign Urbana, Illinois 6l801 This work was supported in part by the National Science Foundation under Grant No. GJ-40221. 11 ABSTRACT This paper explains the operation and usage of two FORTRAN pro- grams NETTRA-G3 and NETTRA-G4, developed for NCR-network transduction ( trans formation and re duction ) . Existing (non-optimal) NOR-gate networks and their required out- put functions are given to the programs as input. Program NETTRA-G3 re- duces the number of gates in the network by means of merging gates. When two gates are merged to one, the merged gate will be connected to the immediate successors of the two gates, and the two gates will be removed from the network. On the other hand, program NETTRA-G^- reduces the number of gates by means of substituting for all output corrections of a particular gate under consideration. If these connections can be successfully replaced, this particular gate then can be removed from the network. These programs are only two out of a whole system of programs, designated by the name "NETTRA" (for NETwork TRAnsduction) , which imple- ment different NOR-network transduction procedures. The theoretical basis for the algorithms implemented by NETTRA-G3 and -Gk is detailed in earlier reports ([1] and [3])« Ill ACKNOWLEDGMENT The author is greatly appreciative of Professor S. Muroga for his discussions and guidance relating to the preparation of this paper, and also, for his careful reading and valuable suggestions for the improvement of the original manuscript. The author is also in- debted to J. N. Culliney and Y. Kambayashi upon whose related research much of the work reported herein depends. This work was supported in part by the National Science Foundation under Grant No. GJ-U0221. XV TABLE OF CONTENTS Page 1. INTRODUCTION 1 2. A NETWORK TRANSDUCTION PROCEDURE BY MERGING OF GATES 3 2.1 Procedure and Flowchart 5 2.2 Examples 9 3. A NETWORK TRANSDUCTION PROCEDURE BY SUBSTITUTION OF GATES 15 3.1 Procedure and Flowchart 17 3.2 Examples 26 k. MAJOR FUNCTIONS OF COMMON SUBROUTINES 3^ 5. INPUT DATA SETUP 37 5.1 Input Data Card Format kl 5.2 Restrictions on Problem Size. 52 5.3 Examples of Input Data Setup „ 52 REFERENCES 65 APPENDIX: PROGRAM LISTING .... 66 1. INTRODUCTION This manual is intended to instruct the reader in the use of the FORTRAN programs NETTRA-G3 and NETTRA-G^-. These programs realize the algorithms described in detail in [1]. NETTRA-G3 and -G^ are only two out of the whole system of programs developed by the research group of Professor S. Muroga at the University of Illinois. The generic name 'NETTRA' (for NETwork TRAnsduc- tion) designates the whole collection of programs comprising the system. All of the programs in the NETTRA system either transform or assist in transforming and reducing a large, non-optimal network of NOR gates realizing one or more functions into a smaller, less expensive (in terms of the number of required gates and connections, for example), near- optimal network realizing the same function (s). In general, such a transduction could involve a complete reorganization of the network: the addition and/or deletion of gates; the addition and/or deletion of con- nections among gates; and/or the substitution of certain connections for others. The transduction procedures realized by NETTRA-G3 and -G4 actually involve these alterations with the exception of adding gates to the network. The procedures realized in these programs NETTRA-G3 and -Gk aim at reducing the number of NOR gates in the network by merging gates and substituting for gates, respectively. They are more complex than those appearing in programs NETTRA-PG1, -PI and -P2 and require more computer time to execute. However, they are more powerful also, and they can often reduce a network when it is impossible to do so by the procedures in NETTRA-PG1, -PI, and -P2. The programs NETTRA-PG1, -PI, and -P2 de- scribed in [2], though, are more efficient than NETTRA-G3 and -Qk when first applied to large, far from optimal networks. NETTRA-G3 and -G^- are most useful when applied to more nearly optimal networks which is fairly difficult to be further reduced. The next two sections, Sections 2 and 3? will discuss the two programs in great detail and present some examples of the effectiveness of their transductions. This will be followed, in Section h, by a de- scription of the functions of subroutines which support the subroutines actually realizing the procedures. Section 5 outlines the preparation of input for these programs. Finally, in the Appendix, a listing of all of the FORTRAN programs NETTRA-G3 and NETTRA-GU will be given. 2. A NETWORK TRANSDUCTION PROCEDURE BY MERGING OF GATES This section will discuss the NOR-network transduction procedure realized by the FORTRAN program designated NETTRA-G3. This program real- izes a procedure which merges two NOR gates at a time. In a given net- work, if two gates can be replaced by one gate with inputs from external variables and/or existing gates not fed by the two gates, they are said to be mergeable . The gate replacing those two gates is called the merged gate. The procedure realized by program NETTRA-G3 is the proce- dure to examine every pair of gates in a network to see if they are mergeable. For the sake of efficiency this procedure does not use the necessary and sufficient conditions for finding mergeable gates. Instead, the concept of compatible sets of permissible functions (CSPF) is used. The input to this program is a description of a particular NOR network under consideration. This description (explained in great detail in Section 5) consists of a set of various network parameters. The output of this program is a description of the "transduced" network (if a trans- duction, in this case the merging of gates, was possible). The entire NETTRA-G3 program requires 127K bytes of core stor- age, about 42K bytes being occupied by the actual program instructions and about 85K by the stored data. The gate merging procedure is realized by the FORTRAN sub- routine GTMERG. This subroutine and the following support subroutines, written in FORTRAN IV for the IBM 360/75, constitute the program NETTRA-G3: *The reader is assumed to be familiar with the definitions presented in [1], [3]. MAIN, GTMERG, MINI 2, OUTPUT and SUBNET. Two system- supplied timing sub- routines STIMZE and KTIMEZ are also assumed to be available, but if they are not, their use can be omitted from the program, or another suitable timing routine substituted, without changing the procedure itself. The functions of the support subroutines MAIN, OUTPUT, and SUBNET will be discussed in Section k. The function of subroutine MINI 2 is to calcu- late compatible sets of permissible functions for all the gates in a given network. It is explained in great detail in [k] and [2].' The general organization of the program NETTRA-G3 is shown in Fig. 2.1. An arrow from block i to block j represents the fact that the subroutine represented by block i calls the subroutine represented by block j. MAIN GTMERG MINI2 OUTPUT SUBNET STIMEZ "KTIMEZ Fig. 2.1 General organization of the program NETTRA-G3, Section 2.1 will describe the procedure itself, and Section 2.2 will show examples obtained by NETTRA-G3. 2.1 Gate Merging Procedure and Flowchart The gate merging procedure is essentially performed by the sub- routine GTMERG. GTMERG is programmed based on the procedure GMGC (a Generalized Merging of Gates using CSPF's) described in detail in [1], The following discussions of GTMERG will assume knowledge of the in- formation contained in [ 1] . The purposes of the main variables and arrays appearing in the subroutine will be explained in the program listing in the Appendix. PROCEDURE FOR MERGING OF GATES Step 1. Calculation of CSPF's Call subroutine MINI2 to calculate a compatible set of permis- sible functions for every gate in the network. Step 2. Select a Pair of Gates Select two gates GI and GJ such that GJ > GI both according to the ascending order of gate labels. If all possible combinations of gate pairs have been considered, return to the calling subroutine. Step 3. Calculation of CSPF for the Merged Gate Calculate the CSPF for the merged gate GIJ by forming the inter- section of the two CSPF's for gates GI and GJ. If the CSPF for GIJ is a null set, GI and GJ are not mergeable, and go to Step 2. Calculate the set of connectable functions for the merged gate GIJ. Step k. Check Substitutability If the output of gate GI is included in the CSPF of gate GJ and gate GI is not a successor of gate GJ, then gate GJ can be replaced by gate GI, and go to step 8. If the output of gate GJ is contained in the CSPF of gate GI, and gate GJ is not a successor of gate GI, then gate GI can be replaced by gate GJ. So interchange the labels of gates GI and GJ and gO to step 8. # Step 5. Select Connectable Functions for Gate GIJ Find all external variables and/or existing gates in the net- work which are contained in the set of connectable functions, and which are not fed by gate GI or GJ. Step 6. Check Realizability of the Merged Gate If connectable functions obtained in Step 5 do not realize a function contained in the CSPF of GIJ, go to step 2. Step 7» Construct the Merged Gate Disconnect all input connections of gate GI, connect all con- nectable functions found in Step 5 to gate GI to realize the merged gate at gate GI. Step 8. Substitution Disconnect all output connections of gate GJ, and connect gate GI to all immediate successors of gate GJ. The resulting network still realizes the specified function (s). Step 9» Update Information on the Mew Network Call subroutine SUBNET to update the information on the con- figuration of the network (e.g., predecessor lists and successor lists) Go to Step 1. The flowchart of this procedure, realized by FORTRAN sub- routine GTMER is shown in Fig. 2.2. START CALL SUBROUTINE MINI 2 TO CALCULATE CSPF'S FOR ALL GATES IN THE NETWORK. GI-N+M+1 (N: NUMBER OF VARIABLES M: NUMBER OF OUTPUT GATES OUTPUT GATES ARE LABELED N+l THROUGH N+M) 3 GJ=GI+1 3 CALL SUBNET CALCULATE CSPF(GIJ), THE CSPF FOR THE MERGED GATE GIJ. CALCULATE K(GIJ) , THE SET OF CONNECTABLE FUNCTIONS FOR GIJ 11 ' t 1 DISCONNECT ALL INPUT CONNECTIONS OF GJ. CONNECT GI TO ALL IM- MEDIATE SUCCESSORS OF GJ FIND SET U(GIJ) CONTAIN- ING ALL EXTERNAL VARIABLES AND /OR GATES SUCH THAT FOE ANY GKeU(GIJ), F(GK) e K(GU; AND GK IS NEITHER A SUCCESSOR OF GI NOR GJ Fig. 2.2 Flowchart of subroutine GTMERG. 2.2 Examples for Program NETTRA-G3 The printout obtained during the solution of a typical problem by NETTRA-G3 is shown in Fig. 2.3* The original network, as specified in the beginning of the printout (Fig. 2.3 (a)), consists of 33 gates and 310 connections and realizes a single 5-variable output function. Only uncomplemented variables are assumed to be available as inputs to the network. This information is followed by a complete truth table (b) showing the output of every gate in the original network for every pos- sible input combinations. Note that it is gate 1 which realizes the output function of the network. Next appears a description of the configuration of the net- work (c). Each gate is listed along with the gates and/or external variables which are its inputs. The level numbers, also to be seen in (c), will be discussed in Section 5-3^ The truth table (note that the outputs for disconnected gates are shown as all l's) and network configuration for the transduced net- work resulting from the execution' of NETTRA-G3 are shown in (d) and (e), respectively. The derived network, obtained in ."jk seconds, consists of 12 gates and 38 connections. 10 **** 5 VAR. EXAMPLE HEX-8B5809FO NUMBER OF VARIABLES = 5 NUMBER OF FUNCTIONS = 1 COST COEFFICIENT A =1000 B = 1 --- UNCOMPLEMENTED VARIABLES X --- ORIGINAL NETWORK COST=33310 (a) Heading information and network parameter Fig. 2.3 Printout obtained from NETTRA-G3 for a sample problem. 11 TRUTH TABLE XI = 00000000000000001111111111111111 X2 = 00000000111111110000000011111111 X3 = 00001111000011110000111100001111 xU 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 X5 = 01010101010101010101010101010101 1 = 10001011010110000000100111110000 2 = 10000000000000000000000000000000 3 = 01000000000000000000000000000000 4 = 00100000000000000000000000000000 5 = 00010000000000000000000000000000 6 = 0000100000000000000000000000 000 7 = 000. 010 000000 00000000000000000 8 = 00000010000000000000000000000000 9 = 00000001000000000000000000000000 10 =00000000100000000000000000000000 11 =00000000010000000000000000000000 12 = 00000000001000000000000000000000 13 = 00000000000100000000000000000000 Ik = 00000000000010000000000000000000 15 =00000000000001000000000000000000 16 =000000000000001000 00000000000000 17 = 00000000000000010000000000000000 18 = 00000000000000001000000000000000 19 = 00000000000000000100000000000000 20 = 00000000000000000010000000000000 21 =00000000000000000001000000000000 22 = 00000000000000000000100000000000 23 = 00000000000000000000010000000000 2k = 00000000000000000000001000000000 25 = 00000000000000000000000100000000 26 = 00000000000000000000000010000000 27 = 00000000000000000000000001000000 28 = 000000000000000000000000001000 29 = 00000000000000000000000000010000 30 = 00000000000000000000000000001000 31 = 00000000000000000000000000000100 32 = 00000000000000000000000000000010 33 = 00000000000000000000000000000001 (b) Truth table for original network. I 12 GATE . . LEVEL FED BY I / V 3 k. 5 7 10' 12 15 16 17 18 19 20 21 23 2k 30 31 32 33 2 / 7/ XI X2 X3 x4 X5 3 /' 6/ XI X2 X3 xk 2 — k / °7 XI X2 X3 X5 2 5 / 5/ XI X2 X3 2 3 1+ 6 / 6/ XI X2 Xk X5 2 7 / 5/ XI X2 Xk 2 3 6 8 / 5/ XI X2 X5 2 k 6 9 / V XI X2 2 3 k 5 6 7 8 10 / 6/ XI X3 xk X5 2 11 / 5/ XI X3 Xk 2 3 10 12 / 5/ XI X3 X5 2 4 10 13 / V XI X3 2 3 k 5 10 11 12 Ik / 5/ XI Xk X5 2 6 10 15 / V XI Xk 2 3 6 7 10 11 ik 16 / V XI X5 2 1+ 6 8 10 12 lit- 17 / 3/ XI 2 3 1+ 5 6 7 8 9 10 11 12 13 Ik 15 16 18 / 6/ X2 X3 Xk X5 2 19 / V X2 X3 Xk 2 3 18 20 / 5/ X2 X3 X5 2 1+ 18 21 / V X2 X3 2 3 4 5 18 19 20 22 / 5/ X2 Xk X5 2 6 18 23 / V X2 X4 2 3 6 7 18 19 22 21+ / V X2 X5 2 1+ 6 8 18 20 22 25 / 3/ X2 2 3 k 5 6 7 8 9 18 19 20 21 22 23 2k 26 / 5/ X3 Xk X5 2 10 18 27 / V X3 X4 2 3 10 11 18 19 26 28 / V X3 X5 2 i+ 10 12 18 20 26 29 / 3/ X3 2 3 4 5 10 11 12 13 18 19 20 21 26 27 28 30 / V X4 X5 2 6 10 Ik 18 22 26 31 / 3/ X4 2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 32 / 3/ X5 2 k 6 8 10 12 14 16 18 20 22 2k 26 28 30 33 / 2/ 2 3^ 5 6 7 8 9 10 11 12 13 1^ 15 16 17 18 19 20 21 22 23 2*+ 25 26 27 28 29 30 (c) Configuration of original network. NETWORK DERIVED BY GTMERG TIME ELAPSED = 7^ CENTISECONDS ]_o TRUTH TABLE XI = 00000000000000001111111111111111 X2 = 00000000111111110000000011111111 X3 = 00001111000011110000111100001111 xh = 00110011001100110011001100110011 X5 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 = 10001011010110000000100111110000 2 = 10001000000000000000000000000000 3 = 11111111111111111111111111111111 4=11111111111111111111111111111111 5 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1.1 1 1 1 1 1 1 1.1 1 1 1 1 1 1 6 = 11111111111111111111111111111111 7 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1.1 1 1 1 1 1 1 1 1 1 1 1 1 1"1 1 1 1 8 = 111 i 1111000000000000000000000000 9 = 11111111111111111111111111111111 10 =11111111111111111111111111111111 11 = 11111111111111111111111111111111 12 = 00100000101000000000000000000000 13 = 11111111111111111111111111111111 Ik = 10001000100010000000000000000000 15 = 11111111111111111111111111111111 16 = 11111111111111111111111111111111 17 = 111111111111111111 llllllllllllll 18 = 11111111111111111111111111111111 19 ^llllllllllllllllllllllllllllllll 20 = 11111111111111111111111111111111 21 =01110000000000001111000000000000 22 =10001000000000001000100000000000 23 = 1111111111111111111111111. lllllll 24 = 11111111111111111111111111111111 25 = 11111111000000001111111100000000 26 = 11111111111111111111111111111111 27 = 11110000111100001111000011110000 28 = 11111111111111111111111111111111 29 = 11111111111111111111111111111111 30 =11111111111111111111111111111111 31 = 00000100000001000000010000001100 32 = 00000000000000 10000000 100000 1010 33 =00000000000001110000000000001111 (d) Truth table for transduced network Ik GATE .. LEVEL FED BY 1 /V 12 21 31 32 33 2 /3/ XI X2 Xk X5 3 / V k / V 5 / V 6 / 1/ 7 /v 8 /3/ XI X2 9 / V 10 /v 11 / 1/ 12 /2/ XI X3 X5 2 13 /V 11+ /3/ XI Xk X5 15 / V 16 /V IT / V 18 /I/ 19 7 V 20 / V 21 /'2/ X2 X3 2 22 /3/ X2 Xk X5 23 /V 2k /!/ 25 /3/ X2 26 /V 27 /3/ X3 28 /v 29 / V 30 / 1/ 31 /2/ X^ Ik 22 27 32 /2/ X5 8 Ik 22 27 33 /2/ lU 25 27 * A NETWORK DERIVED BY GTMERG COST = 12038 (e) Configuration of transduced network. 15 3. A NETWORK TRANSDUCTION PROCEDURE BY SUBSTITUTING FOR GATES This section will discuss the NOR-network transduction proce- dure realized by the FORTRAN program designated NETTRA-GU. This proce- dure examines every output connection of a selected gate to see if it can be substituted for by connections from external variables and/or existing gates. The concept of compatible sets of permissible functions and a possibly connectable condition are used in this procedure in searching the candidates of substitution. The substitutions will be per- formed only when all the output connections of the selected gate can be replaced. Therefore, any possible transduction performed by this pro- cedure will reduce the number of gates in the network. The input to this program is a description of a particular NOR- network under consideration. This description (explained in great detail in Section 5) consists of a set of various network parameters. The out- put of this program is the description of the "transduced" network (if a transduction, in this case the substitution of gates, was possible). The entire NETTRA-G^ program requires 146 k bytes of core stor- age, about 56K bytes being occupied by the actual program instructions and about 90K bytes by the stored data. The gate substitution procedure is realized by the FORTRAN sub- routine PROCV. This subroutine along with the following support subrou- tines, written in FORTRAN IV for the IBM 360/75, constitutes the program NETTRA-G4: MAIN, PROCV, RQRNW, OUTPUT and SUBNET. Two system-supplied timing subroutines STIMEZ and KTIMEZ are also assumed to be available, but if they are not, their use can be omitted from the program, or The reader is assumed to be familiar with the definitions presented in [1] and [31. 16 another suitable timing routine substituted, without changing the proce- dure itself. The functions of the support subroutines MAIN, OUTPUT, SUBNET will be discussed in Section k. The general organization of the program NETTRA-GU is shown in Fig. 3«1« An arrow from block i to block j represents the fact that the subroutine represented by block i calls the subroutine represented by block j . Section 3-1 will discuss the procedure itself, and Section 3*2 will show examples obtained by NETTRA-gU. MAIN PROCV RQRNW OUTPUT SUBNET STIMEZ "ktimez Fig. 3.1 General organization of the program NETTRA-G^-, 17 3.1 Gate Substitution Procedure and Flowchart The gate substitution procedure is essentially performed by the subroutine PROCV. Subroutine RQRNW, which is called by subroutine PROCV, calculates a compatible set of permissible functions for every output connection of a particular selected gate and for every gate in the network except that particular gate. For the sake of efficiency, this subroutine uses an ordering which is especially designed to fit the purpose of sub- stituting for the selected gate. For this reason, the general subroutine for calculating CSPF's, FORTRAN subroutine MINI2 used in program NETTRA- G3 and some other NETTRA programs, is not used in NETTRA-G4. Subroutine PROCV is programmed based on the procedure SOGPC de- scribed in [1]. The following discussions of PROCV will assume knowledge of the information contained in [1]. The purposes of the main variables and arrays appearing in the sub- routine will be explained in the program listing in the Appendex. 18 PROCEDURE FOR SUBSTITUTION OF GATES Step 0. Initialize Step 1. Selection of Gates According to the ascending order of gate labels, select a gate GI satisfying the following conditions: 1. GI is not an output gate of the network, 2. GI has no single output gate as its immediate predecessor. If all gates have been selected, return to the calling subroutine (MAIN in NETTRA-G^). Step 2. Remove Internal Inverters If GI is the only immediate predecessor of a gate GJ not being an output gate, then GJ is redundant. Remove GJ from the network, and con- ' nect all immediate predecessors of gate GI to all immediate successor of gate GJ. Call subroutine SUBNET to update the information on the configura- tion of the network (successor lists, predecessor lists, etc.), and then go to Step 1. Step 3. Calculation of CSPF's Call subroutine RQRNW to calculate CSPF's for all output connec- tions of gate GI, and for all gates except gate GI. Step k. Selection of Connections Select one output connection of gate GI. Let the connection be GIGJ (indicating the connection from gate GI to gate GJ). The connection is selected according to the ascending order of GJ. If all connections from GI have been considered, go to Step 8. Step 5. Partition of Candidates for substitution Partition external variables and/or existing gates which are not successors of gate GI into the following subsets. 19 (1) Effectively- connectable functions which satisfy the following conditions a. must have 0- components corresponding to all 0-components in the CSPF of GIG J. b. must have at least one 1-component corresponding to a 1- component in the CSPF of GIG J. (2) Possibly- connect able functions which may actually have 1-compon- ents corresponding to some 0-components in the CSPF of GIGJ, but the corresponding components in the CSPF's of the functions themselves must be *. The second condition in (1) is also required for a function being in this subset. (3) All other functions. Step 6. Selection of Connectable Functions From connectable functions, select functions which are essential for replacing connection GIGJ. If these functions contain at least one 1-component corresponding to every 1-component in CSPF of GIGJ, connect these functions to gate GI and call RQRGT (an entry point in subroutine RQPJW) to update CSPF's for all gates feeding these functions, and go to Step k. Step 7« Selection of Possibly-Connectable Functions Select possibly-connectable functions to replace connection GIGJ according to the following substeps. 7-1 Select one possibly-connectable function GK which has at least one 1-component corresponding to a 1-component in the CSPF of GIGJ which is not covered by any other functions having been selected. If all possibly-connectable functions have been considered, then con- nection GIGJ is not replaceable, and go to Step 9« 20 7-2 Find a function GL satisfying that (1) GL is not a successor of GI, (2) connecting GL to GK would make GK a connectable function to GJ without changing the essential 1-components in GK. If no such GL can be found, go to Step 7-1. 7-3 Connect GL to GK and GK to GJ. Call SUBNET to update the informa- tion on the network (successor lists etc.), call RQRGT to update the CSPF's for gates feeding GK, and call UPTRTH (another entry point in RQRNW) to update the truth table for gates which are suc- cessors of GK. 7-1+ If all 1-components in the CSPF of GIGJ are covered by the selected functions, go to step k; otherwise go to Step 7~1» Step 8. Removing Gate Disconnect all connections going to or coming out from gate GI. Call SUBNET to update the information on the network. Go to Step 1. Step 9- Restoring the Network Since GIGJ could not be replaced, restore the old network (the network before gate GJ was taken into consideration). Go back to Step 1. According to the procedure described above, the gates which could not be replaced when they were chosen would not be considered again al- though they may become replacable after some other gate has been removed. The user can easily change the subroutine MAIN to repeatedly apply this procedure until no further improvement could be found. Another way to do this is simply to change the statement 'go to Step 1* in Step 8 to ' go to Step The flowchart of subroutine PROCV is shown in Fig. 3.2. The calculation of CSPF's for gates and connections from the selected gate is accomplished by subroutine RQRNW which is called in 21 M o o o 3 e P o f-l ti e-< EJ p § irf 1 k -I :! . j 3 w a < 22 Step 3 of the above procedure. The CSPF for a gate is calculated by forming intersections of CSPF's for all its output connections. Since the CSPF 's for connections (except the connections from the selected gate) need not be stored in the program, only the CSPF for each gate is stored. For the details of the process of the calculation of CSPF's, see [1]. The following is the procedure realized by sub- routine RQPJW. Note that gate GI is specified by the calling subroutine (FROCV) when RQPJMW is called. 23 PROCEDURE FOR CALCULATION OF CSPF's Step 0. Initialization Assign * to every component of the CSPF for every gate in the network. Step 1. CSPF for Output Gates Assign CSPF's of the output gates in the network the correspond- ing output functions specified by the input data. Step 2. Selection of Gates Select a gate GJ other than GI according to the ordering of gate levels, i.e., gates in a lower level are chosen prior to gates in a higher level, and gates in the same level are chosen according to the ascending order of gate labels . If all gates have been considered, return to the calling sub- routine (PROCV in NETTRA-G^.) Step 3« Selection of Input Connection Select an input connection GKGJ of gate GJ, (GKGJ denotes the connection from gate GK to gate GJ). The selection is based on the ascend- ing order of GK with an exception that GIGJ (if exists) is selected last among all input connections to GJ. Step h. Calculations of CSPF's for Connections Calculate the CSPF for input connection GKGJ of gate GJ according to the following rules: (1) For 1- components in the CSPF of GJ, the corresponding components of CSPF for GKGJ are assigned 0. (2) For 0-components in the CSPF of GJ, there are the following three cases. (a) Each of the corresponding components in the CSPF of GKGJ is assigned *, if the corresponding component of the function 2k of GK is 0. (b) Each of the corresponding components in the CSPF of GKGJ is assigned 1, if the corresponding component of the func- tion of GK is 1, and no corresponding components of other input connections have been assigned 1 before GKGJ is taken into consideration. (c) All other components in the CSPF of GKGJ are assigned *'s. (d) For ^--components in the CSPF of GJ, the corresponding com- ponents of CSPF of the CSPF of GKGJ are assigned **s. Step 3. Calculation of CSPF for Gate " 1 " If GK * GI, take intersection of the CSPF of GKGJ with the intermediate CSPF obtained so far for gate GJ, (i.e., the intersection of CSPF's for input connections of GJ selected prior to GKGJ). This in- tersection is the new intermediate CSPF for gate GJ (the final CSPF for GJ if GKGJ is selected the last among all input connections to GJ) . Go to Step 3« The flowchart of this subroutine is shown in Fig. 3^3 • When RQRNW is entered through the entry point RQRGT(GZ), the pro- cedure is applied only to predecessors of gate GZ. When RQRNW is entered through the entry point UPTRTH(GI,GZ) , the procedure is applied only to gates which are successors of gate GZ but not gate GI. This step is actually performed while each component of CSPF for GKGJ is assigned. 25 (ENTRY ~*\ RQRNW(Gl) J ASSIGN *'S TO ALL CSPF'S AS THE INITIAL VALUES ASSIGN THE CSPF'S OF OUTPUT GATES IN LEVEL ONE THE FUNCTIONS SPE- CIFIED BY INPUT DATA LEV=0 LEV=LEV+1 YES c RETURN EXHAUSTED CALCULATE CSPF(GKGJ) TAKE INTERSECTION OF THE INTERMEDIATE CSPF FOR GK WITH CSPF(GKGJ) AS THE NEW INTERMEDIATE CSPF FOR GK Fig. 3.3 Flowchart of subroutine RQRNW. 26 3.2 Examples for NETTRA-GU The printout obtained during the solution of a typical program by NETTRA-G^ is shown in Fig. 3«5« The printout is similar to the one obtained by NETTRA-G3 discussed in Section 2.2 with (a) showing the head- ing information and parameters for that problem, (b) the truth table of the original network, (c) the configuration of the original network ob- tained from input cards, (d) the truth table of the transduced network obtained by applying subroutine PROCV, and (e) the configuration of that transduced network. The procedure for merging of gates and the procedure for sub- stitution of gates can be used in a combined program. Fig. 3*6 shows an example obtained by a combined program which is similar to program NETTRA-G3 with an additional statement 'CALL PROCV inserted immediately after the statement 'CALL GTMERG' in subroutine MAIN of NETTRA-G3. The original network is the one shown in Fig. 2.3« It can be seen that PROCV improved the network obtained by NETTRA-G3 by reducing 1 gate and k connections. However, this does not mean that PROCV is always more powerful than GTMERG. 27 **** 5 VAR. EXAMPLE HEX=3B5809FO NUMBER OF VARIABLES = 5 NUMBER OF FUNCTIONS = 1 COST COEFFICIENT A = 1000 B = 1 --- UNCOMPLEMENTED VARIABLES X — ORIGINAL NETWORK COST= 21086 (a) Heading information and network parameters. Fig. 3»5 Printout obtained from NETTRA-G4 for a sample problem. 28 TRUTH TABLE XI = 00000000000000001111111111111111 X2 = 00000000111111110000000011111111 X3 =00001111000011110000111100001111 Xk = 001100110011001100110 1 100110011 X5 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0*1 1 1=1000 1.0 11010110000000100111110000 2 = 1000000000000000000000 00 00000000 3 = 01000000000000000000000000000000 ^+ = 001000000000000000000000 000 000 5 = 01110000000000000000000000000 000 6 = 10001000000000000000000000000000 7 = 01000100000000000000000000000000 8 = 00 0. 00000100000000000000000000000 9 = 00100000101000000000000000000000 10 = 00000000000000001000000000000000 11 =01000000000000001100000000000000 12 =00100000000000001010000000000000 13 = 01110000000000001111000000000000 Ik = 10001000000000001000100000000000 15 = 01000100000000000100010000000000 16 = 10101010000000000000000000000000 17 = 0000000000000000001000100000000 0' 18 = 11111111000000001111111100000000 19 =11110000111100001111000011110000 20 = 10001000100010000000000000000000 21 = 00000000000001110000000000001111 (b) Truth table for original network. 29 3ATE . . LEVEL FED BY 1 /V 3^57 8 9 10 11 12 13 15 17 21 2 /3/ XI X2 X3 x4 X5 3 /a/ XI X2 X3 x4 2 k /a/ xi X2 X3 X5 2 5 /a/ XI X2 X3 2 6 /3/ XI X2 X4 X5 7 / 2/ XI X2 x4 6 8 /a/ xi X3 x4 X5 2 9 /a/ xi X3 X5 2 10 /a/ X2 X3 xh X5 2 11 /a/ X2 X3 xh 2 12 /a/ X2 X3 X5 2 13 /a/ X2 X3 2 14 /3/ X2 xh X5 15 / 2/ X2 X4 Ik 16 /3/ XI X2 X5 17 /a/ X2 X5 14 16 18 /3/ X2 19 /3/ X3 20 /3/ XI xh X5 21 / 2/ 18 19 20 (c) Configuration of original network. NETWORK DERIVED BY PROCV TIME ELAPSED = lif2 CENTISECONDS TRUTH TABLE XI -OOOOOOOOOOOOOOOOllll X2 = 00000000111111110000 X3 =00001111000011110000 XU 1 1 1 1 1 1 1 1 1 1 X5 =01010101010101010101 1 = 10001011010-1 10000 o. o'o 2 = 11111111111111111111 3 = 11111111111111111111 ^=11111111111111111111 5 = 11111111111111111111 6 = llll'i lllllllllllllll 7 = 11111111111111111111 8 = 1111111. llllllllll -ill 9 = 00100000101000000000 10 = 00000000000000001 000 11 = 11111111111111111111 12 =11111111111111111111 13 =01110000000000000111 Ik = 10001000000000001000 15 =01000100000000000100 16 = 10 101010000000000000 17 = 00000000000000000010 18 = 11111111000000001111 19 = 11110000111100001111 20 = 10001000100010000000 21 = 00000000000001110000 30 .111 1 1 1 1 1 1 111 1 1 1 1 1 111 111 1 1 111 1 1 1 1 Oil 10 1 1 1 10 1 10 1 1 1 1 1 111 1 1 1 1 1 1 111 111 1 1 1 1 1 1 111 111 1 1 1 1 1 1 111 111 1 1 1 1 1 1 111 111 1 1 1 1 1 1 111 111 1 1 1 1 1 1 111 111 1 1 ■1 1 1 1 111 111 1 1 1 11 1 111 111 1 1 1 1 1 1 111 10 10 1 111 1 1 1 1 1 1 111 d) Truth table for transduced network. 31 GATE . . LEVEL 1 iy 2 / V 3 / v k /!/ 5 / V 6 /V 7 / V 8 /V 9 /2/ 10 /2/ 11 /V 12 / V 13 /2/ 14 /3/ 15 / 2/ 16 /3/ 17 /2/ 18 /3/ 19 /3/ 20 /3/ 21 /2/ FED BY 9 10 13 15 17 21 xi X3 X5 lh X2 X3 xh X5 16 X2 X3 Ik X2 x4 X5 X2 Xk Ik XI X2 X5 X2 X5 Ik 15 X2 X3 xi xk X5 18 19 20 * A NETWORK DERIVED BY PROCV COST= 1239. (e) Configuration of transduced network NETWORK DERIVED BY GTMERG AND PROCV TIME ELAPSED = 160 CENTISECONDS 32 TRUTH TABLE XI = 00000000000000001111111111111111 X2 = 00000000111111110000000011111111 X3 =00001111000011110000111100001111 xU 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 X5 =01010101010101010101010101010101 1 = 10001011010110000000 100111110000 2 = 11111111111111111111111111111111 3 = 11111111111111111111111111111111 k = i i i i i i i i i i i i i i i i i i 'f~i i i i i i i i i i i i i 5 = 11111111111111111111111111111111 6 = llllllllllllllllllllir llllllllll 7 = 11111111111111111111111111111111 8 = 1111111100000000000000000000 000 9 = 11111111111111111111111111111111 10 = 11111111111111111111111111111111 11 = 11111111111111111111111111111111 12 =00100000101000000000000000000000 13 = 11111111111111111111 ii : 11111 ill li Ik = 10001000100010000000000000000000 15 = 11111111111111111111111111111111 16 = 11111111111111111111111111111111 17 = 11111111111111111111111111111111 18 = 11111111111111111111111111111111 19 =11111111111111111111111111111111 20 = 11111111111111111111111111111111 21 = 01110000000000001111000000000000 22 =10001000000000001000100000000000 23 =1111111111111111111. 1111111111111 2k = 111111111. llllllllll 1111 -111111111 25 = 11111111000000001111111100000000 26 = 11111111111111111111111111111111 27 = 11110000111100001111000011110000 28 = 11111111111111111111111111111111 29 =11111111111111111111111111111111 30 = 111111111111111111111. 11111111111 31 = 00000100000001000000010000001100 32 = 00000000000000100000001000001010 33 = 0000000000000 111 0000000000001111 (a) Truth table of transduced network fig. 3. Printout obtained from a program applying GTMERG and PROCV for the same problem as that shown in Fig. 2.3. GATE . , LEVEL FED BY 1 /V 12 21 31 32 33 2 / V 3 / 1/ k / 1/ 5 / 1/ * 6 /V 7 /V 8 /3/ XI X2 9 / V 10 /V '11 / 1/ 12 /2/ XI X3 X5 22 13 / V 11+ /3/ XI Xk X5 15 /v 16 / 1/ 17 / 1/ 18 /I/ 19 /I/ . 20 /I/ 21 /2/ X2 X3 lh 22 /3/ X2 X4 X5 23 / V 2k /I/ 25 /3/ X2 26 / 1/ 27 /3/ X3 28 / V 29 / V 30 / 1/ 31 /2/ Xk Ik 22 27 32 /2/ X5 8 14 22 27 33 /2/ Ik 25 27 33 * A NETWORK DERIVED BY GTMERG AND PROCV COST= 1103^ (b) Configuration of transduced network by GTMERG and PROCV. 3i+ k. MAJOR FUNCTIONS OF COMMON SUBROUTINES The subroutines realizing the procedures presented in the two previous sections share the support of three subroutines whose main func- tions will be discussed in this section: MAIN, SUBNET, OUTPUT. In addi- tion, subroutine MINI 2 described in [2] will also be briefly explained which is used in NETTRA-G3. Complete program listings of these four subroutines can be found in the Appendix along with the listings of the subroutines realiz- ing the previously described procedures. The functions of these subroutines are as follows: MAIN: This subroutine repeatedly reads in groups of input data which in- clude information about the given networks; e.g., the number of external variables, whether or not the compliments of variables are also avail- able as input variables, the number of output functions, the number of NOR gates, the list of connections, and the truth table of the output functions (see Section 5 for details). Using this information, MAIN con- structs the incidence matrix, INC$MX, for the network. INC$MX is a two- dimensional array whose arguments represent gates or external variables. An array element INC$MX(A1,A2) > 1 indicates a connection from Al to A2; an array element INC$MX(A1,A2) < indicates the absence of a connection from Al to A2. Next subroutine SUBNET is called to calculate the level of each gate and to make lists of predecessors and successors (i.e., which gates precede which and which gates succeed which). MAIN then prints out the truth table and the constructed incidence matrix of the original net- work by calling the subroutine OUTPUT. Finally the desired transduction 35 procedure is applied to the network by calling the subroutine (s) realizing that transduction. The transduced network is stored in INC$MX, replacing the original network. Then MAIN prints the results of the transduction procedure, i.e., lists of removed and added connections, the new incidence matrix and the new truth table. SUBNET: This subroutine may be entered at three different points by a call to either SUBNET, UNNECE, or PVALUE. SUBNET generates detailed information on the configuration of the network stored in INC$MX: (1) It calculates the level of each gate in the network. Level 1 is assigned to gates having no output connections thus all gates which have been removed from the network will be assigned level 1. (2) It lists all immediate successors and immediate predecessors for each gate. (3) It calculates the successor matrix which is stored in a two-dimensional array SUC$MX. The value of SUC$MX (A1,A2) indicates the existence or non-existence of a path from gate (or external variable) Al to gate A2. UNNECE disconnects certain types of obviously unnecessary connections in the network and updates the above information (discussed in (1), (2), and (3)). The connections removed from the given network are those existing in no paths from the external vari- ables to the output gates. PVALUE calculates the actual truth table for the entire network stored in INC$MX. OUTPUT: This subroutine may be entered at five different points by a call to either OUTPUT, PAGE, LINE, TRUTH, OR CKT. OUTPUT assigns mnemonic names to external variables and gates for the purpose of achieving a readable print-out. 36 PAGE ejects one page on the printer. LINE skips a specified number of lines on the print-out sheet. The number is specified by the argument in the call (e.g. "CALL LINE (5)" skips 5 lines). TRUTH prints out the truth table of the network currently stored in INC$MX. CKT prints out the network itself. MINI 2 : This subroutine is called by GTMERG in NETTRA-G3 for the purpose of calculating CSPF's for gates in a network. Subroutine MINI 2 also has the ability to remove some redundant connections. It is described in some detail in [2], 37 5. INPUT DATA SETUP In order to fully understand the description of the setup of the input data cards, certain preliminary explanations are necessary. The purpose of network transductions is to reduce the cost of a network which realizes a certain function (or functions) or to alter the network in such a way as to allow another transduction to eventually accomplish such a reduction. This cost, C, is formally defined by the weighted sum of the number of gates, R, and the number of connections , I, of a particular network, i.e., C=AXR + BXI where weights A and B are arbitrary non-negative numbers. Suppose the original network which is to be transformed produces m output functions of n variables. Let x*, I =1, •••> n > be the external variables and f , h = 1, . . . , m, be the output functions. Before a transformation can be performed on a network by a program, a description of that network must be input to the program. In the case when all of the output functions are completely specified (i.e., no "don't cares"), specifying only the interconnection pattern of the network is sufficient. But if one or more of the output functions is not completely specified, then the user must also provide the truth table (truth tables for all output functions are condensed into a single table) of the problem. Providing the truth table to the program consists of two steps, t A "connection" refers to either a connection from an external variable or an interconnection between two gates. 38 namely the specification of external variables, and the specification of output functions. The method of specifying the output functions depends directly upon the method chosen to specify the external variables. External variables may be specified in either of two ways, (a) an implicit specifi - cation of external variables , or (b) an explicit specification of external variables <, (a) In the case of implicit specification of external variables, the user specifies the number n of external variables along with a parameter which indicates whether or not the uncomplemented variables are available. Reading the value n along with the parameter, the program internally generates the entries of external variables of an ordinary truth table, that is, a truth table which consists of 2 input vectors, as shown in Fig. 5.1. In this truth table, the input vectors are arranged according to the order such that an integer j expressed in a binary representation (x . ..x ) increases, where x is the most significant digit and x is the least significant digit . For example, the truth table for a function of three variables is shown in Fig. 5.2. The implicit specification of external variables is used for logical design problems in which the output functions have relatively few don't-care terms. 39 The uncomplemented variables The complemented variables The output functions r x n : X, : X m x 1 * d 2 n -i • • x • • • X- x -0 X l . x X J . . X 2 n -l c n ■*\ -0 x n . K -2 n -l . x -2 n -l 1 J i- . f: ,2 n -l m m . f 2 n -l m These entries exist only in the case of logical design problems where the complemented variables are available as external inputs. Fi S» 5.1 The truth table of output functions of n variables x l 1 1 1 1 X 2 1 1 1 1 x 3 1 1 1 1 *1 1 1 1 1 0^ *2 1 1 1 1 X 3 1 1 1 1 °> f l ■S 'I These entries exist only in the case of logical design problems where complemented variables are available as input variables . Fig . { j.2 The truth table of a function of three variables, 40 (b) In the case of explicit specification of external vari- ables, the user specifies the entries of external variables of the truth table using additional cards called < external -vari- able-card > s. The explicit specification of external variables is used in the case of logical design problems where output functions have many don't-care terms. Suppose that the output functions are defined for a subset of input vectors of the entire truth table of Fig. 5.1. Let x, j = j_> j p , ..., j denote these input vectors. The user can 'condense' the truth table of Fig. 5.1 into another table shown in Fig. 5.3. only ia input vectors The uncomplemented variables The complemented variables C \ h x l X., o • • • • • • X I n h X n X n x K n c — x l X l A1 • • • • • • X X n J 2 X n ' n ■s f l f i J '2 f 1 • • • • • • f m • f ± m m f * m These entries exist only in the case of logical design problems where the complemented variabl are avaiable as external inputs . Fig . 5.3 A 'condensed' truth table having only the input vectors x , j = j-, j «•»> j , for which the output functions are defined. 41 Using < external-variable-card > s, the user can set up internally the table of Fig. 5.3 in place of Fig. 5.1. 5.1 Input Data Card Format For each separate problem, a set of input data cards must be t submitted which consists of the following : (i) < heading -card > (ii) < problem-parameter -card > (iii) < external-variable-card > s I ) omitted for (iv) < output -function-card > s J certain cases (v) < connection-description-card > s Both (i) and (ii) will always consist of only a single card, but (iii), (iv), and (v) may each consist of several cards. Furthermore, types (iii) and (iv) are omitted if all output functions are completely specified, and (iii) need only be prepared in the case of the explicit specification of external variables for the truth table. Following is a description of the formats for each type of input card, (i), (ii), (iii), (iv) and (v): (i) < Heading-card > This is the first card of the input deck for a problem. This card may contain any alphanumeric information, in columns 1~80, which may be used for the identification of the problem, but none of the information on this card will be used in the actual computation, This information will be printed on the first page of the output. t The current implementations of the NETTRA programs accept only heading, problem-parameter, and connection-description cards. Eventually it is hoped that these programs will be modified to accept all of the options described in this section. 1+2 (ii) < Problem-parameter-card. > This card specifies the nature of the problem the user wants to solve. There are 7 fields in which to specify the parameters with characters and numerals. These fields are as follows: Cols. l~k: An integer, N, which is right- justified. This number, N, represents the number of external variables, n, of the output functions. Be sure to punch n (rather than 2n) for N in the case of both complemented and uncomplemented variables available . Cols. 5~8: An integer, M, which is right-justified.' This number, M, is the number of output functions, m, to be realized simultaneously. Therefore, of course, M will also be the number of output gates in the network. Cols. 9~12: An integer, R, which is right -justified. This number, R, specifies the number of gates which are included in the network. For various reasons, the user may wish to input networks in which one or more of the gates are "isolated" (i.e., are not connected to any other gates). This is permissible as long as these "isolated" gates are also included in the total number of gates, R. ColSo 13~l6: An integer, A , which is right-justified. The number A is the value of the non -negative weight for the ■ number of gates in the cost function. (See Table 5.1.1, 'Typical combinations of values A and B for different network reduction problems ' . ) h3 Cols. 17~20: An integer, B , which is right- justified. The number B is the value of the non -negative weight for the number of connections in the cost function. (See Table 5.1,1.) Col. 2k: A blank 'b' 1 ", or one of the characters, 'C, 'X', 'Y' , 'IT or 'V. The 'b' or 'C parameter represents an implicit specification of both the external variables and an implicit specification of the output functions (in this case, the output functions will be calculated from the connection pattern of the network). The 'X' or 'Y' parameter indicates an implicit specification of external variables only . The 'U' or 'V parameter indicates an explicit specification of external variables . (See summary of these symbols in Table 5.1-2) The 'b' or 'X' parameter specifies that only uncomplemented external variables are available for the network. The ' C or 'Y' parameter specifies that both uncomplemented and complemented vari- ables are available for the network. If the user specifies the 'b', 'X', 'C'j or 'Y' parameter, the program sets up the truth table by generating a set of 2 input vectors (x_^ , ..., x ), for j = 0, ..., 2 -1, in the case of a 'b' or 'X' parameter, or (xr, ..., x^, x^, ..., x ) for j = 0, ..., 2 -1, in the case of a 'C or 'Y' parameter. The 'b' or 'C parameters should be used for problems in which the output functions contain no don't-care terms. For such problems, the preparation of the < external-variable-card > s and the < output - function-card > s can be dispensed with since the program can calcu- late completely all output functions using only a description of the t A 'b' stands for a blank (i.e., no character punched). kk Network Reduction Problem . Values of A and B reducing the number of gates only. A = 1 and B = reducing the number of gates primarily, then reducing the number of connections secondarily. A = 100 and B = 1 reducing the number of connections only. A = and B = 1 reducing the number of connections primarily, then reducing the number of gates secondarily. A = 1 and B = 100 reducing the sum of the number of gates and the number of connections. A = B = 1 Table 5. Id Typical combinations of values A and B for different network reduction problems. Most of the programs in the NETTRA system are oriented toward this reduction problem, so the user will probably find this combination of A and B the most useful. ^5 uncomplemented variables only available both complemented and uncomplemented variables available •V ■c 'X' , Y , 'IT 'V* implicit specification of external variables and output functions implicit specification of external variables explicit specification of external variables Table 5»1»2 Possible symbols for column 2k of < problem-parameter-card >. he connection pattern of the network (provided by the s ) . - Similarly, the 'X' or 'Y' parameter implies the use of a complete truth table (i.e., 2 input vectors for n external variables) inside the program. Since from this information the program can easily generate the truth table entries for the external variables, as just mentioned, the < external-variable-card > s are unnecessary. The m < output-function-card > s, however, must still be prepared. The 'U' parameter specifies that only uncomplemented external variables are available for the network. The 'V parameter specifies that both uncomplemented and complemented variables are available for the network. In either case, the 'U' or the 'V parameter, the user must prepare n < external -variable-card > s and m < output- function-card > s. The program sets up the truth table by reading these < external-variable-card > s and < output -function-card > s. Cols. 25~28: An integer, NEPMAX, which is right -justified. This parameter is omitted for all NETTRA programs except those involving "error -compensation" routines. In the cases where NEPMAX is required, a further discussion of this parameter can be found elsewhere in the manual. The abbreviation NEPMAX is a mnemonic for "maximum number 'of error positions", and the default is NEPMAX =2 , where n is the number of external variables. (iii) < External -variable-card > s In combination with the 'U' or 'V parameter in column 2k of the < problem-parameter -card >, the n < external-variable-card > s specify the entries of external variables of the truth table of J 47 Fig. 5.3. Each card contains the binary representation of external variable x», i.e., (x-n 1 , x 2 . .., x-^ ), starting from column 1 of the card. The maximum number of bits in a binary representation is limited to 32. (This means the maximum number of input vectors is 32.) If the actual number of bits is less than 32, then a termination symbol '/' (slash) is put on the right of the right-most bit of the binary representation on the first < external-variable- card >. The remaining columns after the termination symbol '/ ' in the first card, as well as the same columns in the following cards, may contain any alphanumeric information which may be used for identification. This information will not be printed on the output pages . In the case of the 'V parameter, the program generates the binary representations corresponding to complemented variables by taking negations of the entries of the < external-variable-card > s. Therefore the user must not provide < external -variable-card > s representing the complemented variables, x«. If one of the parameters 'b', 'C, 'X', or 'Y' appears in column 2k of the < problem-parameter-card >, the user does not prepare < external- variable-card > s. (iv) < Output-function-card > s The m < output -function-card > s specify the set of m output functions to be realized simultaneously. Each card contains the binary representation of one output function f , starting from column 1 of the card. A symbol •** is used to denote don't-care terms, if any. The maximum number of bits in a binary representation is limited to 32. k8 The actual number of bits must be 2 in the case of an implicit specification of external variables, or must be the same as defined by the < external-variable-card > s in the case of an explicit specification of external variables. The remaining columns, up to column 72 (inclusive), may contain any alphanumeric information which may be used for identification. This information will not be printed on the output pages. If either the 'b' or 'C parameter appears in column 2k of the < problem-parameter-card >, the < output -function-card > s must be omitted . (v). < Connection-description-card > s In the present version of the program, 9 cards (some of which may be just blank cards) are required. Each of these cards is divided into l6 fields of 5 columns each (i.e., columns 1~5, 6~10, 11~15, ..., 71-75, 76~80). Beginning with the first field of the first card, continuing through the succeeding fields of that card and through the fields of as many additional cards as necessary (up to a maximum of 9, total), the expressions (explained in the next paragraph) C , CL, CL, ..., are punched right- justified in their respective fields. Each gate of the network is labeled uniquely by assigning it one of the integers 1, 2, ..., R, such that the output gates receive t For many uses, the user will probably find that these 9 cards far exceed his needs, and may thus be inconvenient. In such a case, the number of required cards may be easily adjusted by making the obvious changes in two statements (A READ statement and a DO statement) following the comment card "C**** READ IN NETWORK INFORMATION AND SET UP INC$MX ***■**" in subroutine MAIN. k9 the labels 1, 2, . . . , m. The names XI, X2, . .., Xn are assigned to the external variables x , x , . .., x (and the names Yl, Y2, . .., Yn to the complemented external variables x , x , . .., x , if appropriate). Now, for each connection of the network (i.e., including both the connections from external variables to gates and connections from gates to other gates), a k character expression, C, is formed, to represent that connection as follows: to represent a connection from gate GI to gate GJ, the numeric label GI is inserted into the first two character positions of C. and the numeric label GJ is inserted into the second two positions (e.g., the C. for a connection from gate 9 to gate 5 would be "0905" ); to represent a connection from external variable XI to gate GJ, the alphanumeric label XI is inserted into the first two character positions of C. and the numeric label GJ into the second two positions (e.g., the C. for a connection from external variable x to gate 10 would be "X310"). Every connection of the network must be represented by a C , although there are no restrictions on the order in which the connec- tions (i.e., C.'s) are punched onto the input cards. t At the time of writing, the programs have not yet been changed to recognize this new labeling system. The old labels are simply: 1, 2, „.., n, for external variables x. s x 2> ..., x^ (and n + 1, n + 2, ..., 2n for the complemented variables x.., x.^, ..., x n , if they are permitted in the problem); n + 1, n + 2, „.., n + m for the m output gates of the network (2n + l, 2n + 2, ..., 2n + m if complemented variables are included); and finally n + m+1, n + m + 2, ..o, n + R (2n + m+l, 2n + m+2, ..., 2n + R) for the non-output gates of the network. 50 These five groups of cards, (i), (ii), (iii)j (iv) and (v) in the correct order constitute the necessary description for a single problem. In order to solve several problems during the same computer run, the descriptions for the desired problems are just arranged serially. See Fig. 5. 1.1 for an example of the sequencing of all cards for the execution of a NETTRA program using typical JCL statements for the IBM 360/75. The Program r v^, 51 //ID ... // EXEC FORT //FORT. SYS IN DD* FORTRAN PROGRAM SUBROUTINES /* // EXEC LKED // EXEC GO //GO.SYSIN DD * The Input Data Cards r \ < heading -card > \ < problem-parameter -card > f < external-variables -card > s \ < output-function-card > s C < connection-description-card > s The first problem f< heading -card > E f< heading-card > E E *- / ^ The second problem J The last problem J Fig . 5.1.1 Input card sequence for the execution of a typical NETTRA program. 52 5.2 Restrictions on Problem Size In order to fit the programs into a finite amount of space, some restrictions on the size of an acceptable problem are required: 1. The number t of input vectors in the truth table is 32 or less. 2. The number n of external variables. Because of t < 32, n is 5 or less in the case of completely specified functions. In the case of incompletely specified functions, however, any n < 20 is acceptable if only uncomplemented variables are avail- able, or n < 10 if both uncomplemented and complemented variables are available, provided that the truth table is defined by the < external-variable -card > s. 3. The number R of gates. The number of gates, R, may not exceed UO-n in the case of only uncomplemented variables available (a 'b', 'X', or 'U' parameter). In the case of both uncomplemented and complemented variables available (a 'C, 'Y' or 'V parameter), the limit is lowered to i+0-2n. All of these limitations are essentially imposed by the array sizes in the programs as presently written. To loosen the restrictions is mainly a task of increasing array dimensions appropriately. 5.3 Examples of Input Data Setup The following examples will illustrate, for the general program in the EETTRA system, various possible input data card setups complying with the directions given in Section 5.1. 53 Example 1 : A two output network of four variables shown in + Fig. 5.3.1. Assume the two output functions are f = CCEF and f = 3BBB and only uncomplemented variables are available. Furthermore, assume it is desired to reduce the number of gates primarily and the number of 4. J. connections secondarily (see Table 5.1.1). From this description, the < problem -parameter -card > must contain the following values : Cols. l~k k, the number of external variables Cols. 5~8 2, the number of output functions Cols. 9~12 8, the number of gates in the original network Cols. 13~l6 100, the value of A Cols. 17~20 1, the value of B Cols. 2k 'b', uncomplemented variables only available and implicit specification of both the external variables and the output functions Cols. 25~28 'b', since the NEPMAX parameter is unrelated to the program to be used Fig. 5.3.2 shows the setup of data cards used to specify the network in Fig. 5.3.1 as input for the program. Notice that in forming the C. , the four uncomplemented variables are represented by the labels XI, X2, X3, XU; the two output gates by the numbers 1, 2; and the remain- ing gates, by the numbers 3? k, 5> 6, 1, 8. This manner of labeling is t For convenience, the output functions are expressed in hexidecimal notation. When the numbers in this notation are expanded into binary, they represent the output vectors as they appear (i.e., in the same left-to-right order) in the complete truth table described earlier and pictured in Fig. 5-1. ++ This assumption is implicit in most of the transduction procedures and their implementations which comprise the NETTRA system. 5h X-, x^ Fig . $.3.1 Network to be transformed in Examples 1 and 2, 55 CO o OJ pq X 8 PQ CO oo o 1 H II X 1 t- o o H J* EH X o t- p o m CO 1 «' OJ 1 OO 1 M 1 LTN u o o OO o • • M 1 • • II • • Lf\ 1 -=1- J- O s .3- oo c- o J- OJ 3£ J- oo on o jgj on co t- 5 oo [>- pq novo 1 OO LTN -=)- EH roj- o 3 oo ro H, oo OJ 1 oo H 1 oo o -=)- 1 OJ o\ o M OJ CO vo s OJ c- o OJ VO s OJ LT\ oo tH OJ -3" o p£| OJ oo VO 3 OJ OJ OJ H a' 9R oo rH o pQ H CO H 1 2 H t- W 1 ^— 1 H VO o 1 H lt\ OJ o H -=t o H > H ro LT\ 1 I 3^ CO 1 -3- 1 o & H o 1 #\ O CO J3- OJ hP O VO 1 1 i O LTN H 1 O -3- o J- o o on oo 1 1 83 • • • 1 1 OJ \ v v ^\ v \ 1 a 1 c o ■rl •H M 1 1 -p CJ ft TO 0) •H w H c ^ Tl ,£> g o a CO CD ■d o G t3 O *h •H d «d P o O 1 A* ?h a> a e o a G O CD 1 a G -H H ^ 1 O -P ,Q CD M o ft O -P G •H 5h CD •H p ^ ft 1 ■a H w *H CD a) -d ft fl 0) H ft £ G ■H G f> •H W) ft cu ,g p •H O CD ft w O P w I O I CD W CD H w w CM O OO LT\ 56 strictly required by the instructions for preparing the < connection- description-card > s (see Section 5.1). The heading card in Fig. 5.3.2 will simply be read by the program and printed character for character onto the output page as an identifica- tion of the particular problem. Below that, the number of variables, number of functions, and the cost coefficients, A and B, will be printed (all with appropriate labels). Also, immediately following will be a statement of what types of external variables are permitted (i.e., either just uncomplemented variables or both complemented and uncomplemented) along with their generic names: X - for uncomplemented variables Y - for complemented variables or U - for uncomplemented variables V - for complemented variables if external variables were implicitly specified if external variables were explicitly specified For example, if both X and Y appear as generic names (as would occur in the case of an implicit specification of external variables with both complemented and uncomplemented variables available) then the external variable names which appear on subsequent output pages will be XI, X2, . . . , Xn and Yl, Y2, . . . , Yn. Or, if both U and V appear as generic names (as would occur in the case of an explicit specification of external variables with both complemented and uncomplemented variables available) the external variable names which appear in the output will be Ul, U2, ..., Un (for the uncomplemented variables) and VI, V2, ..., Vn (for the complemented variables). It should be noted, however, that the letters U and V, as used as replacements for X and Y (respectively) in the 57 naming of external variables (e.g. Ul, VI instead of XI, Yl), appear strictly on the output pages of the program - they are not used internally in the program and they must not appear in the variable names punched on the < connection-description-card > s by the user. They are intended only as an aid to the user so that, at a glance at the transformed network in the output, he can easily distinguish whether the external variables were implicitly or explicitly specified for that particular problem. Following the statement of whether only uncomplemented or both complemented and uncomplemented external variables are employed, the user will find next on the output page the cost of the original network which was input to the program. This is the cost which was defined in the beginning of Section 5. The cost will be followed by a truth table (generally in the same form as Fig. 5.1) showing the outputs (0 or l) of all of the gates in the network for every external variable input combination (i.e., combina- tions of O's and l's) of interest. Finally, below the truth table Will be printed a description of the network submitted as input. This is for documentation purposes, and it is also much more readable than the network description which appeared on the < connection-description-card > s. In this description, each gate is listed along with the names of the gates and external variables which feed it. Also, to assist the user in sketching the network from its description, the level of each gate in the network is included (gates which do not feed other gates are assigned to level 1, all other gates are assigned level numbers such that each gate is in a level one 58 higher than the highest level gate directly fed by it). All of the information just described will be printed before the execution of the transduction actually begins. This will be followed, begin- ning at the top of a new output page, by the network(s) actually obtained as a result of the computation. First the complete, truth table of the transformed network will be printed, followed by a network con- nection description of the form just described above. Finally, the cost of the new network will be calculated and printed. In this example, it was assumed that there were no "don't-cares" in the output functions implicitly specified by the input, thus no < external -variable-card > s or < output-function-card > s were included. In the next example, however, < output-function-card > s will be required in order to specify some of the components of the output functions as "don't-cares". Example 2 : The two output network of four variables shown in Fig. 5.3.1. This is the same network used in Example 1, but this time the output functions are not assumed to be completely specified. Let f = ' H001**01*10*lll ' and f„= ' 0**110111*111011 ' be the required functions. Also, suppose that both complemented and uncomplemented variables are desired to be available during the transduction. Again the problem is to reduce the number of gates primarily and the number of connections secondarily. For this problem, the following values must appear on the < problem -parameter -card >: Cols. l~k k, the number of external variables Cols. 5~8 2, the number of output functions 59 Cols. 9~12 8, the number of gates in the original network Cols. 13~l6 100, the value of A Cols. 17-20 1, the value of B Col. 2k Y, indicative of an implicit specification of external variables and the availability of both complemented and uncomplemented variables Fig. 5-3-3 shows the setup of the data cards corresponding to this problem. Notice the differences and similarities to the data cards shown in Fig. 5.3.2. The < problem-parameter-card > differs only in column 2k. The < external-variable-card > s are missing in both Fig. 5.3.2 and Fig. 5-3-3 since the external variables are implicitly specified for both problems. The < output- function-card > s, however, appear in Fig. 5o3«3 but not in 5-3.2 since they are necessary to specify "don't- care" components which do not occur in the completely specified output functions of Example 1. In both cases, though, the < connection-description- card > s are identical since the original networks are identical. By allowing "don't-care" terms in the output functions, and by allowing the use of both complemented and uncomplemented variables (even though the original network employed only uncomplemented variables), the restrictions during the transduction process are loosened (compared to what they were for Example l), perhaps permitting a network of t In the case of NETTEA-FG1, -PI, and -P2, it is useless to specify Y rather than X in column 2k for this example. Since the original network uses only uncomplemented variables, to these programs which perform "pruning" procedures (i.e., procedures which are incapable of adding new connections) the availability of complemented variable is not meaningful. 6o CO o H H H O O OA O CO o ts O VO O LT\ O ,=f O OO O OJ O H CO o OJ M l H CO H o O H o o °°l 1 x i H s» H O II 1 H O OJ H 3 *l 1 i * O LPv EH EH H o <3 <; * h 9 3 H O 1 g' g O fe fe H *"l i EH 8 -*' g R H H O EH EH II CvJ p p H M O O fe | J-' C\ 1 1 O H hH ^j ^1 1 H P H O CO & O" Fpj o H W !>< p£] 1 « Pn i i H 1 oo H i-q o I PQ H I 3 XI. 1 M ' 1 OJ o O H 3 O O H 3, LT\ H * i H o CO -ah H H I H * * i *\ O H H I EH -=1- H H O O * OJ 1 E EH H H H 1 p O H O -=t- O, OO $ O 1 H 1 (M, • • • O H 1 1 o H O O A v v \ \ Sh O G O ■H c O •H -P o CD G G -P O ft O 'H -P O co co H (U ■d -d i o +3 i 3 G ft O -P -H PS -P O O _, G -d p G «h OJ -d u o -p i ^ G ft O -P .H P - -P O O G -p 3 CO SH -d k S •H W) H O u ft CD .G +^ £ •H O 0) ft CO O •P CO o -P o -p (D W CD H co CO OO OO •H 6l less cost to be obtained. Notice that the first < output -function-card > corresponds to the output of gate 1 and the second < output-function-card > corresponds to the output of gate 2. This must hold true for every problem in which < output -function-card > s are included; the gates labeled 1, 2, . . „ , m must correspond to the output functions specified on < output-function- card > s 1, 2, . .., m, respectively. Of course, the printed output of the program will be in the same format described in Example 1. Example 3 : The three output network of six variables shown in Fig. 5*3 .^. The outputs are again assumed to be incompletely specified. In fact, only the following 11 input combinations are specified out of a possible 6k ( = 2 ) : x l 00000000001 x 2 00000001110 x 3 00000000011 X U 00001110001 X 5 00110010110 x 6 01010101100 F l 001100*0000 F 2 11*1110110* F 3 11000001000 62 X OJ en vd H oo -d" H OJ Lf\ X XXX X X X oo H & .3 C •H rd 6 o OJ C a -p rQ O -P M U O i on bfl ■H 63 Additionally, only uncomplemented variables are assumed to be available, and the problem is to reduce the number of gates primarily and the number of connections secondarily. For this example, the following parameters appear on the < problem-parameter-card >: Cols. l~k 6, the number of external variables Cols. 5~8 3 ? the number of output functions Cols. 9~12 11, the number of gates in the original network Cols. 13~l6 100, the value of A Cols. 17~20 1, the value of B Col. 2k U, indicative of an explicit specification of external variables and the availability of only uncomplemented variables Fig. 5.3.5 shows a possible setup of the data cards corresponding to this example. Notice that in this example, the s are included, whereas in the two previous examples they were omitted. Although this problem is not too realistic (none of the 3 functions is actually a 6-variable function), it demonstrates the input data preparation to be used in cases where many external variables are present and a high percentage of "don't care" terms exist. Again, the printed output from the program will follow the same format described in Example 1. 6k H en 33 H O O ON O OO O C-- O VD O LT\ 0-3- o on o C\J O H 65 REFERENCES [1] H.C. Lai and Y. Kambayashi, "NOR Network Transduction by Generalized Gate Merging and Substitution (Principles of NOR Network Transduction Programs NETTRA-G3 and NETTRA-GU)", to appear as Report, Department of Computer Science, University of Illinois, Urbana, Illinois. [2] H. C. Lai and J. N. Culliney, "Program Manual: NOR Network Pruning Procedures Using Permissible Functions (Reference Manual of NOR Network Transduction Programs' NETTRA-PG1, NETTRA-P1, and NETTRA-P2)", to appear as Report, Department of Computer Science, University of Illinois, Urbana, Illinois. [3] Y. Kambayashi and S. Muroga, "Network Transduction Based on Permissible Functions (General Principles of NOR Network Transduction NETTRA Programs)", to appear as Report, Department of Computer Science, University of Illinois, Urbana, Illinois. [h] J. N. Culliney, H. C. Lai, and Y. Kambayashi, "Pruning Procedures for NOR Networks Using Permissible Functions (Principles of NOR Network Transduction Programs NETTRA-PG1, NETTRA- PI, and NETTRA-P2)", to appear as Report, Department of Computer Science, University of Illinois, Urbana, Illinois. 66 APPENDIX Program Listings Following are the FORTRAN program listings for the two pro- grams, NETTRA-G3 and NETTRA-G^, respectively, discussed in this manual. Many of the variables and arrays used are defined in the program them- selves. c r r *********** ****************** *********** ***************** ****** ********** r pppp RRRR OOC \ GGG RRRR A M M p p R P G G R R A A MM MM p p R R G R R A A M M M M pppp RRRR G GG RRRR AAAAA M M M p R R G G R R A A M M p R R 000 GGG R R A A M M r r r. h n EEEEE TTTTT TTTTT RRRR A r. NN N E T T R R A A C N N N E T T R R A A C N NN EEE T T RRRR AAAAA C N N E T T R R A A CM N EEEEE T T R R A A C r xxxxx GGG G G G G GG G G GGG 33333 3 3 3 3 3 333 ************************************************************************* ****** * * * * * * * * * * * * * * * * * * * ****** IMPLICI c EDITION c r NOTE: A C r COMMON f+ $GT: r. r $LTH: r r $NOe: C r r $PW: r r A: c B: c COST: r ESS1S: C r r F$UBl: r F$l: r r Gl: r GLEVEL: r GSMALL: r HLIST: r r IDXO: r r IDXOE: r r TDXl: r r IDX1E: T INTEGER*4(A-T f V-Zt$)» REAL(U) G3 BBBBBBBBBBBBBBBBBBB8BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBG3 G3 LL COMMON VARIBLES MIGHT NOT BE USED IN THIS PROGRAM. G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 VARIABLES: POINTS TO A 'COLUMN' OF IN THIS COL. TELLS GATE POINTS TO A 'COLUMN' OF IN THIS COL. TELLS HOW POTAB. FOR EACH •ROW THE ENTRY WHERE FN. IS REALIZED. POTAB. FOR EACH 'ROW 1 THE ENTRY MANY CONNECTIONS MUST BE ADDED. POINTS TO A 'COLUMN' OF POTAB. FOR EACH 'ROW' THE ENTRY IN THIS COL. TFLLS THE NUMBER OF 1-ERRORS CREATED IF THIS PQW IS USED. POINTS TO A 'COLUMN' OF POTAB. FOR EACH 'ROW' THE ENTRY IN THIS COLUMN TELLS THE PREFERENCE WEIGHT. WEIGHT FOR NO. OF GATES IN COMPUTING COST FUNCTION. WEIGHT FOR NO. OF CONNECTIONS IN COMPUTING COST FUNCTION. COST OF NETWORK - A MEASURE OF NETWORK SIZE. RECORDS NO. OF ESSENTIAL l'S IN EVERY INPUT TO CURRENT GC0G3 (POSITIONS IN ESSIS CORRES. TO GATES NOT FEEDING GCO ARE G3 IGNORED). G3 POINTS TO LAST ELEMENT IN F $1 . LISTS (CONSECUTIVELY) POSITIONS OF DESIRABLE 1 »S (FOR COVERING) IN A CONNECTIBLE FUNCTION. LABEL OF A PARTICULAR GATE. GLEVEL(GI) TELLS WHICH LEVEL OF THE NETWORK GI IS IN. STORES INTERMEDIATE AND FINAL CALCULATED CSPF'S. HLIST(I.J) GIVES NAME OF I-TH GATE (OR EX. VAR.) IN NET- WORK LEVEL J. LIST OF 0-COORDINATES IN CSPFE OF THE GATE UNDER CONSIDERATION. LIST OF 0-ERROR-COORDINATES IN CSPFE OF THE GATE UNDER CONSIDERATION. LIST OF 1-COORDINATES IN CSPFE OF THE GATE UNDER CONSIDERATION. LIST OF 1-ERROR-COORDINATES IN CSPFE OF THE GATE UNDER G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 00010 00020 00030 00040 00050 30060 00070 00080 00090 00100 00110 00120 001301 00140 00150i 00160! 001701 00180: 001901 00200 00210 00220! 002 30 00240 002 50 00260 002 70 00280 002 90 00300 00310 00320 00330 00340 003 50 00360 IFLAG INC$MX INPTCV I oftTH IPRED I succ JFLAG KEY6 KFYB KFLflG: LEVM LGLIST; LIP) LIORED: LISTT LTSTL : usurc LMTS2 LP1TAB Ml N NFPMAX: NM: NMl: NN2: NCS: NCS I : ^OSISV: NCS2: MOTl: NOT1SV: NOO: NOOE: NOl: NC1E: NR : NJPN2: NRPLC: Nl: N2: CONSIDERATION. G3 SAME AS EYEFLG IN SUBROUTINE PROCII. G3 INC$MX(GI,GJ)>0 MEANS THERE EXISTS A CONNECTION FROM GATE G3 (OR EX. VAR.) GI TO GATE GJ . INC $MX( GI,GJ )«0 IF NOT. G3 LISTS FOR EACH CORRESPONDING ENTRY OF F$l, HOW MANY INPUTSG3 HAVE A •!' IN THE POSITION INDICATED BY F$l. G3 IPATH(GI)=1 MEANS GATE GI IS ON A PATH FROM A CERTAIN GATEG3 T AN OUTPUT GATE. OTHERWISE IPATH(GI) » 0. IPRED(I,GJ) GIVES THE NAME OF THE I-TH GATE OR EX. VAR. A LIST OF GATES AND EX. VAR. FEEDING G J . ISUCC(I,GJ) GIVES THE NAME OF THE I-TH GATE FED BY GJ . SAME AS JAYFLG IN SUBROUTINE PROCII. FLAG INDICATING IF ANY ERROR COMPENSATION HAS BEEN PERFORMED. A FLAG INDICATING IF ANY PRIMARY 0-ERROR-COORDINATES HAS BEEN COMPENSATED. SAME AS KEIFLG IN PROCII. NUMBER OF LEVELS IN THE NETWORK (NOTE EX. ASSIGNED LEVELS JUST LIKE GATES). LGLIST(J) TELLS NO. OF GATES AND EX. VAR. NETWORK. NUMBER OF PREDECESSORS FOR THE GATE UNDER CONSIDERATION. VAR. ARE ALSO IN LEVEL J OF ORDERED LIST OF CONNECTIBLE INPUTS TO GCO. ORDERED BY DECREASING NO. OF O'S IN GCO COVERED. ORDERED LIST OF GATES AND EX. VAR. WHICH ORIGINALLY FED GCO AND WHICH HAVE NOT YET BEEN DISCONNECTED. ORDERED BY DECREASING NO. OF ESSENTIAL l'S. LISUCC(GI) TELLS NO. OF IMMEDIATE SUCCESSORS OF GATE (OR EX. VAR.) GI. UPPER LIMIT OF THE NUMBER OF ELEMENTS IN SET S2. FHR GATE GI, LPOTAB(GI) POINTS TO LAST ROW OF POTAB CONCERNING GI . NUMBER OF NETWORK OUTPUT GATES. NUMBER OF EXTERNAL VARIABLES (OR INPUT FNC.) AVAILABLE. FOR ERROR COMPENSATION PROGRAMS. IF MORE THAN NEPMAX ERROR POSITIONS OCCUR WHEN A PARTICULAR GATE IS REMOVED, PROGRAM SKIPS ATTEMPT t.q COMPENSATE FOR THAT GATE'S PEMOVAL. VALUE CAN BE SPECIFIED BY USER, OTHERWISE EQUAL TO ONE HALF OF N2 BY DEFAULT. SUM OF N PLUS M SUM OF NM PLUS 1. PRODUCT OF N AND N2. NUMBER OF ELEMENTS IN SET S. ELEMENTS IN SET SI. ELEMENTS IN SET SI BEFORE OF OF NUMBER NUMBER RPLCF. NUMBER OF ELEMENTS IN SET NUMBER OF ELEMENTS IN SET NUMBER OF ELEMENTS IN SET PPLTF. NUMBER OF ACTIVE ELEMENTS NUMBER OF ACTIVE ELEMENTS NUMBER OF ACTIVE ELEMENTS NUMBER OF ACTIVE ELEMENTS SUM OF N PLUS R. PRODUCT OF NR AND N2. NOPLCII) STORES THE NUMBER ENTERING SUBROUTINE S2. Tl. Tl BEFORE ENTERING SUBROUTINE IN IN IN IN ARRAY ARRAY ARRAY ARRAY IDXO. IDXOE. IDX1. IDXIE. OF ELEMENTS IN RPLCU,*) FOR I«l,2. SUM PF N PLUS 1. NUMBER OF DIFFERENT INPUT COMBINATIONS TO BE CONSIDERED G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 63 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 33 G3 G3 G3 G3 G3 ORIGIN: P$: PCO: POT NT A: point: POINTL: PGINTP: P3TAB: PPOTAB: P : PPLC RSCONN: RTCONN S SETS SETSl: SE T S2: SETTi STS: SU:$MX; SUMPi SJMS2I T: TIME: JNAME! VFiUBl ! VF$1 : (USUALLY 2 TO THE POWER N). 0RIGIN(GI)=1 MEANS GI ORIGINALLY ORIGIN(GI)=0 MEANS GI P$(i,-) CONSECUTIVELY EVERY GATE (FOR EVERY P$(1,N2) FOR FIRST EX SECOND EX VAR; ... CONNECTEO TO GCO. DID NOT FEED GCO ORIGINALLY. LISTS OUTPUTS OF EVERY EX. VAR. AND INPUT COMBINATION): P$(l,l),..., VAR; P$(l,N2+l),...,P$0 MEANS GATE GJ IS A SUCCESSOR OF GATE GI. G3 SUC$MX(GI ,GJ)«0 IF NOT. G3 SUM OF ALL ACTIVE INPUTS OF THE GATE UNDER CONSIDERATION. G3 SUM OF ALL ACTIVE ELEMENTS OF SET S2. G3 NUMBER OF CONNECTIONS REMOVED FROM A NETWORK. POINTS TO G3 LAST ENTRY IN RTCONN. G3 USED TO STORE AMOUNT OF ELAPSED COMPUTATION TIME. G3 MNEMONIC NAMES FOR EXTERNAL VARIABLES AND GATES. G3 POINTS TO LAST ELEMENT IN VF$1. G3 SIMILAR TO F$l, EXCEPT THIS LISTS JUST COMPONENT POSITIONSG3 (OF O'S IN CSPF VECTOR OF GCO) COVERED ONLY BY REMAINING G3 ORTGINALLY CONNECTED INPUTS TO GCO. COMMON COMMON 1 , 2 , 3 , C3MM0N NEPMAX N R NM LEVM ISUCC( 40,40) M N2 KFLAG NRN2 LISUCC(40) A Nl JFLAG NM1 IPRED(40,40) B NR COST NN2 LIPRED140) G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 00980 Q0990 OiOOO 01010 01020 01030 01040 01050 01060 01070 01080 01090 01100 OHIO 01120 01130 01140 01150 01160 01170 01180 01190 01200 01210 01220 01230 01240 01250 01260 01270 01280 01290 01300 01310 01320 01330 01340 01350 01360 01370 01380 01390 0140C 0141C 0142C 0143C 0144C 0145( 0146( 0147C 0148( 0149( 0150( 015K 0152( 0153< 0154< 01551 01561 0157' 01581 i , INC$MX(40,40), SUC*MX( 40,40), 2 , GLEVEH40) , LGLIST<40) , rcMMON T t RTCONNUOO) COMMON IFLAG ,POINTA ,F$UB1 ,INPTCV(32) ,LISTL(40) ,PO!MTL ,POTNTR ,VF$1(32) MMON P!! T Ae( 200,42), PPCTAB(40) ,IDXO(32) ,R PLC (2, 40) ,IDXlE(32) ,SETS1 ,STS iLIP , NCO ,SLTH 'OMMONJ (40) ,SUMP(32) fNOSl P$(2»U80) t HLIST(40,40) t S , ESS IS (40) ,LISTC(40) ,0RIGIN(40) ,VF$UB1 ,LP0TAB(40) , IDX0EO2) ,SETT1(32) ,SETS(40) ,SETS2(200) tKEYA ,N01E t$NOE ,N0SISV , UNAME<40) G3 , TIME G3 , RSCONN(IOO) G3 ,F$1(32) G3 tPOINTC G3 ,IPATH(40) G3 ,GSMALL(40,32)G3 ,NRPLC(2) ,10X1(32) ,N0T1 ,NOS ,N0S2 ,KEYB ,$GT ,GI ,LMTS2 1005 10 OF OF ,14 ,14 // // ,SUMS2(32) ,NOOE ,N01 ,$PW N0T1SV DIMENSION CNTLIS( 144) , UGAT E( 40 ) ,UHEA0( 20) D» T A K0UNT5 /O/, UBLANK/ 1 •/ 990 PEfiD(5,1000,END=500) UHEAD, N, M, R, A, B, UC , NEPMAX NEPMftX IS THE MAXIMUM ALLOWABLE NUMBER OF ERROR POSITIONS 100C F1RMAT(20A4/5I4,A4,I4) KEYXC=0 IF(UC.NE. UBLANK) KEYXOl C*LL PAGE CALL LINE(IO) KCUNT5=K0UNT5+1 PRIM 2, K0UNT5 2 FC9MAT(20X, •*** OPTIMAL NOR NETWORK *** • , 50X, 'PROBLEM N0.= CALL LINE (4) POINT 1005, UHEAD F0PMAT(25X,20A4) CALL LINE(4) PRIM 10, N,M,A,P FC?MAT(30X,«NUMBEF \ 30X, 'NUMBER 2 30X, 'COST 3 47X, TALL L INE(l) TF(KFYXC.NE.O) GO TO PRINT 21 FORMAT (1H0, 29 X, • UNCOMPLEMENTED GO TO 30 CONTINUE PRINT 28 F0PMA T (1H0,29X,' BOTH COMPLEMENTED AND UNCOMPLEMENTED 1 X, Y •) 30 CONTINUE CALL LINE(5) r***** SET UP EXTERNAL VARIABLES ***** N2=2**N IF(NEPMAX.EO.O)NEPMAX = N2/2 H=N*N2 J = N2 L= 1 1 = DO 1011 11*1, N J = J/2 L = L*2 SN= 1 DO 1010 LL=1 ,L SN=-SN VARIABLES FUNCTIONS COEFFICIENT A •B 25 «',I4// *',I4) 21 25 28 VARIABLES X • I G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 14 ) G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 VARIABLESG3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 009 010 or 001 115 V = (USN)/2 DP 1009 JJ=i,J 1 = 1*1 PSIltll-V IF(KEYXC.NE.O)P$< 1,I*H)»1-V (TNTINU? mNTINUE CONTINUE IF(KEYXC.NE.0 ) N*N+N Nl=N+l MM=K' + M NN2=N*N2+l \Q=N+R NRN2=NP*N2 C«LL 01ITPUT(INCSMX,KEYXC> **** PFAD IN NETWORK INFORMATION READ 1001, CNTLIS F?RMAT(16I5) D r . 1115 GI«1,NR 0? 1115 GJ=1,NP I\C$MX(GI,GJMO 00 1120 1=1,144 TTEM = CNTUS< I) IF( ITEM.EQ.O) GO Tn 1H9 GI*I T EM/100 GJ=ITEM-100*GI INC$MX(GI,GJ )»l GO TO 1120 :OST=A*R+B*( 1-1) GO T P 1130 C3NTINUE CONTINUE r*,LL SUBNET C»LL PVALUE TALL LINE(4) PRINT 1140, COST F1RMHT(20X, 1 ORIGINAL NETWORK CALL LINE(4) CALL TRUTH(Pt,l) CALL LINE(4| CALL CKT( INC$MX,GLFVEL> »*** f N TRY REDUNDANCY CHECK ***** S = T » r 6LL UNNECE GA""ES = M C = CI 4 GI = 1,NR f. « C ♦ LISUCC(GI ) IF(GI.LE.NM)G0T04 ^F(LISUCr (GI ) .GT.0)GATES=GA T ES+1 4 CONTINUE OLDCST = A*GATES ♦ B* ( C ) T = s=o INITIALIZE TIMER TO 10 MINUTES C*LL STIMEZ(60000) T TME = KTIMEZ(O) '** PPHCEDURF GTMERG AND SET UP INC$MX ***** 119 120 130 140 COST-', 15) G3 02200 G3 02210 G3 02220 G3 02230 G3 02240 G3 02250 G3 02260 G3 02270 G3 02280 G3 02290 G3 02300 G3 02310 G3 02320 G3 02330 G3 02340 G3 02350 G3 02360 G3 023 70 G3 02380 G3 02390 G3 02400 G3 02410 G3 02420 G3 02430 G3 02440 G3 02450 G3 02460 G3 02470 G3 02480 G3 02490 G3 02500 G3 02510 G3 02520 G3 02530 G3 02540 G3 02550 G3 02560 G3 02570 G3 02 5 80 G3 02590 G3 02600 G3 02610 G3 02620 G3 02630 G3 02640 G3 02650 G3 02660 G3 02670 G3 02680 G3 02690 G3 02700 G3 02710 G3 02720 G3 02730 G3 02740 G3 02750 33 02760 G3 02770 G3 02780 33 02790 G3 02800 TALL GTMERG CALL FOR ELAPSED TIME G3 021 G3 02 TTME = KTIMEZCO) - TIME G3 02 CALL LINE<4) S3 02 PRINT 3915 G3 02 ?916 FOPMAT(20X, 'TIME ELAPSED =',I8,» CENTI SECONDS* ) G3 02 3915 FPPM^120X,'NE T WORK DERIVED BY GTMERG') G3 021 P'lM 3916, TIME G3 02 CALL IINEU) G3 021 PALL TRUTH(P$,1) 33 02' ^LL LINF<4) G3 02" ^ALL CKT( INC$MX,GLEVEL) G3 02< GA T ES = M G3 02 r = G3 02' DP 36 GI = 1 ,NR G3 02« C = C + LISUCCCGI ) S3 02' IF(GI.LE.NM) GO TO 36 G3 02< IF(LISUCC(GI ) .GT.O) GATES * GATES + 1 G3 02< 36 CONTINUE S3 02< NFWCST = A*GATES + B*C G3 03C IF(NFWCST.LT.CLDCST)GO TO 37 G3 03( P5INT 105 G3 03( 105 F~RMA T (1H ,10X,'NG REDUNDANCY FOUND.') G3 03( GO TO 990 G3 03( 37 C*LL LINEC3) G3 03( PRINT 320,NEWCST G3 03( 320 F0RM*T(9X,'* A NETWORK DERIVED BY GTMERG'/9X,' COST = ',15, '.') G3 03( GO to 99 G3 03C 500 STOP G3 03C END G3 031 SUBROUTINE MINI2 ( IMPRQV ) G3 031 C EDITION AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG3 03] C THE NAME AT T EMPTS TC INDICATE THAT THIS SUBROUTINE IS A MINIATURE G3 031 r VERSION OF PROCEDURE II (PROCII) - ACTUALLY, THIS ROUTINE ONLY G3 031 C REMOVES CONNECTIONS, NONE ARE ADDED G3 031 IMPLICIT INTEGER*4(A-T,V-Z, %) , REAL(U) G3 031 c G3 031 C DEFINITIONS OF 'CCMMCN' VARIABLES CAN BE FOUND IN MAIN PROGRAM. G3 031 r G3 031 COMMON NEPMAX G3 032 COMMON N , M , A t B G3 032 1 , R , N2 , Nl , NR G3 032 2 , NM , KFLAG , JFLAG , COST G3 032 3 , LEVM , NRN2 , NM1 , NN2 G3 032 COMMCN ISUCC(40,40) , LISUCC<40) » IPRED(40,40) , LIPRED(40) S3 032 1 , INC$MX(40,40) , SUC$MX(40,40), P$<2,1280) , UNAMEKO) G3 032 2 , GLFVEL140) , LGLIST(40) , HLIST(40,40) , TIME G3 032 r CMMON T , RTCONN(IOO) , S , RSCONNt 100) G3 032 CCMMON IFLAG ,POINTA ,ESS1S(40) ,F$1(32) G3 032 ,F$UB1 ,INPTCV(32) ,LISTC<40) ,PCINTC G3 033 2 ,LISTLU0) ,POINTL ,0RIGIN(40) ,IPATH<40) G3 033 3 ,PCIMTR ,VF$1(32) ,VFtUBi ,GSMALL<40,32)G3 03: CCMMON P0TAB(200,42),PP0TAB(40) ,LP0TAB(40) ,NRPLC(2) G3 033 1 ,RPLC<2,40) ,10X0(32) ,IDX0E(32) tIDXK321 G3 033 2 ,IDX1E(32) ,SUMP(32) ,SETT1<32) ,N0T1 G3 033 3 ,SETS1(40) ,N0S1 ,SETS(40) ,NOS G3 033 4 ,STS ,SUMS2<32) ,SETS2(200) ,N0S2 G3 033 5 ,LIP, ,NC0E ,KEYA ,KEYB G3 033 6 ,N00 ,N01 ,N01E ,$GT G3 033 7 , $L T H ,$PW ,$NOE ,GI G3 03400 r r 'MM0N N0T1SV ,N0S1SV tLMTS2 G3 03410 DIMFNSION UPRED(4C) ,T2PPFD(40) ,GORDER (40 ) , F$0 (32 1 , MARKED! 40 ) G3 03420 OIMFNSIGN JSED( 40) ,TORDER(40I G3 03430 TMOppv =0 G3 03440 T = G3 03450 ^ROFR GATES IN GOPDEP G3 03460 EFLAG =0 G3 0347C GC T G 63 G3 03480 THIS ENTRY POINT FOR CALCULATION OF GOPOER ONLY G3 03490 EK T RY FCRMGO - G3 03500 EFLAG =1 G3 03510 >3 CONTINUE G3 03520 COUNT = G3 03530 D" 1 I=1,LEVM G3 03540 NMINLV = LGLIST(I) S3 03550 IF(NMINLV.EQ.0)G0TC1 G3 03560 OH 2 J=l,NMINLV G3 03570 COUNT = CUNT + 1 G3 03580 GCROERICOUMT) = HLIST(J,I> G3 03590 2 r CNTINUE G3 03600 1 CNTIKUE G3 03610 IF(FFLAG.EQ.l )PETUPN G3 03620 CALCULATE NUMBER OF OUTPUTS OF EACH GATE G3 03630 (THE ARRAY •USED' TS USED HERE JUST TEMPORARILY) G3 03640 DC 51 I=M1,NR G3 03650 TCOUNT =0 G3 03660 DC 52 J=1,NP G3 03670 IF( JNCSMXU, J ).EQ.1)TC0UNT = TCOUNT + 1 G3 03680 I? CONTINUE G3 03690 TCOUNT NOW CONTAINS THE NUMPER OF OUTPUTS OF GATE I G3 03700 USFD( I) = t;o UNT g3 03710 il CONTINUE G3 03720 MOST =0 G3 03730 D" 53 I =N1,NR G3 03740 IF(USED( I ).GT.MOST)M0ST = USED(I) G3 03750 13 CONTINUE G3 03760 DO 56 1= 1,N1 G3 03770 6 TORDFP(I) = I G3 03780 TPOINr = Mi C3 03790 MfST = MOST «■ 1 G3 03800 MOST = MOST - 1 G3 03810 IF(M0ST.LT.O)GC TO 54 G3 03820 DC 55 1=1, MP G3 03830 II = GOKDE°(I ) G3 03840 IF( II.LE.N)GO TO 55 G3 03850 IF(USED( II).NE.MOST)GO TO 55 G3 03860 TrRDER(TPrTMT) = II G3 03870 TPCINT = TPCINT +1 G3 03880 5 rrNTTNUE G3 03890 G? T 50 G3 03900 4 COMTTNUF G3 03910 INI -I AL I ZF GSMALL G3 03920 D^ 4 !«N1,NM G3 03930 X = ( I-1)*N2 G3 03940 Or 4 J=1,N2 G3 03950 Y = P$( 1 , X+J) G3 03960 IF(Y.FO.O)GSMALL( I, J) = -100 G3 03970 IF( Y.EO.l )GSMALL(I ,J) = 1 G3 03980 IF( Y.FQ.-1)GSMALL( I,J)=0 G3 03990 4 CrfJT^NUE G3 04000 EFLAG =0 G3 GO to 57 G3 ENTRY INITGS G3 EFLAG =1 G3 57 DO 3 I'liNR G3 USEDd ) = G3 IFI I.LT.NDGO TO 58 G3 IF( I.GT.NM) GO TO 58 G3 GO TO 3 G3 58 0: 59 J « 1,N2 G3 59 GSMALLU tJ) = S3 3 CONTINUE G3 DC 62 I = \ll,NM G3 USED« I ) = 1 G3 62 CONTINUE G3 INITIALIZATION G3 OH 34 I=1,NP G3 GATE = GORDER(I) G3 IF(GATE.LT.N1 )G0 TO 34 G3 XX= LTPrED(GATE) G3 IF(XX.EQ.0)G3T034 G3 F$UB1 =0 S3 F$UPO = G3 DC 35 J=1,M2 G3 roMPN T = GSMALKG»TE,J) G3 IFCC?MPNT.EQ.O)GO TO 35 G3 IF(COMPNT.LT.O)GC to 36 G3 IF48 T1SUB = TISUB ♦ 1 TIPPED(TISUB) = I CCNTINUE DO 18 I«=1,X Y = < T IPPED( I )-1 ) *N2 D° 19 J=1,F$UB1 G3 04620 G3 04630 G3 0464C G3 04650 G3 04660 G3 046 70 G3 04680 G3 04690 G3 04700 G3 04710 G3 0472C G3 04730 G3 04740 G3 04750 G3 04760 33 04770 G3 04780 G3 04790 G3 04800 G3 04810 G3 04820 S3 04830 G3 04840 G3 04850 S3 04860 G3 04870 G3 04880 G3 0489C G3 04900 G3 04910 G3 04920 G3 049 30 S3 04940 G3 049 50 G3 04960 S3 0497C G3 04980 G3 04990 S3 05000 G3 05010 G3 05020 S3 05030 G3 05040 G3 05050 G3 0506C G3 05070 G3 05080 G3 05090 G3 05100 G3 05110 G3 05120 S3 05130 S3 05140 G3 05150 G3 05160 G3 05170 G3 05180 33 05190 G3 05200 G3 05210 33 05220 20 21 19 18 22 46 45 27 24 47 49 = F$1(J) IF(P$(ltY+Q).NE.l )G0 TO 19 IP(INPTCViQ).LE.O) GO TO 20 INJPTV(O) = INPTCV(Q) ♦ 1 G^ TO 19 IF( IMPTCVtQ).LT.O)GO TO 21 INP T :V(0) = -TIPRED(T) GO TO 19 TMPTCV(Q) = 2 CTNJTINUE CONTINUE MAPK ESSFNTTAL 1' S D^ 22 I=X,F$UB1 = INPTCV(F$1(I) ) IF(0.GE.0JG3 TO 22 ESMSt-Q) = ESSIS(-Q) ♦ 1 CONTINUE SELECT = BFSTSL = DO 45 L=l f X Q = TIPRED(L) IF( INC$MX(Q,GCO).EQ.0)GCTO45 IF(ESS1S(Q).GT.O)GCT045 TF(SELECT.EQ.O)SELECT = Q IF(USED(0).EQ.1)GCT045 IF(eESTSL.^E.0)G0T045 BESTSL = CONTINUE IF(SELECT.EO.O)GO TO 47 Q = SELECT IF(BESTSL.NE.O)Q = BESTSL IF HERE, GATE HAS NO ESSENTIAL INf $*X(Q,GCD) = T = T ♦ 1 UPD/TE ESSIS Y = (Q - 1)*N2 01 24 J=1,F$UB1 V = F$l(JJ IF(P$(1,Y*V).NE.1)G0 TO 24 UPDATE INPTCV FOR COMPONENT V INPTCV(V) * INPTCV(V) - 1 IF(INPTCV(V).GT.l )G0 TO 24 CASE WHEN NEW ESSEN 1 CREATED DC 27 K = 1,X W = TIPRED(K) IF< INC$MX(W,GCC).EQ.O) GO TO 27 Z = (W - 1) * N2 IF(P$(l,Z+V).EQ.O)GO TO 27 ESSIS(W) = ESSIS(W) + 1 IN THIS CASE, NO NEED TO UPDATE GSMALLCGCOt V) = -W GO TO 24 CONTINUE CINHNUE GOT 046 01 49 I = 1,NP IF( INC$MX(I,GC0).E0.0)G0T0 49 T2SUB = T2SUB + 1 T2PRED(T2SUB) = I CONTINUE N?W ALL CURRENT INPUTS HAVE ESSENTIAL l'S - REMOVE IT INPTCV FURTHEP l'S G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 33 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 33 G3 G3 G3 G3 G3 G3 G3 33 G3 G3 S3 G3 G3 G3 G3 G3 S3 G3 33 G3 G3 S3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 S3 G3 G3 33 G3 G3 53 05230 05240 05250 05260 05270 05280 05290 05300 05310 05320 05330 05340 05350 05360 05370 053 80 05390 05400 05410 05420 05430 05440 05450 05460 05470 05480 05490 05500 05510 05520 05530 5540 05550 05560 05570 05580 05590 05600 05610 05620 05630 05640 05650 05660 05670 05680 05690 05700 05710 05720 05730 05740 05750 05760 05770 05780 05790 05800 05810 05820 05830 I MPUTS ORDER STILL CONNECTED TO GCO ARE LISTED IN T2PRED IN REVERSE ?n 61 29 33 32 JPD^TE G(I)'S OF THOSE GATES STILL CONNECTED TO GATE GCO OT 29 II=1,F$UB1 T = F$l( II) CHOKE = -GSMALL(GCO,T) IF*♦* SUBROUTINE GTMERG IMPLICIT IMTEGER*4(A-T t v-Z), PE THIS SUBFOUTINE TRIES TO MERGE WHTSE CSPF'S IS MOT EMPTY, TO C OF THEIP CSPF'S ****** AL(U) TWO GATES, THE INTE NE WHICH IS INSIDE PSECTION OF THE INTERSECTI DEFINITirviS DF 'COMMON' VARIABLES CAN BE FOUND IN MAIN PROGRAM. COMMON NEPMAX COMMON isj 1 , R 2 , NM 3 , LEVM KMMCN !SUCC(40,40) 1 , IN:$MX(40,40 2 , GLEVEH40) C P MMCN T COMMON IFLAG ! , FtUBl 2 ,LISTL<40) 3 ,POINTR COMMON P0TAB(200,42 ,PPLC(2,40) , IDX1E(32) ,SETS1 (40) ,STS ,LIP ,N00 COMMON iLTH M N2 KFLAG NRN2 LISUCC( SUC$MX( LGLIST( PTC0NN( ,POINTA ,INPTCV(3 ,POINTL ,VF$1( 32) ),PP0TAB(4 ,IDX0(32) ,SUMP(32) ,N0S1 ,SUMS2(32 ,M0OF ,N01 ,$PW N0T1SV 40) 40,40) 40) 100) 2) 0) A Nl JFLAG NMl IPRED(40,40 PS<2,1280) , HLIST(40,40 , S ,ESS1S(40) ,LISTC<40) ,0RIGIN(4C) ,VF$UB1 ,LPCTAB(40) ,IDXOE(32) ,SETT1(32) ,SETS(40) ,SETS2(200) ,KEYA ,N01E ,$NOE ,N0S1SV , B , NR , COST , NN2 ) , LIPRED(40) , UNAMEC40) ) , TIME , RSCONNdOO ,F$1(32) .POINTC , I PATH (40) ,GSMALL(40,3 ,NRPLC(2) ,10X1(32) ,N0T1 ,N0S ,N0S2 ,KEYB ,tGT ,GI$SS$ ,LMTS2 G3 G3 G3 0NG3 G3. G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 G3 ) G3 G3 G3 G3 2)G3 G3 G3 G3 G3 G3 G3 G3 G3 33 06130 06140 06150 06160 06170 06180 06190 062 00 06210 06220 06230 06240 062 50 06260 06270 062 80 06290 06300 06310 06320 06330 06340 06350 06360 06370 063 80 06390 06400 06410 06420 c**** 5 ***** 6 <"**** " 7 r ***** r***** 8 £***** 10 r***** il >~ r ***** 12 r***** 13 C ***** 15 r***** 16 r ***** 17 r ***** "***** 18 DIMENSION INDEX0(32),INDEX1<32) ,LICAND<40) CONTINUE C«.LL MINI2(IMPR0VJ NR1=NR-1 DO 59 GI=NM1,NRI IPCGLEVEHGI I.EO.l) GO TO 59 BSGI=(GI-1)*N2 GI1=GI+1 00 49 GJ=GI1 ,NR IFtGLEVELCGJI.EQ.l .OR- I NC$MX< GI f G J) .GE. 1 .OR. INC$MX(GJ,GI J.GE.l) GO TO 49 KGIGJ=0 KGJGI=0 N00 = N01 = BSGJ=CGJ-1)*N2 OH 19 TH=1,N2 IF(GSMALL(GI,TH) ) 5,10,15 ~H OF GI IS A »0' ***** TF(GSMALL(GJ,TH)) 6,7,8 T H OF GI *ND GJ ARE BOTH '0' ***** NO0=NO0+l INDEXO(NOO)=TH GO TO 19 TH TF GI IS A '0' AND TH OF GJ IS IF(P$(l,8SGJ+TH).EQ.O) GO TO 6 GJ CAN N0 T SUBSTITUTE FOR GI ***** KGJGI=1 GO TO 6 GI, GJ CAN GO TO 49 A i*t ***** NOT BE MERGED TQ ONE GATE ***** 19 GSMALL(GI,TH) IS A DON'T CARF ***** IF(GSMALL(GJ,THI> 11, 12, 13 TH OF GJ IS A '0' ***** IF(P$(l,BSGI+TH).EQ.O) GO TO 6 KGIGJ=i GO TO 6 BDTH GI *ND GJ ARE DON'T CARES ***** GO TO 19 CORRESPONDING COMPONENT OF GJ IS '1' ***** IF(P$(l,BSGH-TH).EQ.l) GO TO 18 KGIGJ=l GO TO 18 GSMALKGI ,TH) ISA »1' ***** IF(GSMALL(GJ,TH) ) 16, 17, 18 GI AND GJ CAN NOT BE MERGED TO ONE GATE ***** GO TO 49 GSMALL(GJ,TH) IS A DON'T CARE ***** IF(P$(l,BSGJ+TH».EQ.l) GO TO 18 GJ CAN NOT SUBSTITUTE FOR GI ***** KGJGI=1 BOTH GSMALK GI,TH) AND GSMALL ( GJ,TH) ARE '1' ***** N01*N01+1 INDEXKN01 )=TH :CNTINUE r***** GI AND GJ MAY BE MERGED ***** IF (KGIGJ.EQ.O.AND.SUC$MX=gk r PN T TNUE IF(CANDDT.EQ.O) GO TO 49 On 30 NfUJN=l,N00 SUMP(NFUN)=0 DP 35 CAND*1»CANDDT GK=LIC*NDJS 3F 'CHMMON 1 VAPIABLES CAN ; i { G3 7730 G3 07740 SUMMON NEPMAX G3 07750 T.jMMON N ♦ M , A , B G3 07760 1 t R » N2 t Nl , NR G3 07770 2 f NM , KFLAG , JFLAG , COST G3 07780 3 ♦ LEVM t NPN2 , NM1 , NN2 G3 07790 AMNION ISUCC(40,40) , LISUCC(40) , IPRED(40,40) , LIPRE0(40) G3 07800 1 f INC$MX(40,40) , SUC$MX<40,40), P$(2,1280) , UNAME(40) G3 07810 2 , GLEVEH40) , LGLI ST( 40) , HLIST(40,40) ♦ TIME G3 07820 COMMON T , RTCONN(IOO) t s , RSCONNt 100) 33 07830 COMMON IFLAG ,POINTA , ESS1SC40) ,F$1(32) G3 7840 1 ,F$U31 ,INPTCV(32) ,LISTC(40) ,POINTC G3 07850 2 ,LISTL(40) ,PCINTL ,0RIGIN(40) ,IPATH(40) G3 07860 3 ,POIMTR ,VF$1(32) ,VF$UB1 ,GSMALL<40,32)G3 07870 COMMON P0TAB<200,42),PPQTftB(40) ,LP0TAB(40) ,NRPLC<2) G3 07880 1 ,RPLC<2,40) ,10X0(32) ,IDX0E<32) ,IDX1(32) G3 7890 2 ,IDX1E(32) ,SUMP<32) ,SETT1(32) ,N0T1 G3 07900 3 ,SETS1(40) ,N0S1 ,SETS(40) ,NOS G3 07910 4 ,STS ,SUMS2(32) ,SETS2(200) ,N0S2 G3 079 20 5 ,LIP ,NOOE ,KEYA ,KEYB G3 07930 6 ,N00 ,NOl ,N01E ,$GT G3 07940 7 ,$LTH ,$PW ,$N0E ,G$$$$$ G3 07950 COMMON N0T1SV ,NCS1SV ,LMTS2 G3 07960 DIMENSION X(4C) ,LX(40,2) ,OUT0(40) G3 07970 ENTFY PRESUC G3 07980 CON T INUE 33 07990 DO 10 GI=1,NR G3 08000 LS = G3 08010 LP = G3 08020 DO 5 GJ=1»NR G3 08030 IF(INC$MX(GI,GJ).EO.O) GO TO 3 G3 08040 LS=LS+1 G3 08050 ISUCC(LS,GI)=GJ G3 08060 GO TO 5 G3 08070 IF( INC$MX(GJtGI ).EQ.O) GO TO 5 G3 08080 LP=LP+1 G3 08090 JPPED(LP,GI)=GJ G3 08100 CONTINUE 33 08110 LI5UCC(GI)=LS G3 08120 LIPRED(GI)=LP G3 08130 CONTINUE G3 G3 08140 08150 ENTFY SUCCES G3 08160 DO 21 GI=1,NR G3 08170 O r 21 GJ=1,NP G3 08180 SUC$MX(GI,GJ)=0 G3 08190 CONTINUE G3 08200 DO 30 GJ=N1,NR 33 08210 D^ 22 GS=1,NR G3 08220 X(GS)=0 G3 O8230 22 CONTINUE G3 08240 X(GJ)=1 G3 08250 L0 = ! G3 08260 LX(1,1)=GJ G3 08270 V=l G3 08280 23 CONTINUE G3 08290 V=l-V 33 08300 SW0=1+V G3 08310 SW1=2-V G3 08320 L1=0 S3 08330 DO 28 LL=1,L0 G3 08340 GM=LX(LL,SW0> G3 08350 LIP=LIPRED(GM) 33 08360 IF(LIP.EQ.O) GO TO 28 G3 08370 OC 26 LP=I,LIP G3 08380 GP=!PRE0(LP,GM) G3 08390 IFIX(GP).GT.O) GO TO 26 G3 08400 SUC$MX(GP,GJ)=1 S3 08410 L1*L1+1 G3 08420 LX(LJtSWl ) = GP G3 08430 X(GP)=1 G3 08440 26 CTNTINUE G3 08450 28 CONTINUE 33 08460 IP(Ll.EO.O) GO TO 30 G3 08470 L0=L1 G3 08480 GO T 23 G3 08490 30 C3NTINUE G3 08500 C G3 08510 <~ ENTPY LEVEL G3 08520 DH 40 GJ=1,NR G3 08530 TUTO(GJ)=LTSUCC(GJ) G3 08540 GLEVEL(GJ)=-1 33 08550 40 r ONTINUE G3 08560 LEV = G3 08570 45 LEV=LFV*1 33 08580 G = G3 08590 D"» 50 GJ=1,NR G3 08600 TF(3UT0; LIPPED: LTSTC : LISTL: Lisurr: LMTS2; LPOTAB: M: N: NEPMA.X: NM NMU NN2: NOS: NOSl: NCS1SV: NCS2: MDT1: NOT1 SV: NOO NOOE NOl NOIE NR NFN2 MRPLC Ml M2 CONSIDERATION. G4 SAME AS EYEFLG IN SUBROUTINE PPOCII. G4 IN r *MX(GI ,GJ)>0 MEANS THERE EXISTS A CONNECTION FROM GATE G4 (3R EX. VAP.) GI TO GATE GJ. I NC$MX(GI . GJ ) »0 IF NGT. G4 LISTS FOR EACH CORRESPONDING ENTRY OF F$l, HOW MANY INPUTS34 H*VE A »1» IN THE POSITION INOICATED BY F$l. G4 IP*.TH(GI)»l MEANS GATE GI I S ON A PATH FROM A CERTAIN GATEG4 TO AN OUTPUT GATE. OTHERWISE IPATH(GI) « 0. 34 IPREDUtGJ) GIVES THE NAME OF THE I-TH GATE OR EX. VAR. ING4 A LIST OF GATES AND EX. VAR. FEEDING GJ. G4 ISUCC(I,GJ) GIVES ^HE NAME OF THE I-TH GATE FED BY GJ . G4 SAME AS JAYFLG IN SUBROUTINE PROCII. G4 * FLAG INDICATING IF ANY ERROR COMPENSATION HAS BEEN G4 PERFORMED. G4 * FLAG INDICATING IF ANY PRIMARY 0-ERROR-COORDINATES HAS G4 BEEN COMPENSATED. 34 SAME AS KEIFLG IN PROCII. G4 NUMBER OF LEVELS IN THE NETWORK (NOTE EX. VAR. ARE ALSO G4 ASSIGNED LEVELS JUST LIKE GATES). G4 LGLIST(J) TELLS NO. OF GATES AND EX. VAR. IN LEVEL J OF G4 NE T WOPK. G4 NUMBER OF PREDECESSORS FOR THE GATE UNDER CONSIDERATION. G4 LIPRED(GI) TELLS NO. OF IMMEDIATE PREDECESSORS OF GATE GI.G4 GCO, ORDERED BY ORDERED LIST OF CONNECT IBLE INPUTS TO DECREASING NO. OF 0' S IN GCO COVERED. ORDERED LIST OF GATES AND EX. VAR. WHICH ORIGINALLY FED g;o and which have not yet BEEN DISCONNECTED. ORDERED BY DECREASING NO. OF ESSENTIAL 1»S. LISUCC(GI) TELLS NO. OF IMMEDIATE SUCCESSORS OF GATE (OR EX. VAR.) GI. UPPER LIMIT OF THE NUMBER OF ELEMENTS IN SET S2. FOR GATE Git LPOTAB(GI) POINTS TO LAST ROW OF POTAB CONCERNING GI . NUMBER OF NETWOPK OUTPUT GATES. NUMBER OF EXTERNAL VARIABLES (OR INPUT FNC.) AVAILABLE. FOR ERROR COMPENSATION PROGRAMS. IF MORE THAN NEPMAX ERROR POSITIONS OCCUR WHEN A PARTICULAR SATE IS REMOVEO, PROGRAM SKIPS ATTEMPT TO COMPENSATE FOR THAT GATE'S REMOVAL. VALUE CAN BE SPECIFIED BY USERt OTHERWISE EQUAL TO ONE HALF OF N2 BY DEFAULT. SUM OF N PLUS M SUM OF NM PLUS 1. PRODUCT OF N AND N2. NUMBER OF ELEMFNTS IN ELEMENTS ELEMENTS NUMBER NUMBER RPLTF. NUMBER NUMBER NUMBER RPLCF. NUMBER NUMBER NUMBER NUMBER SUM OF CF OF IN IN OF OF OF OF OF OF OF N ELEMENTS ELEMENTS ELEMENTS IN IN IN SET SET SET SET SET SET S. SI SI BEFORE ENTERING SUBROUTINE ACTIVE ACTIVE ACTIVE ACTIVE PLUS R. ELEMENTS ELEMENTS ELEMENTS ELEMENTS S2. Tl. Tl BEFORE ENTERING SUBROUTINE IN ARRAY IDXO. IN ARRAY IDXOE. IN ARRAY IDX1. IN ARRAY IDXIE. PRODUCT OF NR AND N2 . NRPLC(I) STORES THE NUMBER OF ELEMENTS IN RPLCUt*) FOP I»l ,2 SUM OF NUMBER N PLUS 1. OF DIFFERENT INPUT COMBINATIONS TO BE CONSIDERED 34 G4 G4 34 G4 G4 G4 G4 34 G4 34 G4 G4 G4 G4 G4 G4 54 G4 34 G4 G4 G4 G4 34 G4 34 34 G4 G4 34 G4 G4 G4 G4 34 G4 34 (USUALLY 2 TO THE POWER N) ORIGIN PS PCO: POINT A: P°INTT: PO!N T L POINTR: P3 T AB PPOTA8: R: 'PLC: RSCGNN: RTCONN! S: SE r S: SETSl: SFTS2: SFTTl: STSs SU r $MX: SUMP: SUMS2: T: TIME: UNAME: VFSUB1: VF$l: ORIGIN(GI ) = 1 MEANS GI ORIGINCGI )=0 MEANS GI P$(l,-> CONSECUTIVELY EVERY GATE (FOR EVERY P$(1,N2) FOR FIRST EX se:ond ex var; ... ; ORIGINALLY CONNECTED TO GCO. DID NOT FEED GCO ORIGINALLY. LISTS OUTPUTS OF EVERY EX. VAR. AND INPUT COMBINATION!: P*(l,l),..., VAR; P$(1,N2*1),...,P$(1,2*N2) FOR P$(1,N*N2*1), ..., P$(1,N*N2*N2) FOR FHST GATE; ETC. P$(2,-) IS USED AS WORK SPACE FOR CALCULATIONS ASSOCIATED WITH P$(l,-). FOR ERROR COMPENSATION PROCEDURES. PCO REMOVED FROM ORIGINAL NETWORK TO OBTAIN NETWORK. NOT USED. POINTS TO POINTS TO POINTS TO POSSIBLE LAST ELEMENT LAST ELEMENT LAST ELEMENT OUTPUT TABLE. IS THE GATE CURRENT ALTERED IN LISTC. IN LISTL. IN RNEC1 (IN SUBROUTINE SUBSTI) HOLDS INFORMATION ABOUT ALL NOTE RPLC( SOME It*) PPLC(2,*) LIST LIST r OMBI NATIONS OF CONNECTIONS TO FORM NEW (AND HOPEFULLY USEFUL) FUNCTIONS. FOR GATE GI, PPOTAB(GI) POINTS TO FIRST OF A SEQUENCE OF ROWS OF POTAB CONCERNING GI. NUMBER OF GATES IN THE NETWORK (EXCLUDES EX VAR, ALSO OF R GATES MAY BE ISOLATED). STORES THE SELECTED GATE'S IP GATES WHICH HAVE ERROR-COORDINATES OF WEIGHT 2 DR ABOVE. STORES THE SELECTED GATE'S IP GATES WHICH HAVE AT LEAST ONE ERROR-COORDINATE OF WEIGHT 1. OF CONNECTIONS ADDED TO A NETWORK (IN CODED FORM). OF CONNECTIONS REMOVED FROM A NE T WORK (CODED FORM). NO. OF CONNECTIONS ADDED TO A NETWORK. POINTS TO LAST ENTRY IN RSCONN. SET s CONSISTING OF INPUTS OF THE GATE UNDER CONSIDERA T WHICH ARE TO BE REPLACED IF POSSIBLE. SET SI CONSISTING OF ELEMENTS OF SET S WHICH CAN BE REPLACED BY ELEMENTS IN SET S2. SET S2 CONSISTING OF FUNCTICNS WHICH ARE CANDIDATES FOR REPLACING ELFMENTS IN SET S. SET Tl CONSISTING OF ESSENTIAL ONES COVERED BY ELEMENTS SET SI. STARTING ELEMENT OF SET S. SUC$MX(GI,GJ)>0 MEANS GATE GJ IS A SUCCESSOR OF GATE GI. SUC$MX(GI ,GJ)«0 IF NOT. SUM OF ALL ACTIVE INPUTS OF THE GATE UNDER CONSIDERATION. SUM OF ALL ACTIVE ELEMENTS OF SET S2. NUMBER OF CONNEXIONS REMOVED FROM A NETWORK. POINTS TO LAST ENTRY IN RTCONN. USED TO STORE AMOUNT OF ELAPSED COMPUTATION TIME. MNEMONIC NAMES FOR EXTERNAL VARIABLES AND GATES. POINTS TC LAST ELEMENT IN VF$l. G4 G4 G4 G4 G4 G4 G4 G4 54 G4 G4 34 G4 34 G4 G4 34 G4 G4 G4 G4 34 G4 G4 3 4 G4 G4 G4 G4 G4 G4 1 0NG4 34 G4 3* G4 G4 ING4 G4 G4 34 G4 34 34 G4 G4 34 G4 G4 SIMILAR TO (IF O'S IN ORIGINALLY F$l, CSPF CONNECTED EXCEPT THIS LISTS JUST COMPONENT P0SITI0NSG4 VECTOR OF GCO) COVERED ONLY BY REMAINING G4 INPUTS TO GCO. 20MMON COMMDN 1 i 2 3 , T^MMON NEPMAX N P NM LEVM isur.c(40»40i M N2 KFLAG NRN2 LISUCC(40) A Nl JFLAG NM1 IPRED(40,40) B NR COST NN2 LIPPED(40) 34 G4 G4 34 G4 34 34 G4 54 G4 00970 00980 00990 01000 01010 01020 01030 01040 01050 01060 01070 01080 01090 01 1 00 OHIO 01120 01130 01140 01150 01160 01170 01180 01190 01200 01210 01220 01230 01240 012 50 01260 0127C 01280 01290 01300 01310 01320 01330 01340 01350 01360 01370 01380 01390 01400 01410 01420 01430 01*40 01450 01460 01470 01480 01490 01500 01510 01520 01530 01540 01550 01560 01570 1 2 t C?MMON COMMON I* • HLIST(40,40) t S ,ESS1S(40) ,LISTC(40I ,0RIGIN(40) ,VF*UB1 ,LPOTAB(40) .IDXOEI32) ,SETT1(32) ,SETS<40> »SETS2(200) ,KEYA fNOlE t$NOE .NCSISV t UNAME140) t TIME t RSCONN(IOO) ,F$1(32) ,POINTC , I PATH (40) G4 34 G4 G4 G4 G4 ,GSMALL(40,32)G4 ,NRPLC(2) ,IDXl(32) ,NOTl tNOS ,NCS2 fKEYB ,$GT tGI tLMTS2 ,IDX0(32) ,SUMPC32) ,NGSl ,SUMS2(32) ,NOOE ,N01 ,$PW N0T1SV DIMFNSION C^TLISt 144) , UGATE( 40) f UHEADI20) DATA K0UNT5 /O/, UBLANK/' »/ 990 PEAD(5,1000,END=500) UHEAD, N, M, R, A, B, UC, NEPMAX r NEPMAX IS THE MAXIMUM ALLOWABLE NUMBER OF ERROR POSITIONS 1000 FnRM4T(20A4/5I4,A4,I4l KEYXC*0 IF(UC.NE. UBLANK) KEYXC=1 CALL PAGE CALL LINE(IO) KQUNT5=K0UNT5U PRINT 2, K0UNT5 2 FD°MAT(20X, •*** OPTIMAL NCR NETWORK ***» ,50X ,' PROBLEM N0.= ',14 ) CALL LINE(4) PRINT 1005, UHEAD 1005 FDRMA T (25X,20A4) CALL LINE(4) PRINT 10, N,M,A,B 10 F3RMAT(30X, 'NUMBER 1 30X, 'NUMBER 2 30X,'C0ST 3 47X, CALL LINE(l) IF(KEYXC.NE.O) GO TO PRINT 21 21 FORMAT( IH0,29X,' UNCOMPLEMENTED VARIABLES GO TO 30 25 CONTINUE PRINT 28 28 FIRMATdHO, 29X, • BOTH COMPLEMENTED 1 X, Y • ) 30 CONTINUE CALL LINE(5) £***** SET UP EXTERNAL VARIABLES ***** N2=2**N IF(NEPMAX.EO.O)NEPMAX = N2/2 H=*N*N2 J*N2 L= 1 I»0 00 1011 11 = 1, N J*J/2 L»L*2 SN« 1 DO 1010 LL=1,L SN=-SN OF OF VARIABLES FUNCTIONS COEFFICIENT A •B 25 - 1 ,14 // ,14 // ,14// »',I4) AND UNCOMPLEMENTED G4 G4 G4 34 G4 34 G4 34 G4 G4 34 G4 34 54 G4 34 34 G4 G4 34 G4 G4 G4 G4 34 G4 G4 34 G4 34 34 34 G4 G4 G4 34 34 VARIABLESG4 34 G4 G4 G4 G4 G4 34 G4 G4 34 G4 34 34 G4 G4 34 V=U+SN)/2 DP 1009 JJ*1,J 1*1+1 P$(l, I) = V TF(KEYXC.NE.0IP$(1 , I*H)=1-V 1009 CONTINUE 1010 CONTINUE 1011 CONTINUE IF(KFYXC.^E.O) N = N+N N1=N+1 NM=N+M NM1=NM*-1 NN2=N*N2+1 NR=N+R MRM2=NP*N2 CALL OUTPUT(INC$MX,KEYXC) ***** SE6D IN NETWORK INFORMATION REAP 1001, CNTLIS 1001 FfRMA T (16I5) 01 1115 GT=1,NR 00 1115 GJ=1,NP ills in:$mx(gi,gjj*o 00 1120 1=1,144 T^EM=CNTLIS< I) IF(ITEM.EQ.O) GO TO U19 GI=ITEM/100 GJ«ITEM-100*GI INC$MX(GI,GJI=1 G3 TO 1120 1119 CCST=A*R+8*(T-1) GO TO 1130 1120 CONTINUE 1130 CONTINUE "ALL SUBNE T CALL PVALUE CALL LINE(4) PPINiT 1140, :ost 1140 F0R*AT(20X, • ORIGINAL NETWCRK CALL LINE(^) CALL TRUth.GT.0)GATES»GATES*1 4 CONTINUE CLDCST = A*GATES ♦ B*(C) T = S=0 C INITIALIZE TIMER TO 10 MINUTES CALL STIMEZ(60000) TIME » KTI« ,N0S2 G4 03320 5 ,LIP ,NOOE ,KEYA ♦ KEYB G4 03330 6 ,N00 ,N01 ,N01E ,$GT 54 03340 7 ,$L T H ,$PW ,$NOE tGI 64 03350 COMMON N0T1SV ,N0S1SV ,LMTS2 54 03360 DIMENSION UX(5), UY(5), UG(40), UF(40), ARRAYUO), ARRAY2(2,1280) 64 03370 DIMENSION MATRIX! 40,40) 54 03380 1 50 4 00 10 15 17 18 19 20 DA T A UX /' XI', • X2',' X3»,» X4',» X5'/ G4 03390 DA""* UY/' Yl',' Y2',' Y3',' Y4 • , • Y5'/ G4 03400 D£ T A UF /• 1',' 2',' 3't' 4',» 5',' 6«» l 7',' 8' 34 03410 1 , » 9',' 10', • ll't 1 12',' 13»,' 14%' 15', • 16' G4 03420 ? , • i7»,» i8s« i9«,' 2os» 21S 1 22»t» 23' ,' 24' S4 03430 3 ♦ • 25', • 26', • 27', • 28',' 29* , • 30* , • 31', • 32' G4 03440 4 , • 33', • 34', • 35',' 36',' 37't 1 38»t' 39' , • 40'/ G4 03450 DftTA GMAX/40/ G4 34 03460 0347C KEYXC=ARRAY(1 ) G4 03480 IF(KEYXC.NE.O ) GO TO 50 G4 03490 DO 1 GI=i,N G4 03500 UNAME(GI)=UX(GI ) G4 03510 TONTINUE 34 03520 GO to ioo G4 03530 C"N T INUE G4 03540 L=N/2 34 03550 DC 4 GI*1,L G4 03560 UNAME(GI )=UX(GI ) 34 03570 UNAME(GI-M_)=UY(GI ) 34 03580 ^NTTNUE G4 03590 CONTINUE G4 03600 DC 2 GI=N1,GMAX 34 03610 UNAME(GI)*UF(GI-N) G4 03620 CONTINUE G4 03630 RETURN G4 G4 03640 03650 EN T RY IINE(L) G4 03660 DO 6 LL=1,L G4 03670 ORINT 5 G4 03680 FORMATUH ) 34 03690 CONTINUE G4 03700 RETURN G4 34 03710 03720 FNTPY PAGE G4 03730 PRINT 7 G4 03740 FORMAT (1H1 ) 34 03750 RETURN G4 34 03760 03770 ENTRY CKT(MATRIX, ARRAY) 34 03780 PRINT 10 G4 03790 FORMATCIH ,8X,'GATE .. LEVEL', 6X, 'FED BY'/) G4 03800 DO 20 GJ=N1,NR 34 03810 G=0 G4 03820 DO 15 GI=1,NR G4 03830 IF(MATRIX(GI,GJ).EO.O) GO TO 15 G4 03840 G«G + l G4 03850 JG(G)=UNAME, ARRAY ( GJ ),( UG< GG ) ,GG= 1, G) G4 03890 F0PM«T(1H0, 9X,A3,5X,'/' ,12,'/' ,5X,35( A3)) G4 03900 GT TO 20 G4 03910 PRINT 19, UNAME(GJ),ARRAY(GJ) 34 03920 FOPMftTClHO, 9X,A3,5X,'/',I2,'/') G4 03930 CONTINUE G4 03940 RETURN 34 G4 03950 03960 ENTRY TRIJTH(APRAY2, J) G4 03970 IMJ.EQ.2) GO TO 36 34 03980 POTNT 35 G4 03990 35 FOR GO 36 P* I 37 PQR 38 ^HM on IL IH PR 40 "ON 41 FOP PET FNID MiTdlX, 'TRUTH TABLE'/) TO 38 NT 37 M4TU1X, 'REQUIREMENT TARLE') TINUE 40 GI=1,NR C=(GI-1)*N2+1 I=IL0+N2-1 INf 41, UNAME(GI), < AR" AY 2( J , I ) , I*ILO, IHI ) T INUE MATdHO, 9X,A3,' = •, 32(11, IX)) URN 34 04000 G4 04010 G4 04020 G4 04030 G4 04040 G4 04050 34 04060 G4 04070 G4 04080 G4 04090 G4 04100 34 04110 G4 04120 **** SUBROUTINE PROCV G4 THIS SUBROUTINE HAS AN ENTRY POINT PROCVStGI) BESIDE PROCV ITSELF G4 WHEN THIS SUBROUTINE IS ENTERED FROM PROCV, PROCEDURE V IS APPLIEDG4 TO ALL GATES IN THE NETWORK REPEATEDLY UNTIL NO REMOVED BY T HIS PROCEDURE. WHEN THIS SUBROUTINE ENTRY POINT PROCVS(GI), ONLY GATE GI CAN BE REMOVED BY PROCEDURE V CR NOT IMPLICIT INT£GER*4(A-T,V-Z), REAL(U) GATE CAN BE IS ENTERED AT IS EXAMINED TO SEE WHETHER ******* DEFINITIONS OF 'COMMON 1 VARIABLES CAN BE FOUND IN MAIN PROGRAM. G4 G4 IT34 G4 G4 G4 G4 34 COMMON NEPMAX COMMON N , 1 , R , 2 , NM . , 3 , LEVM , COMMON ISUCC(40,40) , 1 , INC$MX(40,40), 2 , GLEV£L<40) , COMMON t f COMMON IFLAG 1 ,F$U91 2 ,LISTL(40) POINTP M , N2 , KFLAG , NRN2 , LISUCCC40) , SUC $ MX (40, 40), , LGLIST(40) , , RTfONN(lOO) , ,POTNTA ,INPTCV(32) ,POINTL ,VF$1(32) COMMON P3TAB( 200,42 ),PPOTAB( 40) 1 ,RPLC(2,40) 2 ,IDX1E(32) 3 ,SETS1(40) 4 ,STS 5 ,LIP 6 ,N00 7 ,$LTH COMMON COMMON /VPQRNW/ DIMENSION INDEX0(32), 1 CNCTBL(40), ETRKEY = r***** SELECT GI WHICH IS GOING 1 TS = T GI=NM 2 GI * GI ♦ 1 IF(GI.LE.NR) GO TO 3 IF(T.EQ.TS) RETURN GO- TO 1 C**** AC T U*L ENTRY POINT 3 CONTINUE ,IDX0(32) ,SUMP( 32) ,N0S1 ,SUMS2(32) ,N00E ,N01 ,$PW NOTISV GIGJ INDEXU32), NCTBL(40,40), A Nl JFLAG NM1 IPRED(40,40) P$(2,1280) HLIST(40,40) S ,ESS1S(40) ,LISTC(40) ,0RIGIN(40) ,VF$UB1 ,LP0TABC40) ,NRPLC(2) ,IDX0E<32) ,IDX1(32) ,SETT1(32) ,N0T1 ,SETS(40) ,N0S ,SETS2(200) ,N0S2 ,KEYA ,KEYB ♦N01E ,$GT ,$NOE ,GI$$$$ ,NCS1SV ,LMTS2 , PGIGJI1280) , LISTIJ(40) LISCND(40), ISCND(40,40) , TEMPRSC90), INDEXS(32) TO BE REMOVED ***** FOR PROCVS(GI) ******** •<3t , B G4 , NR G4 , COST 34 , NN2 G4 , LIPREDC40) G4 , UNAME(40) G4 , TIME 34 , PSC0NN1 100) G4 ,F$1(32) G4 ,POINTC G4 ,IPATH(40) G4 ,GSMALL(40,32)G4 G4 G4 G4 G4 G4 G4 G4 G4 G4 G4 G4 34 34 G4 34 G4 G4 34 34 34 34 G4 04130 04140 04150 04160 04170 04180 04190 04200 04210 04220 04230 04240 042 50 04260 042 70 04280 04290 04300 04310 04320 04330 04340 04350 043 60 043 70 043 80 04390 04400 04410 04420 04430 04440 04450 04460 04470 044 80 04490 04500 04510 04520 04530 04540 04550 04560 04570 04580 IF1GLEVEHGI I.EO.DGO TO 199 ***** SKID GATES WHICH HAVE ONLY ONE LIP=LIPRED(GI) DO 10 LI=i t LIP GJ=IPRED(LI ,GI) IF(GJ.LE.N)G0 TO 10 IF(LISUCC(GJ).EQ.1.AND.ISUCC(1,GJ).GT.NM)G0 10 :ONTINUE OUTPUT TO GI ***** TO 199 C***** S^tfs WHI r H HAVE CNLY ONE INPUT FROM GI ARE REDUNDANT ***** LIS=LISUCC(GI> DO 11 LI=1,LIS GJ=ISUCC(LI tGI) IF(LISUCC»0 CALL RQRGT(GK) CONTINUE C3MPRESS THE TABLE OF UNCOVERED ONE COMPONENTS ***** NO i 1=0 DO 61 NRUN»1,N01 IF IF(LISCN.EQ.O>GO TO 185 DO 168 LISC»1,LISCN GK=ISCND(LISC,GIG) BSGK=(GK-1»*N2 DO 63 NRUN»1,N011 TTH = INDEXKNRUN1 IF(P$(1,BSGK*TTH>.E0.1)G0 TO 64 CONTINUE GO Tp 168 63 C O**** c 64 65 C £***** r r***** CHECK WHICH COMPONENT OF GK HAS TO BE CHANGED ***** N010*0 DO 65 NRUN=1 ,N00 IF(PS(l,BSGK«-INDEX0(NRUNl).NE.i!GO TO 65 IF(P$(2tBSGK«-INDEX0(NPUNll.GE.0JGO TO 168 N010=N010*1 INDEXS(N310>«INDEX0**»* IJPD&TE "MUTH TABLE FOR GK ***** G4 06510 DO 7^ TH=1,N2 G4 06520 IF(P$(1, BSGL+TH) 171,71,70 G4 06530 70 P$( 1,3SSK+ T H)=0 G4 06540 71 THNTIMJE 34 06550 "*LL UPTRTHIGI, GK) G4 06560 r G4 06570 f***** JP0«TE REQUIREMENT TABLE FOR GK ***** 34 06580 DO 72 NRUN=l,NrO G4 06590 P${ 2,9SGK+INDEXO(NPUN))=0 34 06600 72 CCNTTNJE 34 06610 N01=N011 G4 06620 N01!=0 G4 06630 DO 74 NPUN=1,N01 34 06640 TH*INDEX!(NRUN) G4 06650 IF(P$(1, BSGK* T H).EQ.l J GO TC 73 G4 06660 NCil=NOll+l G4 06670 tNDEXKN011>= T H G4 06680 GO TO 74 34 06690 73 P$(2,BSGK+TH)=i 34 06700 74 r.ONTMJE G4 06710 TALL RQRGT(GK) 34 06720 TF(MOil.EQ.0)GO TO 169 G4 06730 GC- t^ 168 34 06740 90 CONTINUE 34 06750 1.68 CONTINUE G4 06760 GC TO 185 34 06770 169 CONTINUE 34 06780 r G4 06790 r***** GI CAN BE ELIMINATED ***** 54 06800 r***** LIS y dLL 4DDED CONNECTIONS ***** 34 06810 IF(TEMPS.LE.O) GO TO 173 G4 06820 DO 172 *EM=1, TEMPS 34 06830 S=S+1 G4 06840 «SCONN(S)=TEMPRS(TEM) G4 06850 172 r ^rvTINUE 34 06860 C G4 06870 r****« DISCONNECT ALL CONNECTIONS RELATED TO GI ***** G4 06880 173 rn NTIMUE 34 06890 LIS=LISUCC(3I) G4 06900 DD 175 L!=!,LIS 34 06910 GJ=ISUCC(LI,GI ) 34 06920 T=T+1 G4 06930 «TC0NN( T )=100*GI+GJ G4 06940 TNC$MX(GI ,GJ)=0 34 06950 175 ~ r N T INUE G4 06960 LIP=LIPPED(GI ) 34 06970 DO 176 LI=1,LIP 34 06980 GJ=IPRED(LI ,GT) G4 06990 T=T+l 54 07000 RTC0NN(T)=100*GJ+GI G4 07010 INC$MX(GJ,GI)=0 34 07020 176 CONTINUE G4 07030 CAIL SUBNET G4 07040 CALL JNNEGE 34 07050 CALL PVALUE G4 07060 GD TD 199 34 07070 e G4 07080 r***** 5i -* N N f) T BE ELIMINATED. RESTORE THE ORINGINAL NETWORK ***** G4 07090 185 !F(rEMPS.EQ.O)GO TO 199 G4 07100 DO 189 TEM = 1 , TEMPS G4 07110 GL=TEMPRS(TEM)/100 G4 07120 GK=TEMPRS(TEM)-GL*lOO G4 07130 IF(GL.GT.N.OP.GK.GT.NM) GO TO 188 S4 7140 S = S+l G4 07150 RSCONN(S)=TEMPPS(TEM) G4 07160 GO TO 189 G4 07170 188 TNTINUE G4 07180 !NC$MX(GL,GK)=0 G4 07190 189 CONTINUE S4 07200 CALL SUBMET G4 07210 <"ALL PVALUE 34 07220 199 CONTINUE G4 07230 IF(ETRKEY.EQ.O) GO TO 2 G4 07240 PETURN 34 07250 ENTRY PROCVS(GI) G4 07260 E T RKEY=1 G4 07270 GO TO 3 34 07280 END G4 07290 SUBROUTINE PQRNW(GI) 34 07300 IMPLICIT !MTEGER*4U-T,V-Z) t REALtU) G4 07310 r 34 07320 C DEFINITIONS OF 'COMMON* VARIABLES CAN BE FOUND IN MAIN PROGRAM. G4 07330 r G4 07340 COMMON NEPMAX G4 073 50 COMMON N , M t A * B G4 07360 1 , R , N2 , Nl i NR G4 07370 2 ♦ NM , KFLAG , JFLAG , COST G4 07380 3 , LEVM , NRN2 t NM1 ♦ NN2 G4 07390 COMMON ISUCC<40,40) t LISUCCC40) , IPRED(40,40) ♦ LIPRED(40) G4 07400 1 , INC$MX140 ? 40) , SUC$MX(40,40), P$(2tl280) t UNAME<40) G4 07410 2 , GLEVEH40) , LSLIST(40> , HLIST(40,40) , TIME G4 07420 COMMON T t R T CONN(10O) , S » RSCONN( 100) 34 07430 r?MM3N TFLAG ,POINTA ,ESS1S(40) ,F$1(32) G4 07440 J ,F$UBl ,INPTC.V(32) ,LISTC<40) ,POINTC G4 07450 2 ,LISTLUO) .POINTL ,0RIGIN(40) , IPATH(40) G4 07460 3 ,POINTR ,VF$1(32) ,VF$UB1 f GSMALL(40t32)G4 07470 COMMON f>DTAB<200t*2)tPP0TAB(40) t LP0TAB(40) ,NRPLC(2) G4 07480 I tRPLC(2 f 40) , 10X0(32) t IDX0E(32l ,IDX1(32) G4 07490 2 ,!DX1E(32) tSUMP(32) ,SETT1(32) ,N0T1 G4 07500 3 ,SETSl<40) ,N0S1 t SETS<40) ,NOS G4 07510 4 ,STS ,SUMS2(32) ,SETS2(200) ,N0S2 G4 7520 5 ,LIP ,NOOE ,KEYA ,KEYB G4 07530 6 ,N00 ,N01 tNOlE ,$GT G4 07540 7 ,$LTH ,$PW ,$NOE ♦GI*$$$ G4 075 50 C0MM1N N0T1SV .N0S1SV ,LMTS2 G4 07560 COMMON /VRQRNW/ GIGJ , PGIGJI1280) t LISTIJC40) G4 07570 DIMENSION INDEX0<32), INDEXH32), PSUMI32I G4 07580 r G4 075 90 r***** fOPY TRUTH TABLE FOR OUTPUT GATES AND EXTERNAL VARIABLES ***** G4 07600 MfH=NM*N2 G4 07610 DO 10 TH=l t MTH 10 P$( 2," r H)=P$(l ,TH) r***** INITIALIZE ALL FUNCTION'S TO BE UNDEFINED ***** MTH1=MTH+1 MTH2=NR*N? DO 11 TH=MTH1 f MTH2 11 P$(2,TH)=-1 r -***♦* REQUIREMENTS FOR CONNECTIONS TO A CERTAIN LEVEL ***** GIGJ=0 LEVR=LEVM-2 DO 49 LEV=1,LEVR LGL=LGLIST(LEV) DO 45 LG=1,LGL GJ=HLIST(LG,LEV) IF(GJ.EO.GI )G0 TO 45 IF(GJ.GT.NM.AND.LEV.EQ.l ) GO TO 45 IF(GJ.LE.N) GO TO 45 8SGJ=(GJ-1)*N2 LIP=LIPPED(GJ) KEYGI=0 DO 25 TH=1,N2 25 PSUM(TH)=0 DO 35 LP=1,LIP GK=IPRED(LP,GJ) BSGK=(GK-1 )*N2 IF(GK .NE.GI ) GO TO 26 KEYGI=l 01 TO 35 26 IF(GK.GT.NM) GO TO 29 r r***** G < IS EX T ERMAL VAP IABLE OR OUTPUT GATE, UPDATE PSUM ONLY ***** DO 28 TH=1,N2 IF(P$(2,BSGK+TH).EQ.l ) PSUM (TH) =PSUM (TH) +1 28 CONTINUE GO TO 35 ^***** REQUIREMENTS FOP CONNECTION GK TO GJ ***** 29 DO 33 T H=1,N2 IF(P$(2,BSGJ+TH>) 33,30,31 30 IF(PSUM(TH).GF.1.0R.P$(l,BSGK+TH).NE.l) GO TO 33 P$(2,9SGK+TH) = 1 PSUM(TH)=1 GO TO 33 31 P$(2,8SGK+TH»=0 33 CONTINUE 35 CONTINUE IFiKEYGI.NE.l ) GO TO 45 ^****4c CALCULATE REQUIREMENTS FCP CONNECTION GI TO GJ GIGJ=GIGJ*1 BSGIGJ=(GIGJ-1)*N2 LISTIJ(GIGJ )=GJ DO 39 TH=1,N2 IF(P$(2,BSGJ+TH) ) 38,36,37 36 IF(PSU*(THJ.GE.l ) GO TO 38 PGIGJ<8SGIGJ+TH)=1 Gl TO 39 37 PGIGJ(BSGIGJ+TH)=0 GO TO 39 ?8 PGIGJ(BSGIGJ+TH)=-1 ***** 34 07620 G4 07630 G4 07640 G4 07650 G4 07660 G4 07670 G4 07680 G4 07690 34 07700 G4 07710 G4 07720 34 07730 34 07740 34 07750 34 07760 G4 07770 G4 07780 34 07790 34 07800 04 07810 G4 07820 G4 07830 34 07840 G4 07850 G4 07860 34 07870 G4 07880 34 07890 04 07900 G4 07910 34 07920 G4 07930 G4 07940 34 07950 34 07960 34 07970 34 07980 G4 07990 G4 08000 04 08010 G4 08020 34 08030 G4 08040 G4 08050 G4 08060 34 08070 54 08080 34 08090 G4 08100 G4 08110 34 08120 G4 08130 G4 08140 G4 08150 G4 08160 34 08170 34 08180 34 08190 34 08200 G4 08210 34 08220 39 45 49 CCNTIMUE r^NTlNUE CONTINUE RETURN ** UPDATE REQUIREMENTS FOP GATES FEEDING GZ ***** ENTRY RORGT(GZ) LEV1=GLEVEL(GZ) LFV2=LEVM-2 IFILFV2.LT.LEVDRETURN D p 189 LEV*LEV1,LEV2 KEYCHG=0 LGL=LGLIST(LEV) DO 179 LG=1,LGL GY=HLIST(LG,LEV) IF(GY.LE.N) GC TC 179 IF(SUC$MX(GY,GZ).LE.O.AND.GY.NE.GZ)GO TO 179 n SGY=(GY-l)*N2 LIP=LIPRED(GY) NCO = \01=0 OC 109 T H =1,N2 IF(P$(2tBSGY*TH) ) 109,107,108 N00 = N00*-1 I*JDEX0(N00 ) = TH GO TO 139 N01=N0U1 I'NDEXUIOl )=TH CGNTINUF DD 110 T H=1,N00 °SUM(THJ=0 DO 119 LI=l ,LIP GX=IPRED ,F$1(32) G4 09410 1 ,F$UB1 ,INPTCV(32) ,LISTC(40) ,POINTC 34 09420 10 21 22 23 26 28 2 tLlSTL(^O) ,P0INTL t 0RIGINt40J , IPATH(40J G4 09430 3 ,POIMTR .VF$1(32I ,VF$UBi ,GSMALL<40, ,32)G4 09440 COMMON P^TAB(200t42),PP0TAB(40) tLP0TAB{40) ,NRPLC(2) 54 09450 1 ,BPLC(2f40) ,IDX0(32I ,IDX0E(32) ,IDX1(32) G4 09460 2 ,TDX1E(32) t SU*P(32) ♦SETT1C32I tNOTl G4 09470 3 ,SETS1(40) ,N0S1 »SETS(40) ,NOS G4 09480 4 ,STS ,SUMS2(32) t SETS2(200) ,N0S2 G4 09490 5 tLIP ,NOOE ,KEYA tKEYB G4 09500 6 ,N00 f N01 tNOlE tSGT G4 09510 7 ,$L T H ,$PW ,$NOE V G$S$$S G4 09520 CCMWOM N0T1SV tNOSlSV tLMTS2 G4 095 30 DIMENSION XI40) ,LX<40,2) t 0UT0(40) G4 09540 EN^PY PRESJC G4 09550 CONTINUE 34 09560 DC 10 GI=1,NR G4 09570 LS=0 G4 09580 LP=0 3 4 095 90 DC 5 5J*l t NP 34 09600 IF( INC$MX(GI,GJ J.EQ.O) GO TO 3 G4 09610 LS=LS+l 34 09620 !SUCC(LS,GI)=GJ G4 09630 GO T^ 5 G4 09640 TF( INC$MX(GJ,GI I.EO.O) GO TO 5 34 09650 LP=LP+1 G4 09660 IPPED(LPtGI )*GJ G4 09670 CONTINUE G4 09680 LISUCC(GI)»LS G4 09690 LIPRED(GI)=LP 34 09700 CONTINUE G4 09710 G4 09720 ENTRY SUCCES 34 09730 DO 21 GI=i,NR G4 09740 D n 21 GJ=1,NR G4 09750 SUC$MX(GI,GJ)=0 34 09760 CONTINUE G4 09770 Dn 30 GJ=N1,NR G4 09780 DO 22 GS=1,NR G4 09790 X(G?»=0 G4 09800 CONTINUE 34 09810 X(GJ)=1 54 09820 L0*1 G4 09830 LX(1,1 ) = GJ G4 09840 V=l 54 09850 r ONTINUE G4 09860 V = l-V G4 09870 swo=n-v 54 09880 SW1=2-V 54 09890 L1=0 64 09900 DO 28 LL=1,L0 34 09910 GM«LX(Ll,SW01 G4 09920 LIP»IIPRED(GM) G4 09930 TF(LIP.EO.O) GO TO 28 34 09940 DO 26 LP«1,UP G4 09950 GP=«IPPED(LP,GM ) G4 09960 IF(X(GP).GT.O) GO TO 26 54 09970 SUC$MX(GP f GJ)»l 54 09980 L1 = L1*-1 54 09990 LXCLlfSWl )=GP 54 10000 X(GP)=1 54 10010 CTNTINUE 34 10020 " n NTINUF 54 10030 IF(L1.EO.O ) GO TO 30 L0 = L1 BD T D 23 30 CON T INUE EN^FY LEVEL DO 40 GJ=l f NR OU T 0(GJ)«LISUCC(GJ) GLFVEL(GJ)=-1 40 CONTINUE LEV=0 45 LEV = LEV-H G=0 D'* 1 50 GJ = 1,MR TF(?U T 0(GJ).GT.O .OP. GLEVEUGJKGT.O) GO TO 50 G = G + 1 HLTSTIGtLEV) =GJ GLfcVEL(GJ)=LEV 50 CONTINUE IF(G.EQ.O) FE T URN LGLIST(LEV)=G DO 60 GG=ltG GJ=HLIST(GG»LEV) L!P=LIPRED(GJ) JFiLIP.EO.O) GO TO 60 D3 55 LP=1,LIP GP*IPRED(LP,GJ) TUT0(GP)=0UT0(GP)-1 55 CONTINUE 60 CONTINUE LEVM=LEV GO TO 45 EN T PY PVALUE D3 100 L=N^2 t NRN2 P$(l,L)=l ICO CONTINUE LEV=LEV*I 110 CONTINUE LO=LGLIST GO TO 204 T = T*-1 RTC ONN( T)=l 00*GI+GK in:$mx(gi ,gk>=o 204 ~">NTTNUE ?09 CONTINUE IP( T .GT.TS) GO TO 1 RE T UPN ENO G4 10650 34 10660 G4 10670 G4 10680 34 10690 G4 10700 G4 10710 G4 10720 S4 10730 G4 10740 34 10750 G4 10760 G4 10770 34 10780 G4 10790 G4 10800 34 10810 G4 10820 34 10830 34 10840 G4 10850 34 10860 34 10870 G4 10880 34 10890 34 10900 G4 10910 34 10920 G4 10930 34 10940 34 10950 34 10960 G4 10970 34 10980 G4 10990 G4 11000 34 11010 G4 11020 34 11030 54 11040 G4 11050 G4 11060 G4 11070 G4 11080 34 11090 G4 11100 34 11110 34 11120 G4 11130 G4 11140 BIBLIOGRAPHIC DATA SHEET 1. Report No. UIUCDCS-R-75-71^ " PROGRAM U MAMJAL: NOR NETWORK TRANSDUCTION BY GERERALIZED GATE MERGING AND SUBSTITUTION (Reference Manual of NOR Network Transduction Programs NETTRA-G3 and NETTRA-G4) 3. Recipient's Accession No. 5. Report Date April 1975 7. Author(s) H.C. LAI 8- Performing Organization Rept. No. 9. Performing Organization Name and Address Ljpartment of Computer Science University of Illinois at Urb ana-Champaign Urbana, Illinois 6l801 10. Project/Task/Work Unit No. 11. Contract /Grant No. NSF GJ-40221 12. Sponsoring Organization Name and Address National Science Foundation 1800 G Street, N.W. Washington, D.C. 20550 13. Type of Report & Period Covered Technical 14. 15. Supplementary Notes 16. Abstracts This is a reference manual for NOR network transduction programs NETTRA-G3 and NETTRA-G^. NETTRA-G3 reduces the number of gates in a given network by means of merging of gates whereas NETTRA-G^ reduces the number of gates by means of sub- stitution for all output connections of a selected gate. The principles of these programs will be discussed in more detail in another paper by the author and Y. Kambayashi. 17. Key Words and Document Analysis. 17a. Descriptors Logic design, logic circuits, logical elements, programs (computers). 17b. Idcntif icrs/Open-Ended Terms Program manual, computer-aided-design, permissible functions, network transduction, network tranformation, gate merging, gate substitution, NETTRA-G3, NETTRA-G 1 !-, NOR, CSPF. 17c. ( OSAT1 Field/Group 18. Availability Statement Release Unlimited 19. Security Class (This Report) UNCLASSIFIED 20. Security Class (This Page UNCLASSIFIED 21. No. of Pages 107 22. Price FORM NTIS-1B ( 10-70) USCOMM-DC 40329-P7I # <\tf 13 *$n '"'ernalreport/ Zn °- 7,3 - 7 14(1975 HM M IB SUM wffi m HL MM FmhH nr ISiU hbbKSi BBmH tBm of ttftttflfuHBa ' mflflEBBfim mMiM i n ttM B M lBl IllBi Wm MMmtm WwBSBbM RlttiyaHHfflKllB ■■ Hn&f8liiH»sli9 mkbh