CN1535466A - Programmable molecular device - Google Patents

Programmable molecular device Download PDF

Info

Publication number
CN1535466A
CN1535466A CNA018152295A CN01815229A CN1535466A CN 1535466 A CN1535466 A CN 1535466A CN A018152295 A CNA018152295 A CN A018152295A CN 01815229 A CN01815229 A CN 01815229A CN 1535466 A CN1535466 A CN 1535466A
Authority
CN
China
Prior art keywords
int
molecular
molecule
nano
mycell
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA018152295A
Other languages
Chinese (zh)
Inventor
ղķ˹��M��������˹
詹姆斯·M·图尔
比尔·范·灿特
и
克里斯托弗·赫斯本德
萨默·赫斯本德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
William Marsh Rice University
Original Assignee
William Marsh Rice University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by William Marsh Rice University filed Critical William Marsh Rice University
Publication of CN1535466A publication Critical patent/CN1535466A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B82NANOTECHNOLOGY
    • B82YSPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
    • B82Y30/00Nanotechnology for materials or surface science, e.g. nanocomposites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/002Biomolecular computers, i.e. using biomolecules, proteins, cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/36Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using diodes, e.g. as threshold elements, i.e. diodes assuming a stable ON-stage when driven above their threshold (S- or N-characteristic)
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0009RRAM elements whose operation depends upon chemical change
    • G11C13/0014RRAM elements whose operation depends upon chemical change comprising cells based on organic memory material
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/02Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using elements whose operation depends upon chemical change
    • G11C13/025Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using elements whose operation depends upon chemical change using fullerenes, e.g. C60, or nanotubes, e.g. carbon or silicon nanotubes
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B82NANOTECHNOLOGY
    • B82YSPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
    • B82Y10/00Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2213/00Indexing scheme relating to G11C13/00 for features not covered by this group
    • G11C2213/70Resistive array aspects
    • G11C2213/81Array wherein the array conductors, e.g. word lines, bit lines, are made of nanowires
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10KORGANIC ELECTRIC SOLID-STATE DEVICES
    • H10K10/00Organic devices specially adapted for rectifying, amplifying, oscillating or switching; Organic capacitors or resistors having a potential-jump barrier or a surface barrier
    • H10K10/701Organic molecular electronic devices

Abstract

A programmable molecular device (10) is provided that includes a random nano-network that includes a plurality of molecular circuit components. Preferred molecular circuit components include molecular diodes that exhibit negative differential resistance. A method of programming the molecular device may include configuring the molecular components. Configuring a molecular component may include applying a voltage across input and output leads connected to the nano-networks. The voltage may be determined according to a self-adapting algorithm that programs the device to function, for example, as a logic unit or a memory unit. A molecular computer may include a plurality of programmable molecular devices (10) that are interconnected by metallic wires (14).

Description

Programmable molecular device
The statement of government-funded research of relevant group or exploitation
This work has obtained fund support from DARPA by research institute of naval, pulls out money and number is R13160.
Explanation and the statement under 37 C.F.R § 1.52 (e) (5) to the CD appendix
According to 37 C.F.R § 1.52 (e) (5), with a CD-ROM (read-only memory) (CD-ROM) with the IBM-PC form of MS-Windows and MS-DOS compatibility, and be comprised in this as a reference with dual copy (" Copy 1 " and " Copy 2 ") form.Copy 1 is identical with Copy 2, and in 1 master catalogue and 2 sub-directories, include 269 files, as according to the following output identification of MS-DOS order " dir e:/s ", wherein export each literature kit is contained the [moon/day/year, byte, filename. extension name] delegation of standard format, to identify the date created of each file to those of ordinary skills, size, title, and type: Volume in drive E is PatentFilesDirectory of E: 01/01/01 12:00a<DIR .01/01/01 12:00a<DIR ..07/24/01 01:59p<DIR Dynamic Nanocell Simulator07/24/01 09:34a 250,368 Exhaustive Truth Table Tests.ppt07/24/01 01:58p<DIR〉Spice Nanocell Simulator07/24/01 01:30p 44,553,216 Trained Nanocell.doc
6?File(s) 44,803,584?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator07/24/01 09:34a <DIR> .07/24/01 09:34a <DIR> ..07/24/01 01:59p <DIR> molec07/23/01 09:43a 2,341?SimCellV1.jcp07/10/01 12:09p 390?SimCellV1.jcw07/11/01 12:42p 239?SimCellV12.jcw07/24/01 01:59p <DIR> src07/18/01 07:53a 1,022?src?simcellv1.txt
8?File(s)?3,992?bytesDirectory?of?E:\Dynamic?Nanocell?Simulator\molec07/24/01 01:58p <DIR> .07/24/01 01:58p <DIR> ..07/24/01 01:59p <DIR> cell07/24/01 01:59p <DIR> control07/24/01 01:59p <DIR> ga07/24/01 01:59p <DIR> table07/24/01 01:59p <DIR> ui
7?File(s)0?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\molec\cell04/16/01 01:07p <DIR> .04/16/01 01:07p <DIR> ..07/18/01 07:54a 490?Link.class07/18/01 07:54a 9,255?Nanocell.class07/18/01 07:54a 1,206?Node.class07/18/01 07:54a 1,503?Util.class
6?File(s)12,454?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\molec\control07/18/01 07:54a <DIR> .07/18/01 07:54a <DIR> ..07/18/01 07:54a 2,372?nanoControl$1.class07/18/01 07:54a 2,060?nanoControl$10.class07/18/01 07:54a 1,942?nanoControl$11.class07/18/01 07:54a 745?nanoControl$12.class07/18/01 07:54a 839?nanoControl$13.class07/18/01 07:54a 745?nanoControl$14.class07/18/01 07:54a 1,426?nanoControl$15.class07/18/01 07:54a 835?nanoControl$16.class07/18/01 07:54a 751?nanoControl$17.class07/18/01 07:54a 2,083?nanoControl$18.class07/18/01 07:54a 751?nanoControl$19.class07/18/01 07:54a 1,251?nanoControl$2.class07/18/01 07:54a 1,560?nanoControl$20.class07/18/01 07:54a 1,383?nanoControl$21.class07/18/01 07:54a 1,054?nanoControl$22.class07/18/01 07:54a 749?nanoControl$23.class07/18/01 07:54a 846?nanoControl$24.class07/18/01 07:54a 749?nanoControl$25.class07/18/01 07:54a 2,672?nanoControl$26.class07/18/01 07:54a 1,251?nanoControl$3.class07/18/01 07:54a 1,213?nanoControl$4.class07/18/01 07:54a 1,233?nanoControl$5.class07/18/01 07:54a 1,278?nanoControl$6.class07/18/01 07:54a 744?nanoControl$7.class07/18/01 07:54a 1,290?nanoControl$8.class07/18/01 07:54a 744?nanoControl$9.class07/18/01 07:54a 5,091?nanoControl.class
29?File(s)37,657?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\molec\ga07/18/01 07:54a <DIR> .07/18/01 07:54a <DIR> ..07/18/01 07:54a 158?Evaluatable.class07/18/01 07:54a 4,057?GA.class07/18/01 07:54a 2,176?Individual.class07/18/01 07:54a 3,132?Population.class07/18/01 07:54a 1,020?Util.class
7?File(s)10,543?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\molec\table07/18/01 07:54a <DIR> .07/18/01 07:54a <DIR> ..07/18/01 07:54a 2,128?Truth?Table.class
3?File(s)2,128?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\molec\ui07/18/01 07:54a <DIR> .07/18/01 07:54a <DIR> ..07/18/01 07:54a 6,747?GCell.class07/24/01 01:59p <DIR> inputWindows07/18/01 07:54a 487?mainMenu$1.class07/18/01 07:54a 5,985?mainMenu.class07/18/01 07:54a 427?NodeCheckBoxMenuItem.class
7?File(s)13,646?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\molec\ui\inputWindows07/24/01 01:59p <DIR> .07/24/01 01:59p <DIR> ..07/18/01 07:54a 2,517?AInputWindow.class07/18/01 07:54a 656?GAPropsWin.class07/18/01 07:54a 1,068?makeNano.class07/18/01 07:54a 2,775?PropsGui.class07/18/01 07:54a 701?SimPropsWin.class07/18/01 07:54a 3,006?TableGui.class
8?File(s)10,723?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\src07/24/01 01:59p <DIR> .07/24/01 01:59p <DIR> ..07/24/01 01:59p <DIR> cell07/24/01 01:59p <DIR> control07/24/01 01:59p <DIR> ga07/24/01 01:59p <DIR> table07/24/01 01:59p <DIR> ui
7?File(s) 0?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\src\cell07/24/01 01:59p <DIR> .07/24/01 01:59p <DIR> ..05/11/01 02:33p 516?Link.java07/17/01 01:32p 30,722?Nanocell.java07/09/01 11:18a 1,230?Node.java04/04/01 09:37a 1,312?Util.java
6?File(s)?33,780?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\src\control04/04/01 09:37a <DIR> .04/04/01 09:37a <DIR> ..07/18/01 03:45p 20,315?nanoControl.java
3?File(s)?20,315?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\src\ga07/18/01 03:45p <DIR> .07/18/01 03:45p <DIR> ..04/17/01 06:59p 87?Evaluatable.java07/14/01 06:40a 6,716?GA.java07/14/01 06:16a 3,268?Individual.java06/11/01 10:32a 4,467?Population.java06/16/01 06:00a 854?Util.java
7?File(s)?15,392?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\src\table07/14/01 06:40a <DIR> .07/14/01 06:40a <DIR> ..04/17/01 06:56p 2,074?Truth?Table.java
3?File(s)?2,074?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\src\ui04/17/01 06:56p <DIR> .04/17/01 06:56p <DIR> ..07/14/01 05:39a 9,636?GCell.java07/24/01 01:59p <DIR> images07/24/01 01:59p <DIR> inputWindows05/23/01 01:49p 9,295?mainMenu.java04/06/01 09:15a 327?NodeCheckBoxMenuItem.java
7?File(s)?19,258?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\src\ui\images07/18/01 07:54a <DIR> .07/18/01 07:54a <DIR> ..02/05/01 05:07p 291?cell_prop.gif02/05/01 04:50p 1,087?chip.gif06/02/00 11:11a 885?clone.gif06/02/00 11:11a 81?hand.gif06/02/00 11:11a 1,476?looping.gif02/05/01 02:45p 235?middle.gif02/05/01 05:02p 843?molecule.gif06/02/00 11:11a 139?new.gif06/02/00 11:11a 146?open.gif06/02/00 11:11a 184?save.gif06/02/00 11:11a 852?start.gif06/02/00 11:11a 858?stop.gif02/05/01 04:51p 1,422?truth.gif02/05/01 05:05p 211?zap.gif
16?File(s)?8,710?bytes?Directory?of?E:\Dynamic?Nanocell?Simulator\src\ui\inputWindows02/05/01 05:05p <DIR> .02/05/01 05:05p <DIR> ..06/05/01 01:31p 2,592?AInputWindow.java07/13/01 10:01p 522?GAPropsWin.java07/03/01 02:31p 691?makeNano.java07/03/01 02:35p 2,007?PropsGui.java07/13/01 03:36p 526?SimPropsWin.java02/28/01 01:04p 2,744?TableGui.java
8?File(s)?9,082?bytes?Directory?of?E:\Spice?Nanocell?Simulator07/24/01 01:59p <DIR> .07/24/01 01:59p <DIR> ..03/26/01 04:24p 92?1bit.tt03/26/01 04:25p 412?2bit.tt07/03/01 01:42p 86?2Nand.pin07/03/01 01:24p 153?2Nand.tt07/03/01 02:56p 86?4Nand.pin07/03/01 03:56p 86?4Nand.pin.pin07/03/01 03:55p 410?4Nand.tt07/23/01 03:01p 4,562?AllScores03/26/01 04:25p 36?And.tt06/08/01 02:25p 2,272?BigRemoteTest02/12/01 10:27a 2,036?Connector.cpp05/30/01 12:46p 1,030?Connector.h01/25/01 01:35p 1,157?Conprop.cpp01/25/01 01:35p 1,245?Conprop.h03/28/01 05:10p 86?D1Bit.pin03/26/01 04:29p 93?D1bit.tt03/28/01 10:12a 86?D1Bit_1.pin03/27/01 03:20p 63?D1Bit_1.tt03/28/01 10:29a 88?D1Bit_2.pin03/28/01 10:22a 63?D1Bit_2.tt07/24/01 01:58p <DIR> Debug01/25/01 01:35p 1,249?Device.cpp01/29/01 02:25p 2,604?Device.h03/14/01 02:16p 0?DNand.pin03/14/01 02:06p 42?DNand.tt03/16/01 01:04p 85?DXor.pin03/14/01 02:12p 36?DXor.tt01/25/01 01:35p 1,117?FindDlg.cpp01/25/01 01:35p 1,213?FindDlg.h07/18/01 12:07p 91?HalfAdder.pin07/18/01 12:06p 59?HalfAdder.tt01/25/01 01:35p 8,644?icaps.cpp02/06/01 06:45p 2,169?icaps.h07/20/01 04:52p 1?intusoft.err03/12/01 11:08a 137?Inverter.pin03/26/01 04:26p 33?Inverter.tt05/10/01 11:38a 89?Inverter2.pin03/24/01 04:09p 89?InverterLess.pin06/15/01 12:42p 13,570?MainFrm.cpp06/15/01 12:30p 2,602?MainFrm.h06/15/01 12:40p 78,956?mc6.aps07/24/01 01:25p 16,911?mc6.clw02/06/01 04:28p 6,218?mc6.cpp03/28/01 12:24p 7,062?mc6.dsp02/12/01 10:33a 711?mc6.dsw02/03/01 01:58p 1,432?mc6.h07/24/01 01:25p 484,352?mc6.ncb06/15/01 12:30p 1,001?mc6.odl07/24/01 01:25p 61,952?mc6.opt07/23/01 02:10p 2,748?mc6.plg06/15/01 12:40p 49,154?mc6.rc01/18/01 04:32p 660?mc6.reg07/20/01 01:14p 26,643?mc6Doc.cpp06/15/01 12:42p 4,078?mc6Doc.h02/07/01 04:21p 3,033?mc6View.cpp02/06/01 07:44p 1,841?mc6View.h01/25/01 01:35p 949?Molecule.cpp01/25/01 01:35p 668?Molecule.h07/20/01 04:51p 1,329?Moletronic.cir07/20/01 04:52p 1,382?Moletronic.ckt07/20/01 04:52p 632?moletronic.err07/20/01 04:52p 3,869?moletronic.out07/20/01 04:52p 1,330?Moletronic.prm07/20/01 04:52p 1,329?Moletronic.tmp03/27/01 11:04a 41,480?Moletronic203/28/01 12:24p 142?mssccprj.scc06/08/01 02:25p 81?NAdder.pin05/07/01 02:38p 87?NAdder.tt05/11/01 03:42p 85?Nand.pin03/26/01 04:26p 37?Nand.tt03/26/01 02:18p 85?NandLess.pin07/19/01 03:33p 76,429?Nanocell.cpp07/23/01 02:10p 5,784?Nanocell.h01/25/01 01:35p 2,717?Nanocolor.cpp01/25/01 01:35p 1,530?Nanocolor.h04/16/01 01:08p 1,912?Nanoprop.cpp04/16/01 01:08p 1,452?Nanoprop.h03/26/01 04:16p 15,595?NewPinStatus.cpp03/12/01 11:49a 3,125?NewPinStatus.h03/12/01 03:27p 43,329?NewTT.cpp03/12/01 02:59p 7,659?NewTT.h04/20/01 05:23p 81?NHalfAdder.pin06/15/01 04:26p 81?NHalfAdder.pin.pin04/20/01 01:32p 59?NHalfAdder.tt04/23/01 11:54a 81?NHalfAdderBig.pin03/26/01 04:26p 35?Or.tt07/18/01 12:50p 1,090?papertest07/18/01 02:35p 331?papertest204/17/01 02:40p 10,311?Pin.cpp03/28/01 09:59a 920?Pin.h03/26/01 04:16p 4,562?Pinprop.cpp06/08/01 10:55a 1,567?Pinprop.h03/26/01 04:17p 2,861?PinStatus.cpp03/15/01 02:59p 1,886?PinStatus.h01/18/01 04:32p 4,650?readme.txt06/25/01 12:54p 410?RemoteTest06/21/01 04:04p 2,220?RemoteTestBig07/24/01 01:58p <DIR> res06/15/01 12:40p 13,766?resource.h01/21/01 02:56p 515?Results.tmp07/20/01 04:50p 133?Scores07/23/01 03:01p 616?ScoresSmall05/24/01 11:49a 3,503?Simprop.cpp05/24/01 11:44a 1,947?Simprop.h01/25/01 01:35p 4,971?spice4.cpp01/25/01 01:35p 1,412?spice4.h05/28/01 10:58a 1,419?SpiceSocket.cpp06/18/01 02:41p 1,358?SpiceSocket.h01/25/01 01:35p 205?StdAfx.cpp03/12/01 12:57p 1,639?StdAfx.h07/20/01 12:47p 8,074?Switch.cpp07/19/01 03:03p 1,241?Switch.h03/14/01 02:10p 1,106?Truthtable.cpp03/12/01 03:24p 1,494?Truthtable.h03/28/01 01:46p 912?vssver.scc04/03/01 12:08p 81?Xor.pin03/26/01 04:27p 36?Xor.tt07/19/01 05:57p 385?xortest
120?File(s)?1,083,699?bytes?Directory?of?E:\Spice?Nanocell?Simulator\Debug07/24/01 01:59p <DIR> .07/24/01 01:59p <DIR> ..07/05/01 11:27a 0?AllScores07/23/01 02:10p 5,161,984?mc6.bsc
4?File(s)?5,161,984?bytes?Directory?of?E:\Spice?Nanocell?Simulator\res07/05/01 11:27a <DIR> .07/05/01 11:27a <DIR> ..01/17/01 08:59p 1,078?mc6.ico01/13/01 04:31p 395?mc6.rc201/13/01 04:31p 1,078?mc6Doc.ico03/09/01 02:57p 778?Toolbar.bmp04/16/01 01:07p 96?vssver.scc
7?File(s)?3,425?bytes
Total?Files?Listed:
269?File(s) 51,252,446?bytes
0?bytes?free
Invention field
The present invention relates to programmable electronics device in general, more specifically to the nanoscale device able to programme based on the molecular circuit parts.
Background of invention
The basic function of a computing machine comprises information processing and storage.In von Neumann (serial) architecture, those arithmetic, logic and storage operation by can be reversibly between the two states that is commonly called " 0 " and " 1 " device for switching carry out.The semiconduction device of carrying out these difference in functionalitys must be able to use the electric energy of minimum flow to switch between two states with hypervelocity, so that allow computing machine to carry out basic operation.Transistor is carried out basic handoff functionality in computing machine.
Make the more ability of high-density circuit element though the design of high energy efficiency, up-to-date electronic installation and production more and more depend in integrated circuit, the computer technology of based semiconductor and architecture have developed into the quantum mechanics limit that is bordering on this structure.Very fast, size and price will limit the following development that increases of high-performance computer.A critical piece regulating these attributes of high-performance computer is a storer, especially memory circuitry density.Because the huge call data storage of these instruments, so need a kind of new, compact, cheap, high capacity, high-speed memory circuit structure.More going through of the problem relevant with dwindling the electronic installation scale sees United States Patent (USP) 6,259, and 277,6,219,833,5,589,692 and 5,475,341, each all is hereby incorporated by in them.
The molecular scale electronic installation is such ambit, and it proposes to use individual molecule or the sub critical component that is used as in the calculation element in future of a component.The enough switches of doing of molecular energy of electric charge barrier especially, can controlledly be set.Except reducing significantly the size, the response time of molecular device can be within the scope of femtosecond, and current the device the most fast in the scope of nanosecond worked.If especially therefore other circuit component serviceability without limits then can obtain 10 aspect speed 5To 10 6Increase.
Size and their speed (limited by their natural time response) of optimizing traditional elementary cell (normally transistor) are afoul design objects.Therefore must carry out several balances.Most important compromise is the hardware-software duality in computing technique, and it turns materially the requirement of programmed logic (storer-or software-dominant) to hard wired logic (CPU-or hardware are leading).The parts of programmed logic are littler and can handle bigger problem than hard wired logic system; Yet hard wired logic is faster than programmed logic.Extreme at one, position totalizer (the minimum logical block that can sue for peace) with a small amount of logic gate can be arranged, it needs a big storer to obtain the result, and it is extreme at another, can there be one to have all specific functions and all route to CPU in the system, it can handle whole problem, and only have that a little storer is used for inputoutput data.Current techniques is tended to programmed logic very much, for example, has the computing machine of a large memories and a quick still simple CPU.
Realize that the challenge that the molecular scale electron device is being faced is to be used to seek molecular components is arranged as the method with logical functional structure.Therefore, had and make molecular components be used as research in the architecture of the basic switch elements in the constitutive logic device.Any logic gate can be constructed by a whole set of one or more elementary gates.More than one these elementary gates can be connected or in parallel or both arranges with having, to form other logic function.Therefore, the function that the shows elementary gate particular importance that just becomes.The NAND door is one and itself forms the elementary gate of a complete set.The NOR door is that another itself forms the elementary gate of a complete set.Other complete set comprises combination, AND door and the combination of NOT (being also referred to as phase inverter) door and the combination of OR door and NOT door of combination, OR door and the XOR gate of AND door and XOR gate.
In one approach, basic logic function has proposed to use by what be bonded together and has constituted unimolecule than micromolecule.Each less molecule can be designed to imitate the function of a traditional circuit element.Shown by James C.Ellenbogen and J.Christopher Love, the Proceedings of the IEEE in March, 2000, shown so abstract molecule among Figure 12 of 386-426 page or leaf, 13 and 14.This piece article is hereby incorporated by.The molecule that shows among Figure 12 of the document, 13 and 14 is proposed and is used separately as AND door, OR door and half-adder.A shortcoming of this method is that the molecule of synthetic this proposal has any problem.In addition, the dynamic structure variation of these molecule sections is easy to produce short circuit between these molecule sections.
In another approach, the mixing array of traditional circuit element and switch presents basic logic functions, and wherein this mixing array includes millions of molecule diodes of unimolecular layer between lead-in wire.Be positioned two metal plate and presented switching function such as the monolayer molecules diode apparatus between the capacitor plate.Unimolecular layer is the molecular layer with a molecular thickness.In this unimolecular layer, have the molecule quilt and the registration of the end opposite that has functional group, this functional group can be bonded to metal and gradually be called as the molecule binding clip.This function end and metal plate bonding.Shown by David P.Nackashi and Paul D.Franzon, Proc, SPIE2001, among volume 4236, the page or leaf 80-88, having drawn among title Fig. 5 for the article of " Moletronics:A circuit designperspective " comprises exemplary circuit based on the switchgear of unimolecular layer, and it has NAND and NOR function.This piece article is incorporated herein by reference in full at this.In addition, be OCR 1049, also described the circuit that comprises directed unimolecular layer in U.S. Patent application proposition on April 18th, 2000, " Molecular Scale Electronic Devices " by name in attorney docket, it is hereby incorporated by.
In each said method, the molecular scale device all is the embodiment of hard wired logic.This and opposite at current technological trend towards the programmed logic direction.In addition, hard wired logic trends towards more can't stand defective than programmed logic.Because it is effective and efficient that the industrial scale manufacturing of molecular scale device is a cost,, this device may assemble the defective that occurs in the process of this device at chemistry so must tolerating.
What the molecular scale electronic installation provided that the magnitude of current that makes us diminishes may calculate power supply.Therefore a kind of technology that is used for creating programmed logic in effective, firm and reproducible mode from molecular components is desired.
Summary of the invention
In a preferred embodiment, the present invention is characterised in that a kind of programmed logic that uses molecular components.Alternatively, the invention provides a kind of programmable memory that uses molecular components.In the nano unit of a small programmable unit of formation, arrange these molecular components.A nano unit preferably comprises an as many as many trillion molecule, and wherein thousands of molecules are in suitable orientation and are used for switch.This is expecting by the microminiaturized of individual molecule logic realization and is expecting to provide between firm, the programmable function one in the balance aspect the yardstick.Nano unit among the present invention has such advantage, and promptly the single nano unit by direct wet-chemical technique combination may at first be programmed to carry out as a logical block, and optionally reprogrammed is used as another logical block then.In addition, this nano unit is suitable for being encased in and replaces traditional logical block in the standard computer, provides similar function on the attainable more small scale than current at one in the silica-based logical block of tradition simultaneously.
By realizing the versatility of current nano unit, soundness and produce easily from allowing to self-assemble in the molecular components the structure this nano unit of structure.Unless by the shelf guiding, otherwise molecular components can be combined into a random structure, such as a random network.Because this network preferably changes at the yardstick from about 1nm to about 2 μ m, so it is referred to herein as a nanometer network.This random structure has such benefit, if promptly lack specific molecular parts at an ad-hoc location, then this is for the almost not influence of function of this nano unit.That is to say that regardless of the precision architecture of this molecular components, this nano unit also is programmable.This nano unit can be by a kind of alternative manner programming that is called as adaptive algorithm, and wherein this algorithm is adjusted according to the structure of molecular components.
Therefore, the present invention comprises the combination of these feature and advantage, makes it can overcome each problem of prior-art devices.According to the following detailed description of the preferred embodiment of the present invention, and referring to accompanying drawing, those skilled in the art will understand aforesaid each feature at an easy rate, and other characteristic.
Brief Description Of Drawings
Being described in more detail with reference to the accompanying drawings of the preferred embodiment of the present invention provided, wherein:
Fig. 1 is the synoptic diagram according to a nano unit of one embodiment of the invention;
Fig. 2 A and 2B are synoptic diagram according to the pin configuration of one embodiment of the invention;
Fig. 3 is the synoptic diagram according to the molecular components of one embodiment of the invention;
Fig. 4 A and 4B have shown I (V) response diagram of the molecule of describing in Fig. 3;
Fig. 5 is the synoptic diagram according to a molecular computer of an example embodiment of the present invention;
Fig. 6 contains the synoptic diagram of pyridine group as the molecular device of " binding clip ";
Fig. 7 is the synoptic diagram according to the simulation nano unit of an exemplary embodiments of the present invention, and wherein " on " high conducting molecule is shown as black line, and " off " low conducting molecule is shown as white line;
Fig. 8 is the synoptic diagram of the simulation nano unit among Fig. 7, and it is programmed to play an inverse gate;
Fig. 9 is the synoptic diagram of the simulation nano unit among Fig. 7, and it is reprogrammed to play a NAND door; And
Figure 10 is the synoptic diagram of the simulation nano unit among Fig. 7, and it is reprogrammed to play anti-phase half-adder door.
DETAILED DESCRIPTION OF THE PREFERRED
Nano unit
At first referring to Fig. 1, a molecular electronic device 10 comprises a nano unit 12.Nano unit 12 comprises at least one and preferred a plurality of molecular circuit parts 14.Nano unit 12 preferably has maximum about 2 μ m, more preferably in the about linear dimension 16 between 1nm and the about 2 μ m.Linear dimension 16 can be the length on the limit 18 of nano unit 12.Limit 18 sealing molecular circuit parts 14 that is to say to limit the border that comprises molecular circuit parts 14.Nano unit 12 can comprise the side of any amount, and can be that one dimension arrives three-dimensional.Nano unit 12 is painted as a square structure in Fig. 1.Should understand and to consider the structure of replacing, such as circular, rectangle and any other suitable structure.
Still referring to Fig. 1, nano unit 12 preferably further comprises at least one input lead 20 and at least one output lead 22.The quantity of input lead and output lead is unimportant.The technology that number of leads preferably only is used to form lead-in wire 20,22 is such as traditional photoetching technique, and the size of nano unit 20 retrains.Lead-in wire 20,22 is presented at the edge of nano unit 12 in Fig. 1.Should understand and to consider other configuration of going between.For example input lead 23 and the output lead 25 that extends from nano unit 27 edges can intersect, and be such such as what show in Fig. 2 A.Alternatively, input lead 29 and output lead 33 can stretch out from the concentric circumferences 37 that limits nano unit 39 edges, shown in Fig. 2 B like that.
Nanometer network 20 preferred each input lead 20 and each output lead 22 of covering.The lead-in wire 20,22 can be metal and also be designed to be connected to traditional lithography interconnection device, such as metallic circuit.Edge molecular circuit parts 24 are connected to lead-in wire 20,22 by molecule binding clip 26.The molecule binding clip comprise based on such as the part of sulphur, oxygen, selenium, phosphorus, isonitrile, pyridine and carboxylate with the viscosity end group group of metallic bonding.A particularly preferred molecule binding clip based on sulphur is a mercapto.It is to be understood that more terminal molecular circuit parts 14 can comprise two, three, four, five, six or, such as at Tour, J.M.; Kozaki, M.; And Seminario, J.M. show, J.Am.Chem.Soc.120, disclosed such in page or leaf 8486-8493 (1998) " Molecular Scale Electronics:A Synthetic/Computational Approach toDigital Computing ", it is hereby incorporated by, and at United States Patent (USP) 6, as described in 259,277, it also is hereby incorporated by.Each terminal preferred end that comprises the molecule binding clip.
Still referring to Fig. 1, nano unit 12 preferred nanometer networks with such network structure, wherein these molecular circuit parts form at least a portion or a plurality of part of this network.The preferred nanometer network at random of nanometer network 28.Especially, nanometer network 28 preferably has at least one in the following random cells.The x-ray crystal structure of nanometer network 28 can not comprise the one-period of indication molecule circuit block or the remarkable peak value of semiperiod structure, more preferably on the length dimension between about 1nm and the 2 μ m.Alternatively, the x-ray crystal structure of this nanometer network 28 can comprise the peak value that at least one indication lacks characteristic length scales between about 1nm and the 2 μ m.Also alternatively, nanometer network 28 can have a structure that presents convergent-divergent behavior, the behavior of many convergent-divergents, fractal characteristic etc.Also alternatively, nanometer network 28 can have one and comprise molecular circuit parts 14 with respect to the structure along the arbitrary axis orientation of a known stochastic distribution, and this known stochastic distribution is such as the Poisson distribution that is several molecule between the nano particle in this network.Still also alternatively, nanometer network 28 can have one and comprises and follow a known stochastic distribution such as the structure of mass centre position that is the molecular circuit parts 14 of amorphous or non-setting solid features.Should be understood that as used herein term " at random " can comprise any other traditional definition and also can and term " irregular " and " irregular " use convertibly.In addition, it is to be understood that and randomness can take place for certain length dimension.Especially, term random network herein comprises the network with less long-range order.Long-range is represented the length dimension with respect to the parts of forming network, and distance is long.The random alignment of molecular circuit parts 14 has such advantage in the molecular electronic device 10, and it can be fault-tolerant promptly installing 10.
Still referring to Fig. 1, in a preferred embodiment, nanometer network 28 is self assemblies.As in the art, the self assembly network is a network of creating itself in response to excitation such as the variation of reaction conditions from its building block.The nanometer network of a self assembly preferably has non-predetermined structure.In addition, a self-assembled nanometer network in this embodiment preferably only has the order of short distance between adjacent nano particle, and for long length dimension, preferably unordered.
The nanometer network that is suitable for using in the present invention is including but not limited to the nanometer network of structure as described below.Metal nanoparticle is deposited on the oxide grid.This oxide grid can be a Semiconductor substrate, wherein removes material to limit a hole that this nanometer network border is provided.The molecule self assembled monolayer of each nano particle of covering can be used for being controlled at the spacing between the nano particle.Via previous described method, molecular switch is inserted in the barrier of the inertia self assembled monolayer of each nano particle, and thus with adjacent nano particle interconnection.The method is at Dunbar T.D.; Cygan, M.T.; Bumm, L.A.; McCarty, G.S.; Burgin, T.P.; Reinerth, W.A.; Jones, II, L.Jackiw, J.J.; Tour, J.M.; Weiss, P.S.; Allara, D.L. shows, 2000,104 the page or leaf of J.Phys.Chem.B. discloses among the 4880-4893, and it is hereby incorporated by.
Still referring to Fig. 1, consider trainable and comprise the nanometer network 28 of any suitable traditional molecular circuit parts.Therefore, can from molecule circuit, molecular rectifier, molecule diode, molecular switch, molecule resistance, molecular transistors or the like and their combination, select molecular circuit parts 14.Molecule circuit, rectifier, diode, switch, resistance or transistor are that any can being used in is similar to traditional circuit, rectifier, diode, switch, resistance or transistorized molecule respectively in the circuit.The molecule circuit of example comprises oligomeric (phenylene ethynylene) etc.The example molecular rectifier comprise hexadeculquinoliniumtricyanoquinodimethanide, or the like.
Still referring to Fig. 1, molecular circuit element 14 preferably comprises the molecule section of conjugation.The group that these conjugated molecule sections preferably have been used in the end of molecule binding clip effect replaces.Be used as the example conjugated molecule of the conjugated molecule section of molecular circuit element, and the example conjugated molecule that is used as molecule binding clip function, at Tour, J.M. show, Accounts of Chemical Research, in volume 33, numbers 11,791-804 (2000) " Molecular Electronics.Synthesisand Testing of Components "; And Seminario, the volume 120 of J.Am.Chem.Soc. that J.M. shows is in " the Molecular Scale Electronics:A Synthetic/Computational Approach to Digital Computing " of 8486-8493 (1998) page or leaf; Dirk, S.M., Deng Tetrahedron that the people shows 57, all be described in page or leaf 5109-5121 (2001) " Accoutrementsof a molecular computer:switches; memory components and alligatorclips ", each all is hereby incorporated by these articles.In addition, molecular circuit element 14 can be included in U.S. Patent application _ _ _ _ _ _, attorney docket be OCR 1049, on April 18th, 2000 propose, name is called in disclosed molecule, conduction organic material or the conductive path in " Molecular ScaleElectronic Devices " any one, this application is hereby incorporated by.
Molecular circuit element 14 preferred molecules that present negative differential resistance.Traditional resonant tunneling diode also presents negative differential resistance.Yet traditional resonant tunneling diode is based on gallium arsenide.Negative differential resistance is a useful especially attribute in design logic, and is non-because it allows.
Referring now to Fig. 3,, molecular circuit element 14 can be a molecule diode 30.The molecule diode of example comprises the low polyphenylene 32 that a single nitro replaces, especially 4,4 '-diphenylene ethynylene-2 '-low polyphenylene 34 that nitro-1-benzenethiol and dinitro replace, especially 2 ', 5 '-dinitro-4,4 '-diphenylene ethynylene-1-benzenethiol.
The molecule diode that substitutes comprises analog that two mercaptan of molecule 32 and 34 replace, especially is respectively 4,4 '-diphenylene ethynylene-2 '-nitro-1,4 " diphenyl disulfide phenol and 2 ', 5 '-dinitro-4; 4 '-diphenylene ethynylene-1,4 " diphenyl disulfide phenol.In these molecules each all comprises a mercapto in each end.This structure optimization is used at each end and the golden molecular circuit element 14 that engages.Said term molecular switch also comprises these molecules, when they in electrical environment the time, allow them to play a switch.Can by increase or change substituting group, by making another molecule and molecule diode bonding or by this molecule diode is created this electrical environment such as be connected to a circuit component by the molecule binding clip.
Nano unit 12 can also comprise the parts 40 of nanoscale.Nanoscale parts 40 are preferably arranged as the part of nanometer network 28.The nanoscale parts can have the function of electric power connector, to help that molecular components 14 is constructed to a conductive network.In addition, the nanoscale parts can have electronic circuit component such as electricity lead, the function of electric capacity, resistance, impedance etc.The nanoscale parts of example comprise nanotube, nano particle, nanometer rods, and their combination.Nano particle can be metal, semi-conductive, dielectric or the like.Example nano particle and nanotube be at Reed, M.A. and Tour, and J.M. shows, be described among the Scientific American282 page or leaf 86-93 (2000), and it is hereby incorporated by.The example nanometer rods is at Martin, B.R. wait that the people shows, Adv.Mater.11, be described in the article " Orthogonal self-assemble on colliodal gold-platinumnanorods " of 1021-1025 (1999) page or leaf, it is hereby incorporated by.
Should be understood that the place of in Fig. 1, representing molecular circuit parts 14, can replace with a plurality of molecular circuit parts 14 by a line.For example, a plurality of molecular circuit parts 14 can connect each in a pair of nanoscale parts 40, thereby across the nanoscale parts.
Still referring to Fig. 1, in an exemplary arrangement, a nano unit 10 comprises molecular switch 52 and nano particle 54.Nano particle 54 preferably metal, more preferably the gold.Molecular switch 52 is preferably has the switch of thiol molecule binding clip in each end, more preferably 2 ', 5 '-dinitro-4,4 '-diphenylene ethynylene-1,4 " diphenyl disulfide phenol.Edge molecular switch 56 is connected to input lead 20 and output lead 22.Molecular switch 52 interconnection nano particles 54.The interconnection of Shi Yonging herein has makes the meaning that can be electrically connected.On this meaning, change an angle and say, nano particle 54 interconnection molecular switches 52.In addition, the electrical connection that is provided by a molecular switch 52 needs not be permanent, and can interrupt by configuration molecular switch 54.
Nanometer network 28 is preferably formed by molecular switch 52 and nano particle 54.Especially, nano particle 54 does not preferably almost have order ground to arrange.In addition, molecular switch 52 interconnection nano particles 54.Not all nano particle 54 all connects other nano particle 54, but some nano particle 54 is connected to more than one or plural other nano particle, and connection can be a stochastic distribution.
It is to be understood that can be by changing the metal in the nano particle 54, the full chain of the conjugation of molecular circuit parts 14, the molecular moiety that is used for molecular circuit parts 14 binding clips, the geometric configuration of lead-in wire 20,22, and other is used for adjusting any one or their combination of the suitable attribute of impedance, optimizes the impedance attribute of nano unit 12.
It is to be understood that in addition molecular circuit parts 14 can be polymorphic molecules, such as the molecule of three, four, five or six states.For example, C 60Have by little by little obtaining six separate states that six electronics reach.Therefore, molecular circuit parts 14 are not limited to binary zero and " 1 ", perhaps " open (on) " and " closing (off) ", and for example can consider ternary and quaternary logic.
Referring now to Fig. 5,, a plurality of programmable electronic installations 62, preferred nano unit 64 can be interconnected to form a molecular computer 66 by the metallic circuit that the standard lithographic printing produces.Nano unit 64 is preferably constructed as mentioned above with respect to Fig. 1, more preferably for example constructs as shown in Figure 4.Can consider to be used for any traditional architectures by circuit 65 interconnection.
Programmability
Refer again to Fig. 1, molecular electronic device is preferably programmable.Especially, molecular electronic device 10 preferred available a kind of adaptive algorithm programmings.As used herein, adaptive algorithm is a kind of algorithm that can use an iterative process " differentiation ", wherein this algorithm queries and adjust a system so that this system is moved to the state of an expectation.More particularly, adaptive algorithm is that a class comprises one group of rule and is used for the actual result of system and an objective result are compared, and adjusts the algorithm of the input of this system according to the function of the difference of actual result and objective result.According to the behavior of this system, next actual result is associated with the input of adjustment.By repeatedly adjusting input, make actual result converge to objective result.In this way, by this adaptive algorithm training system.
Molecular device 10 preferably can be programmed by the adaptive algorithm that is used to construct molecular circuit parts 14.
In a preferred embodiment, molecular circuit parts 14 preferably can be configured by using a voltage at lead-in wire 20,22 two ends.For example, molecular circuit parts 14 attribute that can comprise the influence of conductance can be brought in the molecule of adjusting for 20,22 liang by voltage being added to lead-in wire.Attribute controlled, that influenced by conductance is preferably selected from electric charge, structural regime, electronic state etc., and their combination.
It is to be understood that molecular circuit parts 14 can be by other method configuration.
Molecule circuit and switch based on low polyphenylene are the molecule examples that conductance is influenced by electric charge, electronic state and structural regime.Can believe that the two ends that voltage is added to these molecules can influence the transition between the electronic state.Voltage can cause the molecule trapping electronics; Therefore increase its electric charge.Further, when charging, this molecular transition to one excited electronic state.Benzyl ring relative to each other rotate in case electron trajectory such as the pi-rail alignment, thereby form a molecular orbit that extends at this molecular length.When having an impressed voltage, can believe that can set up electronics by molecular orbit and molecular conductor is connected.The explanation of the molecular mechanism of switching function is included in Donhauser, people such as Z.J. show, Science 292,2303-2307 (2001) page or leaf in, its content is hereby incorporated by.
In a preferred arrangement, be used to make lead-in wire to connect the electrical characteristics of material of molecule and the electronic transition energy response of this molecule is complementary.Especially, the Fermi energy that preferably connects the metal of a conjugated molecule circuit component approaches the energy of the lowest unoccupied molecular orbit (LUMO) in the molecular circuit element aspect energy.This has the advantage of optimizing the impedance operator that connects between metal and the molecule.
The operation of molecular switch is different from the molecule circuit.Remove a voltage then by applying, the conductance of switch can switch to a stable phase to long state.Referring to Fig. 3, utilized 24 hours stabilization time molecule 34 to obtain at least.In addition, can expect, improve the sealing of the system that comprises a molecular switch; Use have many nitros, based on the similar molecule of low polyphenylene; Perhaps use the molecule of newtype, with allowing longer stabilization time, such as several days or some months.Preferred molecular switch can be by applying a switching voltage configuration, and work in a high or low conductivity state less than the operating voltage of this switching voltage by applying one.
Referring now to Fig. 3,, illustrates the operation of molecular switch by the operation of molecule 34.When a switching voltage that surpasses 2.0V puts on the molecule, molecule 34 switch to high conductivity state and also when one be lower than-when the relevant voltage of 2.0V puts on the molecule 34, it will switch to a low conductivity state.For the high conductivity state, switching voltage preferably about 0.2 and 3.0V between, and for the low conductivity state-0.2 and-3.0V between.In Fig. 4, high conductivity state and I (V) the curvilinear correlation connection of describing by stain, and low conductivity state and low I (V) the curvilinear correlation connection of describing by white point.Determine in the difference degree between this height conductivity state by the difference between these two curves.When approximately-when a operating voltage between 2V and the 2V puts on the molecule 36, height that they switch to recently according to them or low conductivity state and conducting.If applied the voltage that surpasses this negative differential resistance (NDR) restriction, then the molecule in this high conductivity state also presents low conductivity.Determine because the influence of NDR by the ratio between peak value of describing by stain and valley, be in the difference degree between the high low conductivity of molecule of high conductivity state.The absolute value of operating voltage is preferably approximately between 0.2V and the about 2.0V.
Refer again to Fig. 1, nano unit 12 preferably can be by a kind of algorithm programming that is used to be provided with molecular switch 54.Molecular switch 54 preferably can be brought in setting by voltage being added to two of lead-in wire 20,22.Preferably, a kind of adaptive algorithm of the nano unit 10 that is used to programme can draw the voltage combination that can put on lead-in wire 20,22, wherein goes between 20,22 will construct long-range molecular switch, that is to say not to be directly connected to 20,22 the molecular switch of going between.
The type that it is to be understood that adaptive algorithm is not crucial.Can use any suitable traditional adaptive algorithm that can train such as the network of nanometer network 28.The adaptive algorithm of example comprise genetic algorithm, simulated annealing, enhancing learning algorithm, the time difference algorithm, follow the tracks of winning algorithm, or the like.At Goldberg, D.E. show, Genetic algorithms in Search, Optimization, and Machine Learning (Addison Wesley, Reading, MA, 1989) described the principle of adaptive algorithm in 1-15 page or leaf and the 221-229 page or leaf, it is hereby incorporated by.
Adaptive algorithm has the advantage of recovering from mistake.In addition, the use of adaptive algorithm also provides fault-tolerant advantage.Therefore, molecular electronic device 10 is adapted to pass through and can has the automatic assembly method of realizing on the industrial scale of the effective reliability of cost at one and make.This adaptive algorithm can be encoded in a secondary computer.
An advantage of the invention is the programmability of molecular electronic device 10, the meaning refers to that this device needn't be used as concrete logical unit when first assembling.Therefore, molecular electronic device 10, nano unit 12 and nanometer network 28 do not need to have a predetermined structure.Nano unit 12, especially nanometer network 28 can be self-assembled into that to be one can be fixed structure not at random.Adaptive algorithm can be used for handle assembly 10 be programmed for one the expectation device effect.
In a preferred embodiment, device 10 is programmed for as the logical block that is selected from AND, OR, XOR, NOR, NOT and NAND door etc.Therefore, in this embodiment, when device 10 had been programmed, it was a programmed logic device with the logical block that is selected from AND, OR, XOR, NOR, NOT, NAND etc.
In a further advantageous embodiment, device 10 is programmed for as the logical block that is selected from totalizer, half-adder, multiplexer, demoder etc.Therefore, in this embodiment, when device 10 had been programmed, it was a programmed logic device with logical block of the totalizer of being selected from, half-adder, multiplexer, demoder etc.In also having another preferred embodiment, device 10 is programmed for as a memory cell.
It is to be understood that device 10 preferably can be as any door with truth table of being supported by the I/O pin.
Device 10 is preferably re-programmable.Especially, originally be programmed to device 10, can be reprogrammed to as in the above-mentioned logical OR memory storage another as one of above-mentioned logical OR memory cell.Therefore, device 10 has the advantage of versatility.
Above-mentioned programmability is the preferred topological structure by adopting above-mentioned nano unit structure and realize in conjunction with preferred programmed method as described below preferably.
Programmed method
The method for optimizing of an electronic component of structure comprises nano unit that a self assembly is provided and the effect that this nano unit has been programmed for electronic unit.This nano unit is foundation nano unit of any embodiment as mentioned above preferably.
Programme this nano unit preferably comprise the configuration these molecular circuit parts.Disposing these molecular circuit parts is preferably to comprise by voltage being added to input lead and output lead two and brings in the attribute that influenced by conductance that is adjusted to few molecular circuit parts.This attribute that influenced by conductance can be selected from above-mentioned any attribute that influenced by conductance.
This nano unit of programming preferably further comprises the performance of testing this nano unit.For example, can be by the I/O operating voltage of this nano unit relation and target true value table be compared test performance such as the logic true value table of an expectation.
Programme this nano unit preferably further comprise these molecular circuit parts of repeated configuration and the test this nano unit performance step, play up to this nano unit till the electronic component effect of expectation.For example, can repeat this step accords with above-mentioned target true value epiphase in this I/O operating voltage closes the predictive error that ties up to an expectation.In case be programmed, this electronic unit plays any above-mentioned logical OR memory cell or other similar device.
Providing the nano unit of a self assembly to comprise preferably that the parts that allow a plurality of nanoscales are self-assembled into is a random arrangement, allow a plurality of molecular circuit parts to be self-assembled into and be the interconnection network between these nanoscale parts, and utilize the molecule binding clip that these molecular circuit parts are connected to the nanoscale parts.This random arrangement can be one and have short-range order and the unordered arrangement of long-range.This molecule binding clip can comprise any above-mentioned molecular moiety that can be used as the use of molecule binding clip.A preferred molecular moiety is a mercapto.These nanoscale parts can be, for example, and any above-mentioned nanoscale parts.These molecular circuit parts can be, for example, and any above-mentioned molecular circuit parts.
As mentioned above, be used to programme or train any embodiment of a nano unit to can be used in by computing machine of a plurality of nano units assemblings.Make computer method and preferably comprise nano unit a plurality of training, self assembly is provided, this nano unit of train and the nano unit that a plurality of unbred nano units interconnect and permission was trained are trained this unbred nano unit.An advantage of said method is that the nano unit of training is used for aiminging drill of this indiscipline nano unit.Therefore, this method can comprise the multistage nano unit and use the nano unit of up-to-date training to train unbred nano unit of repeating to interconnect.By this way, can from a plurality of nano units, construct a molecular computer fast and effectively.
Embodiment
Embodiment 1
Synthesizing of conjugated molecule
Switch and memory member
For by adding the storage time that more nitro improves electronics, we select 1 and 2 two synthetic target for use.SAc is easy to be cracked into mercaptan (SH) freely during with acid or alkali treatment.Synthesizing as shown in Scheme 1 of compound 1.
Figure A0181522900311
Synthetic target 1 starts from 2, and 5-two bromo-4-nitroanilines (3) obtain 4,4 with phenylacetylene by the Sonogashira coupling and form 5 by the HOF oxidation again.Final coupling generates required compound 1 with 24% productive rate.Low-yield in this coupling may hint that easily the mercaptan of deprotection or stable palladium ring (palladacycle) intermediate form in coupling process.
Route 1
Figure A0181522900321
In order to conduct electricity, all phenyl ring should be preferentially each other at grade in the conjugated molecule.If phenyl has replaced final phenylacetylene base, this system can not obtain planarity.In the work of measuring rotational barrier (that is: conduction barriers) effect, the synthetic of compound 2 starts from 2, and 5-two bromo-4-nitracetanilides (6) form compound 7 with phenylboric acid by the Suzuki coupling.Remove acetyl group and obtain aniline (8) functional group, obtain 9 through the HOF oxidation to be close to quantitative yield subsequently.Finally synthesize 2 by the Sonogashira coupling.
Route 2
Figure A0181522900322
Route 3
Synthetic 13 is the electrochemical properties that contain the quinone molecular system in order to study.Route 3 shows from 1,4-dimethoxy benzene (10) synthetic 13.Use bromine and glacial acetic acid to be transformed in 11 the process and obtain productive rate preferably 10.Then compound 11 and excessive benzene ethyl-acetylene cross-coupling obtain compound 12,12 are oxidized to quinone and just obtain required compound 13 subsequently.Must take this synthetic route,, palladium is oxidized to divalent by 0 valency, thereby stop catalytic cycle because known quinone because quinone generally can not be used in the coupling of palladium catalysis.Ceric ammonium nitrate (CAN) is an oxide isolation a kind of gentleness, neutral, knownly can generate quinone from dimethoxy benzene, is one for this process and reasonably selects 18The naphtoquinone compounds productive rate that this oxidizing process obtains is 47%.In these systems, the top condition of this oxidation reaction does not also obtain.
Route 4
Route 4 shows that using a thioacetic acid ester group to synthesize as the binding clip of protecting contains the quinone molecular system.11 and the cross-coupling of phenylacetylene obtain 14, under the Sonogashira coupling condition, because the equivalent responses ability of two aryl bromides of 11, it is medium and productive rate that statistics can be estimated is 33%.The 15th, by trimethyl silyl acetylene and 14 cross-couplings, and then the alkynes deprotection obtains.Further obtain compound 16 with the cross-coupling of 4-iodobenzene thiacetate by palladium catalysis.Final compound 17 obtains with 74% productive rate by the CAN oxidation.But this productive rate isolates.Other attempt all obtaining much lower result (~20%).Optimization for the CAN oxidizing condition also has a lot of work to do.
Route 5
Figure A0181522900341
Route 5 expression be two ends all have a binding clip contain the synthetic of quinone molecular system (5).This compound can be used for crosslinked metal nanoparticle, connects as the shunt in the following molecular electronic device.11 with excessive trimethyl silyl acetylene generation cross-coupling reaction, carry out deprotection subsequently and obtain diine 18 purely.Then the 4-iodobenzene thiacetate generation cross-coupling with two equivalents obtains compound 19.At last, 19 by the CAN oxidation step, generates 20 with moderate yield.
Binding clip
Contain compound synthetic of pyridine binding clip for introducing several in the molecular electronic device from compound 21.22 synthetic be pyridine 21 and 2,5-two bromo nitrobenzenes are finished by the coupling shown in reaction equation 1.Productive rate is low may to be because the TMS base has formed stable cupfic acetylide after taking off.If do not take the original position deprotection, this pyridine alkynes has proved unsettled.
24 is synthetic according to route 6.Synthetic starting from optionally is coupled to 2 with 21 of 1 equivalent, the ortho position of nitro in 5-two bromo nitrobenzenes and obtain 23.Coupling 23 generates 24 and finish synthetic to the phenylacetylene.
Route 6
Figure A0181522900352
The synthetic influence that starts from the research nitro about the chemisorbed pyridine binding clip of compound 26.For this reason, compound 24 adopts with 23 synthetic similar modes as shown in Scheme 7 synthetic.The phenylacetylene of monovalent optionally is coupled to 2, generates 25 on 5-two bromo nitrobenzenes, then be coupled to obtain on 21 high yield very 26 and finish that this is synthetic.
Route 7
Figure A0181522900361
Connect the synthetic of molecule 28 according to route 8.Synthetic starting from 2,5-two bromo-4-nitracetanilides provide 27 with excessive trimethyl silyl acetylene coupling, follow deprotection in position, and obtain 28 with the coupling of 4-iodo pyridine, and productive rate is lower.The low-yield of coupling reaction may be because the cyclization process of nitro and alkynes unit.
Route 8
The synthetic of compound 31 is in order to form a SAM, via protected benzenethiol chain end group, compares with phenyl when making in the terminal introducing device of pyridine of molecule as better summit and Metal Contact.31 synthetic be by coupling 2,5-two bromo-4-nitracetanilides and 21, low-yield obtains compound 29.29 follow and the coupling of trimethyl silyl acetylene, generate 30 with the sal tartari deprotection subsequently.Finally, 30 with the coupling of 4-iodobenzene thiacetate, obtain the molecular device 31 of high yield (75%).
Route 9
Figure A0181522900371
Synthetic 32 is in order to study the influence as preceding 2 described rotational barriers.32 syntheticly start from 7 and 21 synthetic couplings of front, and obtain higher yields, shown in reaction equation 2.
Figure A0181522900372
According to reaction equation 3, use above-mentioned 33 to come synthetic compound 34.34 is that the nitroaniline of end group is similar with mercaptan with before having presented negative differential resistance (NDR) among the embodiment at device.
Except the system that contains pyridine, also synthesized three kinds possible be terminal storer and switch block with the diazo salt.38 with the ethanethioyl be terminal NDR and memory member 1And pyridine radicals is terminal 24 similar.38 synthetic starting from 35 7Be coupled to 2, on 5-two bromo nitrobenzenes, generate 36, then 36 be coupled to formation compound 37 on the phenylacetylene with medium productive rate.37 diazotising finally generates the molecule 38 of high yield.
Route 10
Figure A0181522900381
40 and 26 structural similarity is except pyridine radicals is replaced by aryl diazonium salts.40 synthesize as shown in Scheme 11.Coupling aniline 35 generates the diazonium precursor 39 of moderate yield to the nitro compound 25.The diazotising of aniline 42 generates required product 37.
Route 11
Figure A0181522900382
It is synthetic according to route 12 that nano particle connects molecule 43.From dinitro 41, obtain dinitro diphenylamine 42 with aniline 35 couplings, diazotising generates 43 of high yield subsequently.
Route 12
Experiment
General step
Unless responding to indicate, institute all in dry nitrogen atmosphere, carries out.SILVER REAGENT ether and tetrahydrofuran (THF) distill from the benzophenone sodium ketyl under nitrogen.SILVER REAGENT methylene chloride (CH 2Cl 2) under nitrogen from calcium hydride (CaH 2) middle distillation.Triethylamine and N, N-diisopropylamine (H ü nig ' s alkali) distills from calcium hydride under nitrogen atmosphere.A large amount of hexane distillations is standby.Gravity column chromatography and sudden strain of a muscle formula column chromatography use the 230-400 purpose silica gel from EM Science.Thin-layer chromatography (TLC) adopts Merck 40 F on 0.25mm thickness 254Carry out.
General palladium/copper coupling reaction step
In the test tube that has the glass nut of oven drying, add all solids, comprise aryl halide (bromine or iodine), alkynes, cupric iodide, triphenylphosphine and palladium catalyst.Remove air in a vacuum, substitute with drying nitrogen (3 *).Liquid tetrahydrofuran is added on wherein with H ü nig ' s alkali or triethylamine, is reflected under the stirring and heats in oil bath.Reaction mixture adopts gravity filtration process to filter once cooling off, and removing solid, and dilutes with methylene chloride.Reaction mixture ammonium chloride (NH 4Cl) (3 *) extraction with aqueous solution is come out.Organic layer also filters with dried over mgso.Solvent is removed in a vacuum.
The deprotection general step of the alkynes of trimethyl silyl protection
In being housed, the round-bottomed flask of splash bar adds protected alkynes, sal tartari (5 equivalents are in protected alkynes), methyl alcohol and methylene chloride.Add thermal response, use the methylene chloride diluted reaction mixture, and wash with salt solution (3 *) once finishing.The organic layer dried over mgso.Solvent is removed in a vacuum.
The general step of HOF oxidation
In 125 milliliters of tygon bottles, add H 2O (2 milliliters) and CH 3CN (60 milliliters) is cooled to-20 ℃.F 2(in He, accounting for 20%) with 50sccm speed through solution foaming 2 hours.The HOF/CH that obtains 3CN solution filled He gas 15 minutes.Material that will oxidation adds in acetone or the ethyl acetate (10 milliliters), mixes 5 minutes down at-20 ℃, adds saturated sodium bicarbonate solution again and neutralizes.Then isolate organic phase, use dried over mgso, solvent is removed in a vacuum.
The general step of aniline and the tetrafluoro boric acid nitrosonium salts diazo-reaction in acetonitrile-sulfolane system
NOBF 4Weigh being full of in the dry vessel of nitrogen, place the round-bottomed flask that the magnetic force splash bar is housed, seal up barrier film.Acetonitrile and sulfolane are injected into reactor with 5 to 1 volume ratio, and gained suspending liquid is cooled to-40 ℃ in dry ice/acetone batch.The preparation of aniline solution is by under blanket of nitrogen the sulfolane (45-50 ℃) of heat being added in the amine, and sonicated 1 minute adds acetonitrile (volume ratio 10-20%) subsequently.Then aniline solution was added in the nitrosonium salts suspending liquid with interior at 10 minutes.Reaction mixture kept 30 minutes at-40 ℃, then was heated to room temperature.At this moment, diazo salt is precipitated out, filters and collect, with ether or washed with dichloromethane and dry by adding ether or methylene chloride.Use ether and/or methylene chloride precipitates once more and make product obtain purifying once more from DMSO.
4-ethynyl phenyl-2,4-binitro bromobenzene (5)
2-bromo-4-nitro-5-ethynyl phenyl aniline (490 milligrams, 1.48 mMs) general step according to the HOF oxidation in ethyl acetate (10 milliliters) carries out oxidation, obtains 320 milligrams of yellow solids (productive rate 60%).IR(KBr)3442.7,3101.4,2216.8,1610.6,1540.9,1461.3,1384.8,1358.7,1337.1,1264.4,906.2,849.6,824.4,760.2,689.8cm -11H?NMR(400MHz,CDCl 3)δ8.41(s,1H),8.09(s,1H),7.60-7.58(m,2H),7.41-7.39(m,3H)。 13C?NMR(100MHz,CDCl 3)δ152.1,150.4,132.7,131.7,131.0,130.7,129.1,121.5,119.8,113.9,102.0。HRMS: calculated value is 345.9589, and measured value is 345.9585.
2 ', 5 '-dinitro-4,4 '-diacetylene phenyl-1-thioacetyl benzene (1)
4 (300 milligrams; 0.86 mM), 4-ethinyl (ethanethioyl) benzene is (183 milligrams; 1.04 mM), two (dibenzalacetone) palladium is (12 milligrams; 0.02 mM), cuprous iodide is (4 milligrams; 0.02 mM), triphenylphosphine (13 milligrams, 0.05 mM), H ü nig ' s alkali (0.60 milliliter) and tetrahydrofuran (20 milliliters) react according to general coupling step.Reaction mixture is operated according to above-mentioned steps, is heated to 60 ℃ and spends the night.Crude product sudden strain of a muscle formula column chromatography (monox, 3: 1 methylene chloride: hexane) come purifying, obtain 90 milligrams of glassy yellow solids (productive rate 24%).IR(KBr)2220.2,1705.2,1545.5,1499.81,1396.8,1337.5,1286.1,1252.1,1108.6,1087.2,953.2,926.0,868.3,827.2,756.7,684.1,618.3cm -11H?NMR(400MHz,CDCl 3)δ8.34(d,J=0.4,1H),8.35(d,J=0.4,1H),7.63-7.59(m,4H),7.46-7.40(m,5H),2.49(s,3H)。 13C?NMR(100MHz,CDCl 3)δ193.2,151.1,134.7,133.1,132.7,131.0,130.7,129.1,122.8,121.7,119.4,118.6,102.4,100.9,84.8,83.5,30.8。HRMS: calculated value is 442.0623, and measured value is 442.0634.
2-bromo-4-nitro-5-phenyl acetophenone amine (7)
6 (676 milligrams, 2 mMs), triphenylphosphine is (52 milligrams, 0.2 mM), phenylboric acid is (293 milligrams, 2.4 mM), molybdenyl dichloride (triphenylphosphine) palladium is (70 milligrams, 0.1 mM) and (977 milligrams of cesium carbonates, 3 mMs) place 100 milliliters of round-bottomed flasks, remove air, substitute with nitrogen.Add toluene (30 milliliters), reaction is heated to 60 ℃ and kept 2 days.With ether diluting reaction thing, with aqueous ammonium chloride solution (2 *) washing, use dried over mgso, solvent is removed in a vacuum.Crude product sudden strain of a muscle formula column chromatography (CH 2Cl 2) purifying, obtain 430 milligrams of white solids (productive rate 64%).IR(KBr)3373.6,3322.4,3086.5,1774.0,1681.7,1568.9,1528.8,1445.8,1389.4,1358.6,1245.8,1179.1,1112.5,1056.1,1030.4,999.6,872.0,850.9,768.9,697.1cm -11HNMR(400MHz,CDCl 3)δ8.54(s,1H),8.15(s,1H),7.80(br?s,1H),7.40-7.38(m,3H),7.29-7.27(m,2H)2.26(s,3H)。 13C?NMR(100MHz,CDCl 3)δ168.44,143.77,139.34,137.74,136.81,128.67,128.51,128.47,127.85,123.31,110.59,25.05。HRMS:C 14H 11BrN 2O 3Calculated value is 333.9953, and measured value is 333.9952.
2-bromo-4-nitro-5-phenylaniline (8)
7 (500 milligrams, 1.49 mMs), sal tartari (1.031 grams, 7.46 mMs), methyl alcohol (30 milliliters) and methylene chloride (30 milliliters) are added in 100 milliliters of round-bottomed flasks, and stirring at room is 2 hours under nitrogen atmosphere.Filter sal tartari, and use washed with dichloromethane, obtain 437 milligrams of target compounds (productive rate 100%).IR(KBr)3463.7,3349.2,3221.3,1623.9,1584.6,1555.4,1495.5,1443.6,1406.9,1305.6,1259.4,1123.9,1051.7,896.7,846.5,760.1,701.3,632.1,563.8cm -11H NMR (400MHz, CDCl 3) δ 8.21 (s, 1H), 7.39-7.36 (m, 3H), 7.23-7.21 (m (overlapping), 2H), 6.61 (s, 1H). 13C?NMR(100MHz,CDCl 3)δ148.5,139.4,138.5,130.7,128.8,128.4,128.2,128.1,117.2,106.3。HRMS: calculated value is 291.9848, and measured value is 291.9846.
2,5-dinitro-4-phenyl bromobenzene (9)
8 (373 milligrams, 1.28 mMs) are dissolved in the ethyl acetate (10 milliliters), carry out oxidation according to the general step of HOF oxidation, obtain 407 milligrams of orange solids (productive rate 99%).
IR(KBr)3446.7,3090.4,1542.8,1461.1,1443.1,1347.3,1257.7,1114.6,1076.2,1051.8,1021.0,904.5,842.5,768.8,743.7,699.9,551.0,485.16cm -11H?NMR(400MHz,CDCl 3)δ8.16(s,1H),7.89(s,1H),7.47-7.45(m,3H),7.31-7.29(m,2H)。 13C?NMR(100MHz,CDCl 3)δ151.5,150.6,137.2,134.4,130.8,130.1,129.7,128.9,128.1,114.1。HRMS: calculated value is 321.9589, and measured value is 321.9592.
2 ', 4 '-dinitro-5 '-phenyl-4-ethynyl phenyl-1-thioacetyl benzene (2)
9 (147 milligrams; 0.46 mM), 4-ethinyl (ethanethioyl) benzene is (106 milligrams; 0.60 mM), two (dibenzalacetone) palladium is (26 milligrams; 0.05 mM), cuprous iodide is (9 milligrams; 0.05 mM), triphenylphosphine (12 milligrams, 0.05 mM), H ü nig ' s alkali (0.16 milliliter) and tetrahydrofuran (20 milliliters) carry out coupling according to the coupling reaction general step.Reaction mixture is stirred, and be heated to 45 ℃ and spend the night.(monox, 3: 1 methylene chloride: purification hexane) obtains 75 milligrams of orange solids (productive rate 39%) to crude product with column chromatography.IR(KBr)2922.7,2214.3,1702.7,1542.8,1488.1,1357.1,1271.1,1115.1,1088.6,956.0,908.6,829.9,770.5,707.0,623.4cm -11HNMR(400MHz,CDCl 3)δ8.16(s,1H),8.10(s,1H),7.63(d,J=8.4,2H),7.48-7.44(m,5H),7.36-7.33(m,2H),2.44(s,3H)。 13C?NMR(100MHz,CDCl 3)δ193.3,151.2,150.6,136.8,134.8,134.7,133.1,130.8,130.2,130.1,129.6,128.6,128.1,122.9,119.0,99.8,84.5,30.8。HRMS: calculated value is 418.0623, and measured value is 418.0619.
2,5-two bromo-1,4-dimethoxy benzene (11)
In 100 milliliters of round-bottomed flasks, 1,4-dimethoxy benzene (10.0 grams, 72.4 mMs) is dissolved in glacial acetic acid (20 milliliters).Glacial acetic acid (7.5 milliliters) solution of bromine (7.42 milliliters, 145.0 mMs) in 40 minutes room temperature being added in first solution dropwise.Reaction mixture stirred 2 hours.Crude product is with frozen water and ice methanol wash to obtain thin white crystal.Concentrated mother liquor and cooling are to obtain more white crystals (15.9 grams, productive rate 74%).Mp 136-138 ℃ (document 21Mp 144-145 ℃).IR(KBr)3091.9,3022.1,2968.8,2944.4,2842.8,1694.9,1494.2,1475.6,1436.5,1358.2,1275.0,1211.8,1185.0,1065.4,1021.9,860.5,760.4,441.8cm -11H?NMR(400MHz,CDCl 3)δ7.13(s,2H),3.87(s,6H)。 13C?NMR(100MHz,CDCl 3)δ150.93,117.53,110.90,57.43。
2,5-two (ethynyl phenyl)-1,4-dimethoxy benzene (12)
11 (8.745 grams, 29.55 molybdenyl dichloride (triphenylphosphine) palladium (0.415 gram mM),, 0.591 cuprous iodide (0.225 gram mM),, 1.182 triphenylphosphine (0.310 gram mM),, 1.182 mM), tetrahydrofuran (35 milliliters), H ü nig ' s alkali are (20.5 milliliters, 118 mMs) and phenylacetylene (7.8 milliliters, 70.92 mMs) react according to the general step of following coupling.Solution heated 3 days in 65 ℃ of oil baths.Recrystallization obtains required product 9.22 grams (productive rate 92%) from benzene.Mp 175-177 ℃ (document 16176-177 ℃).
1H?NMR(400MHz,CDCl 3)δ7.57(m,4H),7.34(m,6H),7.03(s,2H),3.89(s,6H). 13C?NMR(100MHz,CDCl 3)δ154.10,131.89,128.60,128.50,123.39,115.86,113.57,95.23,85.86,56.66。
2,5-two (ethynyl phenyl) benzoquinones (13)
12 (0.300 gram, 0.886 mMs) and tetrahydrofuran (6 milliliters) are added in 25 milliliters of round-bottomed flasks that splash bar is housed.Ceric ammonium nitrate (1.46 grams, 2.658 mMs) 3 ml water solution slowly are added in the flask, stirred 15 minutes.Add water, organic substance extracts with methylene chloride.Sudden strain of a muscle formula column chromatography (silica gel, with 1: 1 hexanes/ch as eluent) obtains required product (0.129 gram, 47%).IR(KBr)3047.5,2203.0,1716.2,1655.3,1568.3,1215.4,1100.6,902.1,757.6,686.4cm -1. 1H?NMR(400MHz,CDCl 3)δ7.58(dd,J=7.9,1.5Hz,4H),7.38(m,6H),6.99(s,2H). 13C?NMR(100MHz,CDCl 3)δ182.87,136.55,133.34,132.83,130.57,128.97,121.83,105.26,82.90。HRMS:C 12H 12O 2Calculated value is 308.0837, and measured value is 308.0834.
2-bromo-5-ethynyl phenyl-1,4-dimethoxy benzene (14)
11 (2.96 grams, 10.0 two (dibenzalacetone) palladium (0.115 gram mM),, 0.20 cuprous iodide (0.038 gram mM),, 0.20 triphenylphosphine (0.131 gram mM),, 0.50 mM), tetrahydrofuran (15 milliliters), H ü nig ' s alkali are (6.97 milliliters, 40.0 mM) and phenylacetylene (1.21 milliliters, 11.0 mMs) react according to the general step of following coupling.Test tube heated 18 hours in 50 ℃ of oil baths.Column chromatography (silica gel, with hexane/ether of 19: 1 as eluent) obtains required product, is not very pure (NMR check have an appointment 15% impurity), moderate yield (1.02 grams, productive rate 32%).Just join in next step reaction and go with this impure form. 1H?NMR(400MHz,CDCl 3)δ7.54(m,2H),7.33(m,3H),7.09(s,1H),7.02(s,1H),3.86(s,6H)。
1,4-dimethoxy-2-ethynyl phenyl-5-(trimethyl silyl ethinyl) benzene
14 (1.0 grams, 3.15 two (dibenzalacetone) palladium (0.036 gram mM),, 0.063 cuprous iodide (0.012 gram mM),, 0.063 triphenylphosphine (0.042 gram mM),, 0.16 mM), tetrahydrofuran (20 milliliters), H ü nig ' s alkali are (2.2 milliliters, 12.6 mM) and trimethyl silyl acetylene (0.89 milliliter, 6.3 mMs) react according to the general step of following coupling.Test tube is added a cover in 60 ℃ of oil baths and was heated 1 day.Sudden strain of a muscle formula column chromatography (silica gel, with 24: 1 hexane/ethyl acetate as eluent) is had impure product (0.83 gram, productive rate 79%) slightly. 1H?NMR(400MHz,CDCl 3)δ7.55(m,2H),7.32(m,3H),6.98(s,1H),6.95(s,1H),3.84(s,3H),3.83(s,3H),0.27(s,9H)。
1,4-dimethoxy-2-ethinyl-5-(ethynyl phenyl) benzene (15)
1; 4-dimethoxy-2-ethynyl phenyl-5-(trimethyl silyl ethinyl) benzene (0.830 gram; 2.48 sal tartari (1.71 grams mM); 12.4 mM), methyl alcohol (50 milliliters) and methylene chloride (50 milliliters) react according to the general step of following deprotection; obtain required product (0.513 gram, productive rate 79%). 1H?NMR(400MHz,CDCl 3)δ7.55(m,2H),7.33(m,3H),7.00(s,1H),6.98(s,1H),3.87(s,3H),3.86(s,3H),3.39(s,1H)。
4,4 '-two (ethynyl phenyls)-2 ', 5 '-dimethoxy-1-benzene thiacetate (16)
15 (0.513 grams; 1.96 two (dibenzalacetone) palladium (0) (0.058 gram mM); 0.10 cuprous iodide (0.019 gram mM); 0.10 triphenylphosphine (0.066 gram mM); 0.25 mM), tetrahydrofuran (20 milliliters), H ü nig ' s alkali are (1.37 milliliters; 7.84 mM) and 4-(ethanethioyl) iodobenzene (0.608 gram, 2.16 mMs) react according to the general step of following coupling.Test tube is added a cover in 55 ℃ of oil baths and was heated 3 days.Sudden strain of a muscle formula column chromatography (silica gel, with methylene chloride as eluent) is had impure product (0.621 gram, productive rate 76%) slightly. 1H?NMR(400MHz,CDCl 3)δ7.57(m,4H),7.38(d,J=8.1Hz,2H),7.33(m,3H),7.03(s,1H),7.02(s,1H),3.874(s,3H),3.870(s,3H),2.40(s,3H)。
2-ethynyl phenyl-5-((4 '-ethanethioyl) ethynyl phenyl) benzoquinones (17)
16 (0.050 gram, 0.12 mMs), acetonitrile (5 milliliters) and tetrahydrofuran (5 milliliters) are added in 25 milliliters of round-bottomed flasks that splash bar is housed.Once add the solution of ceric ammonium nitrate (0.13 gram, 0.24 mM) in water (1 milliliter).Stirred 30 minutes under the room temperature, add suitable ceric ammonium nitrate (0.13 gram, 0.24 mM) solution again.After 20 minutes, add entry (30 milliliters) and finish reaction, be settled out orange solids.Sudden strain of a muscle formula column chromatography (silica gel, with methylene chloride as eluent) obtains required product (0.034 gram, productive rate 74%).IR(KBr)3053.0,2924.3,2852.6,2205.4,1703.4,1652.7,1568.8,1483.7,1442.2,1354.8,1221.3,1105.4,1089.4,949.6,920.1,830.9,758.2,688.2,620.6cm -1. 1H?NMR(400MHz,CDCl 3)δ7.58(m,4H),7.42(m,2H),7.38(m,3H),6.98(s,1H),6.97(s,1H),2.42(s,3H)。 13C?NMR(100MHz,CDCl 3)δ193.22,182.74,182.67,136.88,136.51,134.63,133.34,133.24,132.99,132.84,130.94,130.63,128.99,122.81,121.80,105.38,103.99,84.17,82.92,30.80。HRMS:C 24H 14O 3The S calculated value is 382.0664, and measured value is 382.0663.
1,4-dimethoxy-2, two (trimethyl silyl ethinyl) benzene of 5-
11 (1.75 grams, 5.91 molybdenyl dichloride (triphenylphosphine) palladium (0.207 gram mM),, 0.296 cuprous iodide (0.113 gram mM),, 0.591 triphenylphosphine (0.155 gram mM),, 0.591 mM), tetrahydrofuran (20 milliliters), H ü nig ' s alkali are (4.1 milliliters, 23.64 mM) and trimethyl silyl acetylene (2.51 milliliters, 17.73 mMs) react according to the general step of following coupling.Test tube is added a cover in 55 ℃ of oil baths and was heated 2 days.Sudden strain of a muscle formula column chromatography (silica gel, with 1: 1 hexanes/ch as eluent) obtains the product of wanting (1.54 grams, productive rate 79%).IR(KBr)2957.0,2898.2,2851.2,2829.0,2149.1,1496.8,1464.1,1449.1,1388.2,1283.7,1249.0,1223.6,1203.1,1172.4,1039.6,883.2,841.3,757.4,714.9,696.2,626.4cm -1. 1H?NMR(400MHz,CDCl 3)δ6.89(s,2H),3.81(s,6H),0.25(s,18H) 13C?NMR(100MHz,CDCl 3)δ154.56,116.59,113.81,101.22,100.84,56.83,0.40。HRMS:C 18H 26O 2Si 2Calculated value is 330.1471, and measured value is 330.1468.
1,4-dimethoxy-2,5-diacetylene-benzene (18)
1; 4-dimethoxy-2; two (trimethyl silyl ethinyl) benzene of 5-(1.50 grams; 4.54 sal tartari (6.27 grams mM); 45.4 mM), methyl alcohol (50 milliliters) and methylene chloride (50 milliliters) react according to the general step of following deprotection; obtain required product (0.829 gram, productive rate 98%). 1H?NMR(400MHz,CDCl 3)δ6.96(s,2H),3.84(s,6H),3.37(s,2H)。
2, two (4 '-(ethanethioyl) ethynyl phenyls)-1 of 5-, 4-dimethoxy benzene (19)
18 (0.810 grams, 4.35 two (dibenzalacetone) palladium (0.253 gram mM),, 0.44 cuprous iodide (0.084 gram mM),, 0.44 triphenylphosphine (0.115 gram mM),, 0.44 mM), tetrahydrofuran (30 milliliters), H ü nig ' s alkali (4.5 milliliters, 26.1 mMs) and 4-(thioacetyl) iodobenzene 22(2.54 grams, 9.14 mMs) react according to the general step of following coupling.Agitating solution heated 16 hours in 60 ℃ of oil baths.Crystallization obtains the product of wanting (1.81 grams, 85%) from dichloromethane/hexane.IR(KBr)3129.1,3057.4,3006.2,2975.5,2940.0,2847.4,2207.2,1697.7,1506.8,1483.1,1463.1,1396.2,1279.2,1223.5,1122.2,1034.2,949.5,898.8,825.5,765.6,616.8cm -1. 1H?NMR(400MHz,CDCl 3)δ7.57(dt,J=8.5,1.9Hz,4H),7.39(dt,J=8.5,2.0Hz,4H),7.01(s,2H),3.89(s,6H),2.42(s,6H). 13CNMR(100MHz,CDCl 3)δ193.85,154.43,134.58,132.65,128.64,124.84,116.08,113.75,94.76,87.73,56.91,30.70。HRMS:C 28H 22O 4S 2Calculated value is 486.0960, and measured value is 486.0956.
2, two (4 '-(ethanethioyl) ethynyl phenyl) benzoquinones (20) of 5-
19 (0.050 grams, 0.103 mM), acetonitrile (5 milliliters) and tetrahydrofuran (3 milliliters) are added in 25 milliliters of round-bottomed flasks that splash bar is housed, divide ceric ammonium nitrate (0.339 gram, 0.618 mM) 2 ml water solution two parts to be added in the flask with 30 minutes interval.Stirred 3 hours under the room temperature,, obtain orange solid precipitation by adding the water stopped reaction.Sudden strain of a muscle formula column chromatography (silica gel, with methylene chloride as eluent) obtains desired product (0.023 gram, productive rate 49%).IR(KBr)2922.2,2847.4,2203.4,1694.9,1660.1,1569.9,1351.8,1212.3,1119.7,1084.6,1013.2,960.3,826.8,620.6cm -1. 1H?NMR(400MHz,CDCl 3)δ7.60(dt,J=8.3,1.6Hz,4H),7.42(dt,J=8.3,1.6Hz,4H),7.00(s,2H),2.43(s,6H)。 13C?NMR(100MHz,CDCl 3)δ193.23,182.61,136.86,134.64,133.25,133.07,130.97,122.78,104.14,84.08,30.79。HRMS:C 26H 16O 4S 2Calculated value is 456.0500, and measured value is 456.0490.
2, two (4 '-ethynyl pyridine base)-1-nitrobenzene (22) of 4-
With 2,5-two bromo nitrobenzenes (0.28 gram, 0.997 molybdenyl dichloride (triphenylphosphine) palladium (0.07 gram mM),, 0.098 cuprous iodide (0.019 gram mM),, 0.098 triphenylphosphine (0.106 gram mM),, 0.40 mM) and sal tartari (1.1 gram, 7.96 mMs) be dissolved in wiring solution-forming in the tetrahydrofuran (4 milliliters).By sleeve pipe 21 (0.377 gram, 2.15 mMs) solution in tetrahydrofuran (4 milliliters) and methyl alcohol (2 milliliters) is added in the above-mentioned solution.This potpourri was heated 20 hours down at 64 ℃, remove solvent with the rotary evaporation method then, the black residue washs with wet chemical, and uses extracted with diethyl ether.The organic layer that merges also filters with dried over sodium sulfate, and solvent steams in a vacuum and removes.With dodging formula column chromatography (silica gel, hexane/ethyl acetate 70/30,50/50,20/80,0/100) purifying, obtain 60 milligrams of target compound yellow solids (productive rate 24%).Mp:178-180℃。IR(KBr)3414.0,3036.7,1616.0,1589.4,1538.1,1519.9,1407.9,1345.7,1271.1,1214.1,828.3cm -11H?NMR(400MHz,DMSO-d)δ8.69(br?s,4H),8.44(d,J=1.4Hz,1H),8.04(1/2?ABqd,J=8.0,1.4Hz,1H),7.99(1/2?ABq,J=8.0Hz,1H),7.60(d,J=5.8Hz,2H),7.57(d,J=5.8Hz,2H)。 13C?NMR(100MHz,DMSO-d)δ150.21,150.13,149.42,136.27,135.36,129.16,129.11,127.96,125.50,125.39,123.25,116.55,94.98,90.63,90.59,88.13。HRMS:C 20H 11N 3O 2Calculated value is 325.0851, and measured value is 325.0847.
1-bromo-4-(4 '-ethynyl pyridine)-3-nitrobenzene (23)
With 2,5-two bromo nitrobenzenes (0.43 gram, 1.53 molybdenyl dichloride (triphenylphosphine) palladium (II) (0.052 gram mM),, 0.074 cuprous iodide (0.015 gram mM),, 0.078 triphenylphosphine (0.079 gram mM),, 0.30 mM) and sal tartari (0.83 gram, 6.0 mMs) be dissolved in wiring solution-forming in the tetrahydrofuran (2 milliliters).By sleeve pipe 21 (0.342 gram, 1.95 mMs) solution in tetrahydrofuran (4 milliliters) and methyl alcohol (1.5 milliliters) is added in the above-mentioned solution.This potpourri was heated 2 hours down at 23 ℃, remove solvent with the rotary evaporation method then, the residue dilute with water, and use extracted with diethyl ether.The organic layer that merges also filters with dried over sodium sulfate, and solvent steams in a vacuum and removes.With dodging formula column chromatography (silica gel, hexane/ethyl acetate 90/10,70/30,50/50) purifying, obtain 330 milligrams of target compound pale solids (productive rate 71%).Fusing point: 166-171 ℃.IR(KBr)3424.4,3093.3,1592.3,1521.4,1409.3,1341.4,1272.6cm -1. 1H?NMR(400MHz,CDCl 3)δ8.68(br?s,2H),8.29(d,J=1.9Hz,1H),7.79(dd,J=8.3,2.0Hz,1H),7.62(d,J=8.3Hz,1H),7.44(d,J=4.7Hz,2H)。 13C?NMR(100MHz,CDCl 3)δ149.96,136.22,135.69,130.14,128.08,126.67,125.65,123.19,116.48,94.80,87.81。HRMS:C 13H 7BrN 2O 2Calculated value is 303.9672, and measured value is 303.9682.
5-ethynyl phenyl-2-(4 '-ethynyl pyridine base)-1-nitrobenzene (24)
With 23 (88.8 milligrams, 0.293 molybdenyl dichloride (triphenylphosphine) palladium (II) (0.011 gram mM),, 0.016 mM), cuprous iodide (0.004 gram, 0.021 mM) and triphenylphosphine (0.008 gram, 0.029 mM) are dissolved in wiring solution-forming in the tetrahydrofuran (4 milliliters).Add Et to above-mentioned solution 3N (0.25 milliliter, 1.76 mMs) and phenylacetylene (0.1 milliliter, 9.1 mMs).This potpourri was stirred 36 hours down at 56 ℃, solvent is steamed remove in a vacuum.The residue dilute with water, and use extracted with diethyl ether.The organic layer that merges also filters with dried over mgso, and solvent steams in a vacuum and removes.With dodging formula column chromatography (silica gel, ethyl acetate/hexane 20/80) purifying, obtain 65 milligrams of target compound yellow solids (productive rate 69%).Fusing point: 130-132 ℃.IR(KBr)3445.3,3046.3,2203.5,1548.5,1529.1,1399.9,1341.6cm -11H?NMR(400MHz,CDCl 3)δ8.67(br?d,J=4.9Hz,2H),8.27(d,J=1.5Hz,1H),7.76(1/2?ABqd,J=8.0,1.6Hz,1H),7.72(1/2ABqd,J=8.0,0.5Hz,1H),7.56(m,2H),7.45(dd,J=5.9,1.7Hz,2H),7.40(m,3H)。 13C?NMR(100MHz,CDCl 3)δ149.58,135.39,134.65,131.81,129.34,128.54,127.67,125.32,121.85,116.66,95.30,94.30,88.52,86.63。HRMS:C 21H 12N 2O 2Calculated value is 324.0899, and measured value is 324.0895.
1-bromo-4-ethynyl phenyl-3-nitrobenzene (25)
With 2,5-two bromo nitrobenzenes (0.937 gram, 3.34 mMs), two (dibenzalacetone) palladium (0.095 gram, 0.166 mM), cuprous iodide (0.032 gram, 0.168 mM), triphenylphosphine (0.173 gram, 0.66 mM) is dissolved in wiring solution-forming in the tetrahydrofuran (4 milliliters).Add Et to above-mentioned solution 3N (1 milliliter, 7.2 mMs) and phenylacetylene (0.5 milliliter, 4.56 mMs).This potpourri was stirred 48 hours down at 23 ℃.With the saturated ammonium chloride solution washing, and use extracted with diethyl ether.The organic layer that merges also filters with dried over sodium sulfate, and solvent steams in a vacuum and removes.With dodging formula column chromatography (silica gel, CH 2Cl 2/ hexane 1/8) purifying obtains target compound yellow solid 0.48 gram (productive rate 47%).Fusing point: 58-74 ℃.IR(KBr)3421.9,3085.5,2213.4,1595.7,1545.9,1521.3,1336.5,1269.2cm -11HNMR(400MHz,CDCl 3)δ8.23(d,J=1.9Hz,1H),7.72(dd,J=8.3Hz,2.0,1H),7.59(m,3H),7.40(m,3H)。 13C?NMR(100MHz,CDCl 3)δ149.71,135.91,135.45,131.99,129.44,128.46,127.78,122.03,121.75,117.69,98.43,84.00。HRMS:C 14H 8NO 2The Br calculated value is 302.9720, and measured value is 302.9725.
2-ethynyl phenyl-5-(4 '-ethynyl pyridine base)-1-nitrobenzene (26)
With 25 (0.306 grams, 1.01 sal tartari (0.713 gram mM),, 5.16 molybdenyl dichloride (triphenylphosphine) palladium ((0.035 gram mM),, 0.05 cuprous iodide (0.009 gram mM),, 0.047 mM), triphenylphosphine (0.052 gram, 0.198 mM) is dissolved in wiring solution-forming in the tetrahydrofuran (2 milliliters).In above-mentioned solution, add 21 (0.217 gram, 1.24 mMs) solution in tetrahydrofuran (2 milliliters) and methyl alcohol (1 milliliter) by sleeve pipe.This potpourri was heated 18 hours down at 60 ℃, remove solvent with the rotary evaporation method then, brown residue dilute with water, and use extracted with diethyl ether.The organic layer that merges also filters with dried over sodium sulfate, and solvent steams in a vacuum and removes.With dodging formula column chromatography (silica gel, ethyl acetate/hexane 20/80,40/60) purifying, obtain 260 milligrams of target compound yellow solids (productive rate 79%).Fusing point: 144-146 ℃.IR(KBr)3442.3,3053.0,2209.4,1631.3,1584.8,1524.7,1404.3,1344.7,1269.0,826.4,755.2,686.6cm -11H?NMR(400MHz,CDCl 3)δ8.67(dd,J=4.4,1.6Hz,2H),8.27(br?s,1H),7.74(m,2H),7.63(d,J=1.8Hz,1H),7.60(m,1H),7.42(m,5H)。 13C?NMR(100MHz,CDCl 3)δ149.99,135.41,134.65,132.14,130.19,129.61,128.54,127.95,125.50,122.68,122.06,119.15,99.67,90.83,90.27,84.62。HRMS:C 21H 12N 2O 2Calculated value is 324.0899, and measured value is 324.0897.
2, two (trimethyl silyl the ethinyl)-4-nitric acid antifebrins (27) of 5-
With 6 (0.78 grams, 2.3 two (dibenzalacetone) palladium (0.068 gram mM),, 0.118 mM), cuprous iodide (0.023 gram, 0.012 mM), triphenylphosphine (0.123 gram, 0.47 mM) are dissolved in wiring solution-forming in the tetrahydrofuran (8 milliliters).Add Et to above-mentioned solution 3N (1 milliliter, 7.2 mMs) and trimethyl silyl acetylene (1 milliliter, 7.0 mMs).This potpourri was heated 48 hours down at 67 ℃, remove solvent with the rotary evaporation method then, brown residue dilute with water, and use extracted with diethyl ether.The organic layer that merges also filters with dried over sodium sulfate, and solvent steams in a vacuum and removes.With dodging formula column chromatography (silica gel, CH 2Cl 2/ hexane 35/65) purifying obtains 410 milligrams of target compound pale solids (productive rate 47%).
Fusing point: 162-164 ℃.IR(KBr)3372.9,2962.9,2146.0,1727.2,1611.2,1544.9,1501.5,1457.1,1404.3,1338.2,1250.6,1222.3,881.9cm -11H?NMR(400MHz,CDCl 3)δ8.75(s,1H),8.15(s,1H),8.10(br?s,1H),2.27(s,3H),0.33(s,9H),0.28(s,9H)。 13C?NMR(100MHz,CDCl 3)δ168.21,144.19,142.41,128.11,123.82,120.18,111.52,106.66,106.16,99.50,97.44,24.90,-0.31,-0.46。HRMS:C 18H 24N 2O 3Si 2Calculated value is 372.1326, and measured value is 372.1326.
2, two (4 '-ethynyl pyridine base)-4-nitroanilines (28) of 5-
With 27 (0.056 grams, 0.15 4-iodo pyridine (0.08 gram mM),, 0.39 sal tartari (0.17 gram mM),, 1.2 molybdenyl dichloride (triphenylphosphine) palladium (II) (0.01 gram mM),, 0.015 cuprous iodide (0.004 gram mM),, 0.021 triphenylphosphine (0.016 gram, 0.061 mM) is dissolved in wiring solution-forming in the tetrahydrofuran (4 milliliters), adds methyl alcohol (1 milliliter) to above-mentioned solution mM).This potpourri was heated 50 hours down at 60 ℃, remove solvent with the rotary evaporation method then, brown residue dilute with water, and use ethyl acetate extraction.The organic layer that merges also filters with dried over sodium sulfate, and solvent steams in a vacuum and removes.With dodging formula column chromatography (silica gel, ethyl acetate) purifying, obtain 8 milligrams of target compound yellow solids (productive rate 16%).Fusing point: 154-160 ℃.IR(KBr)3730.2,3438.6,2204.8,1592.4,1541.1,1409.8,1308.5,1249.9,818.8cm -11H?NMR(400MHz,CDCl 3)δ8.67(dd,J=4.4,1.7Hz,2H),8.65(dd,J=4.5,1.7Hz,2H),8.34(s,1H),7.44(dd,J=4.5,1.7Hz,2H),7.40(dd,J=4,4,1.6Hz,2H),6.99(s,1H),5.03(br?s,2H)。 13C?NMR(100MHz,CDCl 3)δ151.26,150.03,149.90,139.56,130.71,130.52,130.00,125.65,125.33,120.33,118.52,106.57,94.67,94.19,89.55,87.27。HRMS:C 20H 12N 4O 2Calculated value is 340.0960, and measured value is 340.0958.
2-amino-4-(4 '-ethynyl pyridine base)-5-nitro bromobenzene (29)
With 6 (0.877 grams, 8.84 sal tartari (1.08 grams mM),, 7.81 molybdenyl dichloride (triphenylphosphine) palladium (0.054 gram mM),, 0.077 cuprous iodide (0.025 gram mM),, 0.13 mM), triphenylphosphine (0.068 gram, 0.26 mM) is dissolved in wiring solution-forming in the tetrahydrofuran (4 milliliters).By sleeve pipe 21 (0.404 gram, 2.30 mMs) solution in tetrahydrofuran (8 milliliters) and methyl alcohol (3 milliliters) is added in the above-mentioned solution.This potpourri was heated 1 day down at 23 ℃, solvent is steamed remove in a vacuum.The residue dilute with water, and use ethyl acetate extraction.Organic layer also filters with dried over mgso, and solvent steams in a vacuum and removes.With dodging formula column chromatography (silica gel, ethyl acetate/hexane 40,/60 50/50) purifying, obtain 290 milligrams of target compound yellow solids (productive rate 39%).Fusing point: 226-228 ℃.
IR(KBr)3385.4,3297.7,3171.3,1646.8,1591.7,1556.9,1471.3,1297.8cm -11H?NMR(400MHz,DMSO-d)δ8.66(br?d,J=3.8Hz,2H),8.32(d,J=1.3Hz,1H),7.53(br?d,J=4.5Hz,2H),7.06(d,J=1.3Hz,1H),6.94(brs,2H)。 13C?NMR(100MHz,DMSO-d)δ151.33,150.12,136.44,130.70,129.64,125.32,118.13,117.73,106.02,91.85,89.72。HRMS:C 13H 8BrN 3O 2Calculated value is 316.9800, and measured value is 316.9801.
4-amino-2-(4 '-ethynyl pyridine base)-1-nitro-5-(trimethyl silyl ethinyl) benzene
With 29 (0.310 grams, 0.975 molybdenyl dichloride (triphenylphosphine) palladium (0.035 gram mM),, 0.05 mM), cuprous iodide (0.011 gram, 0.05 mM), triphenylphosphine (0.026 gram, 0.10 mM) are dissolved in wiring solution-forming in the tetrahydrofuran (10 milliliters).Add Et to above-mentioned solution 3N (0.9 milliliter, 6.5 mMs) and trimethyl silyl acetylene (0.2 milliliter, 1.4 mMs).This potpourri was heated 2 days down at 60 ℃, solvent is steamed remove in a vacuum.The residue dilute with water, and use ethyl acetate extraction.The organic layer that merges also filters with dried over mgso, and solvent steams in a vacuum and removes.With dodging formula column chromatography (silica gel, ether) purifying, obtain 160 milligrams of target compound yellow solids (productive rate 49%).Fusing point: 145-150 ℃.IR(KBr)3451.9,3379.1,2960.5,2149.5,1620.4,1597.9,1545.5,1512.2,1317.0cm -11H?NMR(400MHz,CDCl 3)δ8.65(dd,J=4.6,1.5Hz,2H),8.25(s,1H),7.44(dd,J=4.3,1.5Hz,2H),6.93(s,1H),4.90(s,2H),0.30(s,9H)。 13C?NMR(100MHz,CDCl 3)δ151.44,149.90,139.35,130.65,130.43,125.65,119.56,118.06,107.93,104.28,98.37,93.70,89.79,-0.15。HRMS:C 18H 17N 3O 2The Si calculated value is 335.1090, and measured value is 335.1089.
4-amino-5-ethinyl-2-(4 '-ethynyl pyridine base)-1-nitrobenzene (30)
4-amino-2-(4 '-ethynyl pyridine base)-1-nitro-5-(trimethyl silyl ethinyl) benzene (160 milligrams, 0.477 mM) is dissolved in methyl alcohol (15 milliliters) and CH 2Cl 2(15 milliliters), and to this solution adding sal tartari (0.66 gram, 4.77 mMs).This solution was stirred 2 hours down at 23 ℃, the reaction mixture dilute with water, and use ethyl acetate extraction.The organic layer that merges also filters with dried over mgso, and solvent steams in a vacuum and removes.Obtain target compound yellow solid 0.11 gram (productive rate 88%).Because product is too unstable, so can't obtain the data of its all character. 1H?NMR(400MHz,DMSO-d)δ8.67(dd,J=4.5,1.6Hz,2H),8.12(s,1H),7.53(dd,J=4.5,1.6Hz,2H),7.03(s,1H),6.97(br?s,2H),4.70(s,1H)。
4-amino-2-(4 '-ethynyl pyridine base)-5-(4 '-ethanethioyl phenylacetylene base)-1-nitrobenzene (31)
With 30 (0.110 gram, 0.418 mMs), 4-ethanethioyl iodobenzene 10(0.124 gram, 0.446 molybdenyl dichloride (triphenylphosphine) palladium (II) (0.015 gram mM),, 0.021 mM), cuprous iodide (0.004 gram, 0.021 mM), triphenylphosphine (0.014 gram, 0.053 mM) are dissolved in wiring solution-forming in the tetrahydrofuran (13 milliliters).Add Et to above-mentioned solution 3N (0.4 milliliter, 2.9 mMs).This potpourri was stirred 2 days down at 50 ℃.Reaction detects with thin-layer chromatography (ethyl acetate/hexane 75/25).Add molybdenyl dichloride (triphenylphosphine) palladium (0.014 gram, 0.020 mM), cuprous iodide (0.035 gram, 0.018 mM), triphenylphosphine (0.085 gram, 0.0324 mM) again, be reflected at 60 ℃ and stirred 1 day down, solvent is steamed remove in a vacuum.The residue dilute with water, and use ethyl acetate extraction.The organic layer that merges also filters with dried over mgso, and solvent steams in a vacuum and removes.With dodging formula column chromatography (silica gel, ethyl acetate/hexane 66/33) purifying, obtain 130 milligrams of target compound yellow solids (productive rate 75%).Fusing point: 185-188 ℃.IR(KBr)3438.2,3195.9,2922.4,1695.4,1627.7,1596.5,1545.1,1514.8,1477.2,1402.8,1316.4,1249.9cm -11HNMR(400MHz,DMSO-d)δ8.68(br?d,J=4.0Hz,2H),8.23(s,1H),7.79(d,J=8.1Hz,2H),7.54(d,J=5.0Hz,2H),7.49(d,J=8.0Hz,2H),7.13(br?s,2H),7.06(s,1H),2.46(s,3H)。 13C?NMR(100MHz,DMSO-d)δ192.98,153.79,150.13,136.28,134.31,132.32,130.69,129.67,128.66,125.34,123.05,118.70,118.26,105.43,95.72,92.51,90.12,85.54,30.32。HRMS:C 23H 15N 3O 3The S calculated value is 413.0834, and measured value is 413.0940.
2-(4 '-ethynyl pyridine base)-4-nitro-5-phenylaniline (32)
With 7 (80.5 milligrams, 0.241 sal tartari (0.151 gram mM),, 1.09 molybdenyl dichloride (triphenylphosphine) palladium (II) (0.009 gram mM),, 0.014 cuprous iodide (0.003 gram mM),, 0.014 mM), triphenylphosphine (0.014 gram, 0.053 mM) is dissolved in wiring solution-forming in the tetrahydrofuran (2 milliliters).By sleeve pipe 1 (0.053 gram, 0.3 mM) solution in tetrahydrofuran (2 milliliters) and methyl alcohol (1 milliliter) is added in the above-mentioned solution.This potpourri was heated 3 days down at 70 ℃, remove solvent with the rotary evaporation method then, brown residue dilute with water, and use extracted with diethyl ether.The organic layer that merges also filters with dried over sodium sulfate, and solvent steams in a vacuum and removes.With dodging formula column chromatography (silica gel, ethyl acetate/hexane 30/70) purifying, obtain 60 milligrams of target compound yellow solids (productive rate 79%).Fusing point: 187-190 ℃.IR(KBr)3410.2,3323.4,3212.1,2215.1,1627.6,1592.4,1548.4,1511.7,1410.5,1331.9cm -11H?NMR(400MHz,CDCl 3)δ8.64(br?d,J=4.8,2H),8.16(s,1H),7.39(m,5H),7.27(m,2H),6.62(s,1H),5.03(br?s,2H)。 13C?NMR(100MHz,CDCl 3)δ151.23,149.82,140.65,138.82,138.19,130.49,128.36,128.06,127.52,125.34,116.41,104.85,93.24,87.89。HRMS:C 19H 13N 3O 2Calculated value is 315.1008, and measured value is 315.1011.
1-bromo-4-(4 '-ethinyl) pyridine-3-nitrobenzene (34)
With 33 1(0.84 gram, 2.34 mMs), molybdenyl dichloride (triphenylphosphine) palladium (0.083 gram, 0.117 mM), cuprous iodide (0.022 gram, 0.117 mM), sal tartari (1.94 grams, 14.04 mMs) are dissolved in wiring solution-forming in the tetrahydrofuran (4 milliliters).By sleeve pipe 21 (0.451 gram, 2.57 mMs) solution and methyl alcohol (4 milliliters) in tetrahydrofuran (12 milliliters) is added in the above-mentioned solution.This potpourri was heated 14 hours down at 55 ℃, remove solvent with the rotary evaporation method then, the residue dilute with water is then used the salt water washing, and uses ethyl acetate extraction.The organic layer that merges also filters with dried over mgso, and solvent steams in a vacuum and removes.With dodging formula column chromatography (silica gel, ethyl acetate) purifying, obtain 271 milligrams of target compound yellow solids (productive rate 34%).Fusing point: 224-229 ℃.IR(KBr)3451.7,3351.1,3202.6,2206.4,1622.9,1588.4,1539.0,1474.4,1306.7,1249.8cm -1. 1H?NMR(400MHz,DMSO-d)δ8.64(d,J=5.7Hz,2H),8.25(s,1H),7.67(dd,J=4.5,1.5Hz,2H),7.59(m,2H),7.47(m,3H),7.15(br?s,1H),7.03(s,1H)。 13C?NMR(100MHz,DMSO-d)δ153.97,149.83,136.31,131.67,131.17,130.01,129.69,128.99,125.45,121.78,120.40,118.06,103.92,96.13,93.41,88.37,86.25。HRMS; C 21H 13N 3O 2Calculated value is 339.1008, and measured value is 339.1004.
1-bromo-3-nitro-4-(4-aminophenyl ethinyl) benzene (36)
With 1,4-two bromo-2-nitrobenzene (5.62 grams, 20.0 molybdenyl dichloride (triphenylphosphine) palladium (0.140 gram mM),, 0.20 cuprous iodide (0.038 gram mM),, 0.20 mM), triethylamine (10.0 milliliters), tetrahydrofuran (10 milliliters) and 35 (1.170 grams, 10.0 mMs) carry out general coupling step.This potpourri was at room temperature stirred 4 hours, remove in a vacuum and desolvate, residue (is made eluent with methylene chloride) and is carried out chromatography on silicon oxide column, obtain red solid by being wanted product and mixture of isomers thereof.In dichloromethane/hexane, carry out two-fold (two-fold) recrystallization then want product is separated from potpourri, obtain thin red needle-like solid (1.561 grams, productive rate 49%).Fusing point: 147-149 ℃.IR (KBr) 3457,3367,2194,1623,1593,1513,1550,1334,1273,1136,834,817,528cm -1. 1H NMR (400MHz, CDCl 3) δ 8.21 (d, J=2.0Hz), 7.67 (dd, J=8.4,2.0Hz), 7.51 (d, J=8.4Hz), 7.96 (m, AA ' the part of AA ' XX ' pattern, J=8.2,2.7,1.9,0.4Hz, 2H), 7.93 (m, the XX ' parts of AA ' XX ' pattern, J=8.2,2.7,1.9,0.4Hz, 2H), 3.39 (s, 2H). 13C NMR (100MHz, CDCl 3) δ 149.27,147.85,135.82,135.12,133.71,127.73,120.62,118.59,114.63,111.09,100.24,82.86.HRMS:C 14H 9N 2BrO 2Calculated value is 315.9848, and measured value is 315.9845.
4-(2-nitro-4-phenylacetylene base phenylacetylene base) aniline (37)
With 36 (0.697 grams, 2.20 molybdenyl dichloride (triphenylphosphine) palladium (0.062 gram mM),, 0.088 mM), cuprous iodide (0.0084 gram, 0.044 mM), triethylamine (10.0 milliliters) and ethynylbenzene (0.306 gram, 3.00 milliliters) carry out general coupling step.This potpourri was stirred 2 hours down at 80 ℃, remove in a vacuum and desolvate, residue carries out chromatography with methylene chloride on silicon oxide column, obtains red needle-like and wants product (0.72 gram, productive rate 97%).Fusing point: 166-168 ℃.IR(KBr)3454,3381,3360,2177,2197,1594,1623,1539,1520,1299,1342,1133,829,758,690,527cm -1. 1H?NMR(400MHz,CDCl 3)δ8.20(dd,J=1.6,0.3Hz),7.66(dd,J=8.2,1.6,Hz),7.61(d,J=8.1Hz),7.52-7.57(m,2H),7.36-7.43(m,5H),3.94(s,2H). 13C?NMR(100MHz,CDCl 3)δ148.93,147.81,135.12,134.04,133.76,131.74,129.04,128.49,127.59,122.97,122.18,118.95,114.64,111.29,100.75,93.03,87.05,83.71。HRMS:C 22H 14N 2O 2Calculated value is 338.1055, and measured value is 338.1058.
Tetrafluoro boric acid 4-(2-nitro-4-phenylacetylene base phenylacetylene base) phenyl diazonium salt (38)
According to general diazotation step 37 (0.0845 gram, 0.250 mMs) are used NOBF in acetonitrile (2 milliliters)/sulfolane (2 milliliters) 4(0.0322 gram, 0.275 mM) handled.Product is handled with ether (12 milliliters), is settled out dark orange flakey product.Wash this salt with ether again, then from DMSO (0.5 milliliter) and CH 2Cl 2Recrystallization in (20 milliliters) obtains glossiness dark orange sheet product (0.0885 gram, productive rate 81%).IR (KBr) 3103,2279,2209,1576,1345,1540,1084,841,764cm -1. 1H NMR (400MHz, CDCl 3/ DMSO-d 6, the live width of observation is about 1.9Hz) δ 8.78 (d, J=8.9Hz, 2H), 8.30 (s, 1H), 8.03 (d, J=8.9Hz, 2H), 7.85-7.92 (m, 2H), 7.57-7.60 (m, 2H), 7.42-7.44 (m, 3H). 13C NMR (100MHz, CDCl 3/ DMSO-d 6) δ 149.00,135.46,134.85,134.15,133.31,132.84,1.34,129.13,128.21,127.15,125.66,121.06,114.81,114.25,94.57,94.42,94.11,86.29.
4-(3-nitro-4-phenylacetylene base phenylacetylene base) aniline (39)
With 25 (1.208 grams, 4.0 molybdenyl dichloride (triphenylphosphine) palladium (0.070 gram mM),, 0.10 cuprous iodide (0.019 gram mM),, 0.10 mM), triethylamine (6.0 milliliters), tetrahydrofuran (6.0 milliliters) and 35 (0.479 gram, 4.10 milliliters) carry out general coupling step.This potpourri was at room temperature stirred 15 hours, remove in a vacuum and desolvate, residue carries out chromatography with dichloromethane/hexane (1: 1) on short silicon oxide column, obtains the product orange solids of wanting (0.560 gram, productive rate 44%).Fusing point: 175-177 ℃.IR (KBr) 3303,2985,1696,1587,1522,1406,1314,1243,1153,1060,839,757,692cm -1. 1H NMR (400MHz, CDCl 3) δ 8.16 (t, J=1.0Hz, 1H), 7.64 (d, J=1.0Hz, 2H), and 7.58-7.61 (m, 2H), 7.34-7.40 (m, 3H), 7.35 (m, the AA ' part of AA ' XX ' pattern, J=8.0,2.5,2.0,0.4Hz, 2H), 6.65 (m, XX ' the part of AA ' XX ' pattern, J=8.0,2.5,2.0,0.4Hz, 2H), 3.91 (s, 2H). 13C NMR (100MHz, CDCl 3) 149.4,147.5,134.9,134.3,133.3,132.0,129.3,128.5,127.1,124.9,122.3,117.1,114.7,11.1,98.4,94.9,85.3,85.0.HRMS; C 22H 14N 2O 2Calculated value is 338.1055, and measured value is 338.1059.
Tetrafluoro boric acid 4-(3-nitro-4-phenylacetylene base phenylacetylene base) phenyl diazonium salt (40)
According to general diazotation step 39 (0.0676 gram, 0.200 mMs) are used NOBF in acetonitrile (2 milliliters)/sulfolane (2 milliliters) 4(0.025 gram, 0.210 mM) handled.Product is handled with ether (20 milliliters), is settled out thin orange red crystal.Wash this salt with ether again, then from DMSO (0.6 milliliter) and CH 2Cl 2Precipitate once more in (10 milliliters), obtain the red sheet product (0.0676 gram, productive rate 77%) of strong gloss.IR (KBr) 3101,2279,2209,1576,1540,1346,1083,1034,840,764cm -1. 1H NMR (400MHz, CDCl 3/ DMSO-d 6) δ 7.94 (m, the AA ' part of AA ' XX ' pattern, J=8.7,2.4,1.7,0.4Hz, 2H), 7.82 (dd, J=1.7,0.4Hz, 1H), 7.49 (m, the XX ' part of AA ' XX ' pattern, J=8.7,2.4,1.7,0.4Hz, 2H), 7.62 (dd, J=8.1,1.7Hz, 1H), 7.56 (dd, J=8.1,0.4Hz, 1H), 7.07 (m, the AA ' part of AA ' XX ' Y mode, J=7.8,7.6,1.8,1.3,1.3,0.6Hz, 2H), 6.94 (tt, J=7.6,1.3Hz, 1H), 6.91 (m, YY ' the part of AA ' XX ' Y mode, J=7.8,7.6,1.8,1.3,1.3,0.6Hz, 2H). 13CNMR (100MHz, CDCl 3/ DMSO-d 6) δ 137.24,136.97,136.23,135.40,133.72,133.00,131.08,129.96,129.48,122.81,122.75,120.68,114.12,100.47,98.81,91.04,85.57.
4-(2,5-dinitro-4-(4-aminophenyl ethinyl) phenylacetylene base) aniline (42)
1,4-two bromo-2,5-dinitro benzene 12(0.977 gram, 3.0 molybdenyl dichloride (triphenylphosphine) palladium (0.042 gram mM),, 0.06 cuprous iodide (0.011 gram mM),, 0.06 mM), triethylamine (5.0 milliliters), tetrahydrofuran (5.0 milliliters) and 4-ethinyl aniline (0.468 gram, 4.00 milliliters) carry out general coupling step.This potpourri was at room temperature stirred 12 hours, remove in a vacuum and desolvate, residue methylene chloride (10 milliliters) sonicated, and filter.Filtration gained solid is used methylene chloride (10 milliliters) washing five times again, and is dry in the vacuum, obtains the black purple crystals (0.432 gram, productive rate 36%) of diamines 42.Fusing point>270 ℃.IR(KBr)3494,3387,2184,1600,1400,1523,1537,1308,1337,1251,1136cm -1. 1H?NMR(400MHz,DMSO-d 6)δ8.37(s,2H),7.27-7.29(m,2H),6.59-6.61(m,2H),5.93(br?s,4H). 13C?NMR(100MHz,DMSO-d 6)δ151.18,149.89,133.67,129.43,116.95,113.66,106.10,103.45,82.23。HRMS:C 22H 14N 4O 4Calculated value is 398.1015, and measured value is 398.1018.
Tetrafluoro boric acid 4-(2,5-dinitro-4-(4-benzene diazonium ethinyl) phenylacetylene base) phenyl diazonium salt (43)
According to diazotizing general step, use NOBF 4(0.128 gram, 1.10 mMs) handle 42 (0.199 gram, 0.500 mMs) in acetonitrile (5.0 milliliters)/sulfolane (5.0 milliliters).Product precipitates with ether (20 milliliters).With the salt of ether washing gained, from DMSO and methylene chloride, precipitate the crystal (0.215 gram, productive rate 72%) that obtains photosensitive yellow once more again.
IR(KBr)3107,2291,1579,1546,1342,1078,830cm -1. 1H?NMR(400MHz,CDCl 3/DMSO-d 6)δ8.85(s,2H),8.79(d,J=9Hz,2?H),8.20(d,J=9Hz,2H). 13C?NMR(100MHz,CDCl 3/DMSO-d 6)δ150.60,133.93,133.83,133.14,132.40,131.75,117.62,116.32,96.91,91.51。
Having synthesized many including with quinone and nitro is (phenylene ethynylene) oligomer of the reversible reductibility functional group at center.These molecules all have method can be attached to metallic surface from the thio group of the protection of standard to new diazo salt and pyridine radicals bonding.
Embodiment 2
The molecular electronic device that contains pyridine unit
What Fig. 6 showed is two groups of potential molecular devices that have been synthesized.First group has nitro functions on inner phenyl ring, it is designed to preserve electronics makes molecule can be used as memory component.
Second group has nitro and amino, even if similar function is also arranged under lower temperature.
Potential molecular device 2 and 4 is designed to contain two pyridine end groups, with the crosslinking chemical that connects as gold.
Figure A0181522900591
Route 2 (a) K 2CO 3, MeOH, Pd (PPh 3) 2Cl 2, PPh 3, CuI, THF, 64 ℃, 20h, 24%
Route 2 has been summarized by 2, the process of 5-two bromo nitrobenzene Synthetic 2s.Can pass through 4-iodo pyridine 7The Sonogashira coupling takes place with trimethyl silyl acetylene 6, make 1 (99%) at an easy rate.Sal tartari is used as the alkali that original position is removed TMS protecting group and coupling, decomposites alkynes freely behind the several hrs.Carry out this reaction under the room temperature and obtain a large amount of two (ethynyl pyridine), and coupling takes place in a site of dibromo aryl.
Route 2 (a) Et 3N, Pd (dba) 2, PPh 3, CuI, THF, 60 ℃, 48h, 47%. (b) K 2CO 3, MeOH, Pd (PPh 3) 2Cl 2, PPh 3, CuI, THF, 60 ℃, 50h, 16%
Compound 4 is similar to 2, but is the center with the nitroaniline for the center substituted-nitrobenzene.Synthetic (route 2) that do not resemble potential molecular device 2,4 starts from 2,5-two bromo-4-nitracetanilides 9Provide 3 with the coupling reaction of trimethyl silyl acetylene, then 3 with the coupling of 4-iodo pyridine, productive rate is lower.The coupling reaction of this low-yield may be because the cyclic action of nitro and alkynes unit.
Figure A0181522900602
Route 3 (a) K 2CO 3, MeOH, Pd (PPh 3) 2Cl 2, PPh 3, CuI, THF, rt, 24h, 39%. (b) Et 3N, Pd (PPh 3) 2Cl 2, PPh 3, CuI, THF, 60 ℃. and (c) K 2CO 3, MeOH, CH 2Cl 2, rt, 2h, 88%
8 synthesize as shown in Scheme 3.8 have a protected benzenethiol end group, and it can be connected on the gold surface.The other end of molecule is a pyridine radicals, and it might be as connecting base than the better top layer of phenyl.8 synthetic be with 2,5-two bromo-4-nitracetanilides and 1 coupling obtain compound 5 with medium productive rate.Then with 5 and the coupling of trimethyl silyl acetylene obtain 6, productive rate 49% provides 7 with the sal tartari deprotection again.Synthetic final step is and the coupling of 4-ethanethioyl iodobenzene to obtain the potential device 8 (75%) of higher yields.
Figure A0181522900611
Route 4 (a) K 2CO 3, MeOH, Pd (PPh 3) 2Cl 2, PPh 3, CuI, THF, rt, 2d, 71%. (b) Et 3N, Pd (PPh 3) 2Cl 2, PPh 3, CuI, THF, 56 ℃, 36h, 69%
10 and 12 synthetic be in order to study in self assembling process, the nitro position is with respect to the importance of the position of " binding clip ".10 nitro orientation is towards pyridine radicals (route 4), 10 synthetic be earlier by coupling 1 and 2,5-two bromo nitrobenzenes, and remove the TMS group in position and provide 9 with higher yields.9 with the phenylacetylene coupling obtain 10.
Route 5 (a) Et 3N, Pd (dba) 2, PPh 3, CuI, THF, rt, 48h, 47%. (b) K 2CO 3, MeOH, Pd (PPh 3) 2Cl 2, PPh 3, CuI, THF, 64 ℃, 18h, 79%
12 nitros point to the direction away from pyridine radicals, and its synthetic (route 5) is similar to synthetic 10 method, except step is opposite.Here, phenylacetylene is earlier with 2, and the reaction of 5-two bromo nitrobenzenes obtains 11 with medium productive rate.1 then obtains 12 with 11 couplings again, and productive rate is very high.
For the metastatic electron of prohibiting with minimum, preferably its all phenyl ring are all at grade for these organic oligomers.If terminal phenylacetylene base is replaced by phenyl, molecule then becomes and twists slightly.In order to study the influence of this rotational barrier, synthesized 14.2, the Suzuki coupling of 5-two bromo-4-nitracetanilides and phenylboric acid is used to synthetic compound 13 (route 6), and 13 then obtain 14 with 4-(trimethyl silyl ethinyl) pyridine (1) coupling.
Compound 2,4,8,10,12 and 14 structure with IR, 1H NMR, 13C NMR and MS determine.
Figure A0181522900621
Route 6 (a) Pd (dba) 2, PPh 3, Cs 2CO 3, toluene, 67 ℃, 3d, 51%. (b) K 2CO 3, MeOH, Pd (PPh 3) 2Cl 2, PPh 3, CuI, THF, 70 ℃, 3d, 79%
In a word, the conjugated aromatic molecule that contains pyridine unit that uses the coupling of palladium catalysis to finish to be used for molecular electronic device is synthetic.
Embodiment 3
Negative differential resistance
Refer again to Fig. 3, in example molecule diode 30, observe negative differential resistance, especially the low polyphenylene 32 that replaces at single nitro, particularly 4,4 '-molecule of diphenylene ethynylene-2 '-nitro-1-benzenethiol in, and the low polyphenylene 34 that replaces at dinitro, particularly 2 ', 5 '-dinitro-4,4 '-molecule of diphenylene ethynylene-1-benzenethiol in.
Referring now to Fig. 4 A and 4B,, I (V) response curve of the molecule shown in Fig. 2 that wherein drawn (wherein I represents that electric current and V represent voltage).These curve maps obtain by the response of the self assembled monolayer of measurement molecule 32 and molecule 34.In each unimolecular layer, the end that utilizes mercaptan to replace connects gold wire and unsubstituted opposite end connects next directed this molecule of second gold wire.
Especially with reference to figure 4A, for molecule 32, this I (V) response originally is to be in " 0 " state (open circles) now.In case apply the 1.75V pulse, this molecule is set as a kind of new state that presents negative differential resistance (NDR) behavior, " 1 " (black circle), and this moment, electric current was along with the increase of voltage is fallen after rising.
Especially with reference to figure 4B, for molecule 34, this I (V) response originally is to be in the one state (filled circles) that presents NDR now.In case apply the 1.5V pulse, this molecule is provided as a kind of new state, " 0 " (open circles).This original state is recovered by applying negative bias.This is the counter-rotating to initial/final switch of molecule 32 observations, as shown in Figure 3A.Yet each behavior all is the example of on off state duality.An advantage of molecule 34 is that it is a molecule that at room temperature presents negative differential resistance.In addition, the maintenance of on off state is observed 24 hours.Can believe, improve encapsulation, can have the longer retention time by system.Preferred nano unit 12 is totally enclosed to improve this on off state stability longer time.
The NDR curve that shows in Fig. 4 B is used for dynamic nano unit simulation and SPICE simulation as described below.
Embodiment 4
The inventor has been found that: the simulation nano unit based on nanometer network can be by training to be used as illustrative known logical unit, and wherein this nanometer network comprises by nano particle and connects the molecular switch of arranging.Molecular switch is the molecule that presents with the negative differential resistance I (V) response that is feature.
Can believe that simulating nano unit represents the actual physical nano unit.Therefore, can believe that this is a technology of having found a kind of actual nano unit that is used to programme first.The inventor knows the demonstration that does not have other to learn logic by the network that comprises " skeleton " (the using the simulation of tradition to the brain structure) with these I (V) feature.Especially, traditional neural network model of brain and other simulation system are usually based on the expression of the system with " skeleton " I (V) curve that is selected from step function, hyperbolic tangent etc., and these do not have negative differential resistance.
Genetic algorithm is used for the nano unit of omniscient ground training simulation.That is to say that this algorithm is known the state of long-range molecular switch.This algorithm that is to say by the state of direct this switch of adjustment and trains nano unit by training this nano unit by switch.However, can believe that these results represent the result that can obtain by adaptive algorithm, this adaptive algorithm is constructed long-range molecular switch by the voltage that is adjusted at input and output lead-in wire place in human mode.
General programming
The purpose of programming or training nano unit be to obtain one at random, fixing nano unit and the switch of opening or closing it be till it plays the effect of a target logic device.The physical location of each molecular switch is at first fixed; Also promptly the inner topology structure of this nano unit is static.This nano unit is then trained after making.Only can change " on " or " off " state of molecular switch.
We introduce the term omniscient relevant with used programmed algorithm, all-round and human switch at this.For omniscient, we mean connection in this nano unit and the position and the state of each switch is known.All can mean searching algorithm know each molecular switch the position and also can be accurately and selectively visit " on " or " off " state so that it reversibly to be set.Naturally, all-round definition comprises omniscient.At last, for human switch, this algorithm is not known the connection in this nano unit or the position of switch, and switch is confined to be applied to the potential pulse of I/O pin.An actual physical nano unit is preferably programmed in a kind of human mode, and only via carrying out switch along the potential pulse between this peripheral contact pins.
In the simulation that provides herein, we indicate and have following on off state, make given nano unit play a target logic device.Certain density of given nano particle and molecular switch can definitely be controlled on off state by supposition, can determine whether any nano unit at random can be trained to some target logic device.Some is used for that the elementary strategy that this method expands to human switch is comprised the electric capacity that utilizes gold grain and visits individual switch better.Can believe the row molecular switch between two I/O pins, wherein truly have a switch, can be arranged to any pattern of " on " and " off " state by using these electric capacity with some electric capacity between two gold grains.Molecular switch in a nano unit and gold grain network are more more complex than the switch of one between the I/O pin simple row; Yet simulation shows that the solution space that is used for some logic gate is very intensive.This means unnecessary each individual molecule of visiting uniquely.In fact, if a plurality of switches are arranged between two gold grains, then with each switch of direction orientation switching state simultaneously.Yet this will can not be a problem, because the molecular switchable group is likely enough.
Having all-round nano unit training problem is a combinatorial problem, and wherein the search volume is that one group of institute that is used for some set nano unit might switching state.If a nano unit comprises 250 nano particles and about 750 molecular switches that are used to switch with a suitable direction, then the size of this search volume is 2 750(as a size relatively, the elementary particle number in universe is estimated as 2 300).Genetic algorithm is used for searching for this space.At first produce a nano unit and define a target logic device (such as NAND) at random.The state of nano unit switch is stored as " chromosome " of " 1 " and " 0 ".Produce a chromosomal at random initial generation.Each chromosome has the fixed position of nano particle and molecular switch all corresponding on the same group a nano unit on off state not.Form a fitting function, make to cause this nano unit to receive low the branch as the on off state of target logic device, those on off states of not carrying out the target logic function simultaneously receive high score.When obtaining zero, the chromosome of an on off state stops search, and the therefore logic of carry out desired acceptably.After the first generation, by producing new chromosomal each generation in previous generation's executable operations.The chromosome of height match or low score makes up in pairs to form new and chromosome that be hopeful to carry out better.In such a way, search for this space till obtaining to fit to zero chromosome.
We provide the method for two kinds of these omnipotent training process of simulation at this.In order to calculate the degree of fitting of each structure, perhaps the on off state combination that nano unit is interior must be analyzed a series of circuit.In these circuit each comprises a non-linear resistance composite network.The time dependent pattern of input voltage puts on some I/O pin, and the output current that necessary calculating produces over time.This relates to finds the solution a series of nonlinear ordinary differential equations.Although it is difficult finding the solution this system, simulation given herein addresses this problem with two kinds of methods.In second kind of model that we provide, circuit engineering software, SPICE is used for analyzing each structure of nano unit.This software is that pin-point accuracy is still time-consuming, because it is not designed to carry out the iteration of combinational circuit at random.In the dynamic nano unit model that we at first provide, for the purpose of speed, sacrifice accuracy; The electric behavior of nano unit is got approximate, thereby do not find the solution complicated system of equations, but can obtain one useful approximate.
The genetic algorithm of using is recorded among the file vzNanocell.cpp in the appendix.
Dynamic nano unit model
Honeycomb fashion aut.eq. (CA) is the dynamic system with space-time discrete value.According to the decisive regular and synchronized that only depends on this locality or contiguous honeycomb [c] state be updated in a honeycomb state in the conventional dot matrix.Though the state of each honeycomb often is confined to little discrete value set, the notion of expansion CA is unrare with the state variable [d] that allows an actual value yet.Dynamically the nano unit model is a honeycomb fashion aut.eq. that wherein hexagonal lattice is represented this nano unit and honeycomb is represented single gold nano grain in this dot matrix.The actual value state variable that is used for a honeycomb is the current potential of this nano particle, and be used for the transition rule that each time step strong point changes state variable be adjust this nano particle current potential so that its Kirchhoff in compliance with its contiguous honeycomb.Said that the computer scientist used the place of the field theory that is subjected to " field equation " control to use the honeycomb aut.eq. the physicist, and a kind of alternative computing method that can be better than the many orders of magnitude of classic method [a] [b] that provide of CA were provided.We believe that this dynamic nano unit model allows our searching algorithm to carry out in a kind of mode timely and the electrical characteristics of analog physical device exactly still.
The transition rule that is used for this dynamic nano unit model considered at the non-linear of the I of this NDR device (V) curve and allowed this modeling moving by the electric current of this nano unit, and is not only that fluid flows.This provides the ability of the more interested logical unit of simulation such as those logical units with negative logic.
This dynamic model calculates with a kind of incremental manner as described below.All metal nanoparticles are all used 0 current potential initialization, and the electromotive force with a non-zero puts on some designated nano particle as input/output point then.The current potential that puts on this input point little by little increases till they arrive the level of the Boolean input of representing this nano unit, runs through this simulation process then and remains unchanged.The nano particle that is affected signals and informs that a change has appearred in their adjacent particles.By the electromotive force of each in the current potential of nano particle and their the next-door neighbour's particles is compared, recomputate their electromotive force then.The amount of current that the voltage differences of each adjacent particle is determined to flow to each adjacent particle or flowed out from each adjacent particle together with intervenient molecular switch I (V) characteristic.If the electric current summation that flows into from some adjacent particle is not equal to the electric current summation that flows out to all the other adjacent particle, then therefore adjust the current potential of this nano particle.Adjust if carry out, then the nano particle of adjacent particle is informed the electromotive force that should recomputate them by signalling.Continue this process up to nano particle be sure of they enter the output current that electric current equals them till, make the Kirchhoff of this system unanimity thus.At last, calculate electric current in each I/O place.
Genetic algorithm is used for searching and makes this nano unit as the switch of the logic gate of expectation combination is set.Because switch is 0 or 1 numerical digit at one " on " or at " cutting out " state so chromosome model is a class value, represent the state of all switches in this honeycomb respectively, " off " or " on ".Adopted hexagonal array.That is to say that nano particle is placed on leg-of-mutton bight, and switch is along leg-of-mutton limit.Genetic algorithm can be searched a combination of switch setting and be served as an XOR device to construct nano units little, 4 * 4.In addition, indicate, having radius at one is in " circle " nano unit of 1 (i.e. a center nano particle that is centered on by the roughly circumference of six nano particles), and this nano unit can be by training as in 82 * 1 truth tables (2 inputs, 1 output) any one.Further, indicate, having radius at one is in " circle " nano unit of 2 (i.e. another that be made up of 12 nano particles roughly the above-mentioned radius that centers on of circumference be 1 nano unit), and this nano unit can be by training as in 64 2 * 2 truth tables (2 inputs, 2 outputs) any one.This dynamic nano unit model is simple and it is carried out relatively apace, thereby makes it to become a kind of be used to the study search technique of this nano unit and the outstanding instrument of logical attribute.
Each of following document is hereby incorporated by:
[a] T.Toffoli, N.H.Margolus; " Invertible Cellular Automata:AReview ", Cellular Automata:Theory and Experiment, H.Gutowitz edits; 1991, A Bradford Book, The MIT Press, Cambridge, Massachusetts, London England.
[b] T.Toffoli; " Cellular Automata as an Alternative to (Rather thanAn Approximation of) Differential Equations in Modeling Physics.PHYSICA D; Nonlinear Phenomena, Vol 10D (1984) Nos.1 ﹠amp; In January, 2,1984
[c] H.Gutowitz; " Introduction ", Cellular Automata:Theory andExperiment, H.Gutowitz is with [a]
[d]Chopard,Droz;Cellular?Automata?Modeling?of?Physical?Systems;1998,Cambridge?University?Press
The SPICE model
The SPICE model
The complex appts circuit attribute of a nano unit of SPICE modeling.We construct SPICE with part formerly in the genetic algorithm described carry out interface.Use the COM platform of Microsoft, the ICAPS/4 Windows SPICE variant by OLE and Intusoft company carries out interface, forms a nano unit simulator.Also utilize and v.1999.2 to carry out calculating from the HSPICE that Avant obtains.The nano unit simulator produces nano unit randomly and they has been configured to the effect of simple logic door.The average density of the density of given nano particle and dimension and molecular switch produces a nano unit at random as the metallic particles hexagonal network with concrete selection density.The molecular switch that connects adjacent nano particle is followed the Poisson distribution (Fig. 7) based on given average density.After creating a nano unit, limit and be provided with 20 around I/O pin (five pins occupy each in four limits).Each I/O pin can both be set to import, export or float and therefore have the character of a similar nano particle.In the SPICE engine internal, use nonlinear resistive network element simulation individual molecule.Be implemented in convergence among the SPICE by the stray capacitance that between this nano particle, comprises expection.The electric capacity of this increase stops and current break occurs in simulation process, and it is simulated the nano unit architecture more realistically and helps convergence.
In above-mentioned work, logic gate is voltage input and current output circuit.When the I/O pin was set to " height " or " low ", we made V ILAnd V IHBe respectively the low and high voltage of input pin.When the true value tabular value of an input is 1, V IHVolt voltage puts on this pin.0 expression of true value tabular value has applied V ILVolt voltage.Similarly, we make I OLAnd I OHBe respectively the output current threshold value.If the electric current by an output pin is equal to or less than I OL, then pin is considered to " off ", and if this electric current be equal to or higher than I OH, then this pin is considered to " on ".
The input and output of given a plurality of bifurcations, a truth table has been described the logic of expectation.It is not enough testing each true value.Each transformation between true value must be tested equally.Being used for an anti-phase tablet pattern and a corresponding truth table of phase inverter, NAND and half-adder partly shows after a while at one.
By analyze output from SPICE, we determine the output of nano unit at each clock step place.We are then these readings and I OHAnd I OLCompare to determine whether output pin is " on ", " off " or is not (establishing between the null value in discrete threshold values).By this way, we determine the logic of any given nano unit.By the truth table of this logic and expectation is compared, we can determine the whether logic function of carry out desired of this nano unit.
For a fixing nano unit, it is desirable searching in the middle of the institute of on off state might make up, and wherein the position of each switch is fixed.In other words, between nano particle, can not increase new switch, and existing switch can not be removed.Only on off state can be changed.In the SPICE model, pin setting and " on " and " off " current threshold (I OLAnd I OH) be constant.Purpose is to fix these parameters, makes any nano unit at random of specific nano particle and molecular switch density can be trained to some target logic door.Phase inverter, NAND door and anti-phase half adder are determined the example setting.
At one not among the file Nanocell.doc of representative SPICE list records at appendix of an example nano unit in the programming state." on "-" off " state that in Fig. 7, has shown the molecular switch of the nano unit of not programming.
Reprogramming is that the representative SPICE tabulation that is used as the same nano unit of phase inverter is recorded among the file Trained Nanocell.doc of appendix.In Fig. 8, shown " on "-" off " state as the nano unit that is programmed phase inverter.
The representative SPICE tabulation that is programmed for the same nano unit that is used as the NAND door is recorded among the file Trained Nanocell.doc of appendix.In Fig. 9, shown " on "-" off " state as the nano unit of the NAND door that is programmed.
The representative SPICE tabulation that is programmed for the same nano unit that is used as anti-phase half-adder is recorded among the file Trained Nanocell.doc of appendix.In Figure 10, shown " on "-" off " state as the nano unit of the anti-phase half-adder that is programmed.
The above results shows the programmability and the Reprogrammable of the example nano unit that shows in Fig. 7.
Though shown and described the preferred embodiments of the present invention, those skilled in the art can change it and not deviate from spirit of the present invention or instruction.Embodiment described here only is exemplary rather than restrictive.The many variations and the change of device, computing machine and method are possible, and all fall within the scope of the present invention.Therefore, protection domain is not limited to embodiment described here, but is only limited by appended claim, its scope should comprise the claim technical theme all be equal to.
Attached sheet
                         adjust.cpp/*****************************************************************************adjust.cppVan Zandt*****************************************************************************/#include″vzComputer.h″void   main(){ vzNanoCell *myCell;myCell=new vzNanoCell;    StartGraphics();    SetTimer(0);myCell->DoCreate(5,4,30,30,80,90);myCell->SetInReg(″00100″);myell->SetOutReg(″00000″);myCell->DoDraw();    readkey();    rectfill(screen,0,0,5,5,WHITE);    myCell->DoAdjust();    rectfill(screen,0,0,5,5,BLACK);readkey();delete myCell;    StopGraphics();return 0;}//**************************************************************************&lt;!-- SIPO &lt;DP n="63"> -->&lt;dp n="d63"/>                         conduct.cpp/*****************************************************************************conduct.cppVan Zandt*****************************************************************************/#include″vzComputer.h″void   main(){  vzNanoCell *myCell;  myCell=new vzNanoCell;      StartGraphics();      SetTimer(5);  myCell->DoCreate(5,9,30,30,75,75);  myCell->SetInReg(″01000″);  myCell->SetOutReg(″01010″);  myCell->DoDraw();      readkey();      myCell->DoConduct();  readkey();  delete myCell;      StopGraphics();  return 0;}//**************************************************************************&lt;!-- SIPO &lt;DP n="64"> -->&lt;dp n="d64"/>                            draw.cpp/****************************************************************Draw.cppVan Zandt****************************************************************/#include″vzComputer.h″void main(){      StartGraphics();      line(screen,50,50,70,70,WHITE);      line(screen,51,50,71,70,WHITE);      line(screen,52,50,72,70,WHITE);      circlefill(screen,50,50,10,RED);      circlefill(screen,70,70,10,RED);      line(screen,50,150,70,170,WHITE);      circlefill(screen,50,150,10,LIGHTRED);      circlefill(screen,70,170,10,LIGHTRED);      readkey();      StopGraphics();}&lt;!-- SIPO &lt;DP n="65"> -->&lt;dp n="d65"/>                            flood.cpp/*    ****************************************************************************flood.cppVan Zandt*****************************************************************************/#include″vzComputer.h″void   main(){  vzNanoCell *myCell;  myCell=new vzNanoCell;      StartGraphics();      SetTimer(1);  myCell->DoCreate(5,4,30,30,80,80);  myCell->SetInReg(″00100″);  myCell->SetOutReg(″01010″);  myCell->DoDraw();  save_bitmap(″flood1.bmp″,screen,desktop_palette);      readkey();  //myCell->DoAdjust();  //myCell->DoDraw();      myCell->DoFlood();  save_bitmap(″flood2.bmp″,screen,desktop_palette);  readkey();  delete myCell;      StopGraphics();  return 0;}//**************************************************************************&lt;!-- SIPO &lt;DP n="66"> -->&lt;dp n="d66"/>                             gal.cpp/*****************************************************************************gal.cppVan Zandt*****************************************************************************/#include″vzComputer.h″#include″vzPopulation.h″#include<iostream.h>  vzNanoCell          *myCell;      double                 theEvaluator(vzIndividual *iPtr);void    main(){      int                            i;      char                   buffer[80];      vzPopulation   *myPopulationPtr;      StartGraphics();  myCell=new vzNanoCell;      SetTimer(0);  myCell->DoCreate(5,4,30,30,80,90);      myPopulationPtr=new vzPopulation(500,myCell->GetSwitchCount(),2,theEvaluator);      myCell->DoClear();  myCell->SetInReg(″00100″);  myCell->SetOutReg(″00000″);      myCell->DoDraw();      readkey();  myCell->DoFlood();  save_bitmap(″flood1.bmp″,screen,desktop_palette);      readkey();      rectfill(screen,0,0,SCREEN_W,SCREEN_H,WHITE);      myPopulationPtr->BuildRandom();      myPopulationPtr->ReGenerate(100);      readkey(); &lt;!-- SIPO &lt;DP n="67"> -->&lt;dp n="d67"/>                              gal.cpp    rectfill(screen,0,0,SCREEN_W,SCREEN_H,BLACK);    myCell->DoClear();myCell->SetInReg(″00100″);myCell->SetOutReg(″00000″);    myCell->LoadSwitch(myPopulationPtr->PopulationPtr->SelectBest())->                        GetIndividualPtr(my                                                  GetChromosomePtr());    myCell->DoDraw();    readkey();myCell->DoFlood();save_bitmap(″flood2.bmp″,screen,desktop_palette);    readkey();    StopGraphics();    delete myPopulationPtr;delete myCell;return 0;}double theEvaluator(vzIndividual *iPtr){   static  int             i=0;   char    buffer[80];   double  tmpFitness;   double  totFitness=0.0;   myCell->DoClear();     myCell->LoadSwitch(iPtr->GetChromosomePtr());myCell->SetInReg(″00100″);myCell->SetOutReg(″00000″);myCell->DoAdjust();    tmpFitness=(double)myCell->GetPinPtr(out,0)->GetPinDistance(in,2);    if(tmpFitness==-1.00)tmpFitness=0.00;    else tmpFitness=1000.0-tmpFitness;    totFitness+=tmpFitness;    tmpFitness=(double)myCell->GetPinPtr(out,1)->GetPinDistance(in,2);    if(tmpFitness==-1.00)tmpFitness=0.00;    else tmpFitness=1000.0-tmpFitness;&lt;!-- SIPO &lt;DP n="68"> -->&lt;dp n="d68"/>                            gal.cpp     totFitness+=tmpFitness;     tmpFitness=(double)myCell->GetPinPtr(out,3)->GetPinDistance(in,2);     if(tmpFitness==-1.00)tmpFitness=0.00;     else tmpFitness=1000.0-tmpFitness;     totFitness+=tmpFitness;     tmpFitness=(double)myCell->GetPinPtr(out,4)->GetPinDistance(in,2);     if(tmpFitness==-1.00)tmpFitness=0.00;     else tmpFitness=1000.0-tmpFitness;     totFitness+=tmpFitness;     tmpFitness=(double)myCell->GetPinPtr(in,1)->GetPinDistance(in,2);     if(tmpFitness==-1.00)tmpFitness=0.00;     else tmpFitness=1000.0-tmpFitness;     totFitness+=tmpFitness;     tmpFitness=(double)myCell->GetPinPtr(in,3)->GetPinDistance(in,2);     if(tmpFitness==-1.00)tmpFitness=0.00;     else tmpFitness=1000.0-tmpFitness;     totFitness+=tmpFitness;//========     tmpFitness=(double)myCell->GetPinPtr(out,2)->GetPinDistance(in,2);     if(tmpFitness==-1.00)tmpFitness=1000.00;     else if(tmpFitness<50)tmpFitness=0.00;     else tmpFitness=tmpFitness-50;     totFitness+=tmpFitness;     tmpFitness=(double)myCell->GetPinPtr(in,0)->GetPinDistance(in,2);     if(tmpFitness==-1.00)tmpFitness=1000.00;     else if(tmpFitness<50)tmpFitness=0.00;     else tmpFitness=tmpFitness-50;     totFitness+=tmpFitness;     tmpFitness=(double)myCell->GetPinPtr(in,4)->GetPinDistance(in,2);     if(tmpFitness==-1.00)tmpFitness=1000.00;     else if(tmpFitness<50)tmpFitness=0.00;     else tmpFitness=tmpFitness-50;     totFitness+=tmpFitness;&lt;!-- SIPO &lt;DP n="69"> -->&lt;dp n="d69"/>                                    gal.cpp    sprintf(buffer,″%d:%f″,i++,totFitness);textout(screen,font,buffer,5,5,BLACK);    return totFitness;}//**************************************************************************&lt;!-- SIPO &lt;DP n="70"> -->&lt;dp n="d70"/>                        parity.cpp/*************************************************************parity.cppVan Zandt*************************************************************/#include″vzClassifier.h″int             gClassifierSetSize=100;double  gGeneralTaxRate=.01;double  gBadMatchTaxRate=.10;double  gHonorariumRate=.0;int             gMutationPer1000=100;int             gTournamentSize=100;int             gTournamemtCount=10;int             gRegeneratePer1000=1000;int     main(){    vzClassSystem   myClass(       gClassifierSetSize,neralTaxRate,                                               gGedMatchTaxRate,                                              gBanorariumRate,                                               gHo                                                         gMutationPer1000,                                                         gTournamentSize,                                                         gTournamentCount,                                                         gRegeneratePer1000);    vzVector<int>   S0(3);    vzVector<int>   S1(3);    vzVector<int>   S2(3);    vzVector<int>   S3(3);    vzVector<int>   S4(3);    vzVector<int>   S5(3);    vzVector<int>   S6(3);    vzVector<int>   S7(3);    vzVector<int>   Solution(8);    int             i;&lt;!-- SIPO &lt;DP n="71"> -->&lt;dp n="d71"/>                 parity.cppint             maxCycle=1000;int             theScore;S0[0]=0;S0[1]=0;S0[2]=0;Solution[0]=1;S1[0]=0;S1[1]=0;S1[2]=1;Solution[1]=0;S2[0]=0;S2[1]=1;S2[2]=0;Solution[2]=0;S3[0]=0;S3[1]=1;S3[2]=1;Solution[3]=1;S4[0]=1;S4[1]=0;S4[2]=0;Solution[4]=0;S5[0]=1;S5[1]=0;S5[2]=1;Solution[5]=1;S6[0]=1;S6[1]=1;S6[2]=0;Solution[6]=1;S7[0]=1;S7[1]=1;S7[2]=1;Solution[7]=0;for(i=0;i<maxCycle;i++){      theScore=0;&lt;!-- SIPO &lt;DP n="72"> -->&lt;dp n="d72"/>                   parity.cpp        if(Solution[0]==myClass.GetMove(S0))              {theScore++;myClass.ApplyReward(1000);}        if(Solution[1]==myClass.GetMove(S1))              {theScore++;myClass.ApplyReward(1000);}        if(Solution[2]==myClass.GetMove(S2))              {theScore++;myClass.ApplyReward(1000);}        if(Solution[3]==myClass.GetMove(S3))              {theScore++;myClass.ApplyReward(1000);}        if(Solution[4]==myClass.GetMove(S4))              {theScore++;myClass.ApplyReward(1000);}        if(Solution[5]==myClass.GetMove(S5))              {theScore++;myClass.ApplyReward(1000);}        if(Solution[6]==myClass.GetMove(S6))              {theScore++;myClass.ApplyReward(1000);}        if(Solution[7]==myClass.GetMove(S7))              {theScore++;myClass.ApplyReward(1000);}        cout<<i<<″->″<<theScore<<endl;        doPause(10);}return 0;};&lt;!-- SIPO &lt;DP n="73"> -->&lt;dp n="d73"/>                         plot.cpp/****************************************************************Plot.cppVan Zandt***************************************************************/#include<math.h>#include″vzComputer.h″void main(){    double x,y;    int            i;    StartGraphics();int     myBorder=20;int         X0=SCREEN_W/2;    int            Y0=SCREEN_H/2;    line(screen,X0,Y0-(Y0-myBorder),X0,Y0+(Y0-myBorder),WHITE);    line(screen,X0-(X0-myBorder),Y0,X0+(X0-myBorder),Y0,WHITE);    for(i=-75;i<=75;i+=2)    {    x=i+0.00;    y=150.0*sin((x*PI)/50.0);           if(x*PI/50.0>PI/2&amp;&amp;y<50.0)                 y=50.0;           if(x*PI/50.0<-PI/2&amp;&amp;y>-50.0)                 y=-50.0;    circlefill(screen,X0+((int)x*4),Y0-(int)y,3,RED);    x=i+1.00;    y=150.0*sin((x*PI)/50.0);           if((x>0.0&amp;&amp;y>50.0)||x*PI/50.0>PI/2)                y=50.0;           if((x<0.0&amp;&amp;y<-50.0)||x*PI/50.0<-PI/2)                y=-50.0;    circlefill(screen,X0+((int)x*4),Y0-(int)y,3,LIGHTRED);}save_bitmap(″plot.bmp″,screen,desktop_palette);    readkey();    StopGraphics();}&lt;!-- SIPO &lt;DP n="74"> -->&lt;dp n="d74"/>plot.cpp&lt;!-- SIPO &lt;DP n="75"> -->&lt;dp n="d75"/>                          ptest.cpp/*ptest.cppVan Zandt*/#include<iostream.h>#include<conio.h>#include<math.h>#include″vzTools.h″int     PoissonRandom(double expectedvalue);void main(){       int     k=5;      int     i;      int     n;      int     result[20];      double  sum=0.0;      for(i=0;i<20;i++)         result[i]=0;      for(i=0;i<1000;i++)      {          n=PoissonRandom((double)k);         result[n]++;         sum+=n;      }      for(i=0;i<20;i++)        cout<<i<<′\t′<<result[i]<<endl;      cout<<endl<<endl<<sum/1000.0<<endl;      getch();}int     PoissonRandom(double expectedvalue){      int     n=0;      double  limit;      double  x;      limit=exp(-expectedvalue);      x=getRandom(1000000)/1000000.0;      while(x>limit)      {            n++;            x*=getRandom(1000000)/1000000.0;&lt;!-- SIPO &lt;DP n="76"> -->&lt;dp n="d76"/>                          ptest.cpp  }  return n;}&lt;!-- SIPO &lt;DP n="77"> -->&lt;dp n="d77"/>                            Run.cpp/*****************************************************************************vzRun.cppVan Zandt*****************************************************************************/#include″vzComputer.h″void    main(){  vzNanoCell *myCell;  myCell=new vzNanoCell;      StartGraphics();      SetTimer(0);  myCell->DoCreate(5,9,30,30,75,75);  //myCell->SetInReg(″01000″);  //myCell->SetOutReg(″01010″);  myCell->DoDraw();      readkey();  myCell->DoAdjust();  //myCell->DoDraw();  readkey();  delete myCell;      StopGraphics();  return 0;}//**************************************************************************&lt;!-- SIPO &lt;DP n="78"> -->&lt;dp n="d78"/>                       theSimulator.cpp/*****************************************************************************theSimulator.cppVan Zandt*****************************************************************************/#include        ″vzComputer.h″#include        ″vzPopulation.h″vzNanocell  *myCell;double          theEvaluator1(vzIndividual *iPtr);double          theEvaluator2(vzIndividual *iPtr);double          doScore(int n,bool IsItAnd);int             doNew();int             doClear();int             doRun();int             doAbout();int             doExit(.);int             doSet10000();int             doSet01000();int             doSet11000();int             doStore();int             doLoad();int             doPaint();int             doSelect();int             doTrainAND();int             doTrainOR();int             doGetAND();int             doGetOR();int             doClassifierAND();MENU    theFileMenu[]={      {       ″Load    ″,         doLoad,          NULL,NULL    },      {       ″Store   ″,         doStore,         NULL,NULL    },      {       ″Paint   ″,         doPaint,         NULL,NULL    },      {       ″Select  ″,         doSelect,        NULL,NULL    },      {       ″        ″,         NULL,            NULL,&lt;!-- SIPO &lt;DP n="79"> -->&lt;dp n="d79"/>                        theSimulator.cppNULL    },    {       ″Exit    ″,         doExit,          NULL,NULL    }};MENU    theTrainMenu[]={    {       ″AND     ″,                  doTrainAND,    NULL,            NULL    },    {       ″OR      ″,                  doTrainOR,    NULL,            NULL    },    {       ″        ″,                  NULL,    NULL,            NULL    },    {       ″AND Circuit″,      doGetAND,-NULL,          NULL      },    {       ″OR Circuit″,       doGetOR,NULL,          NULL      },    {       ″        ″,                  NULL,    NULL,            NULL    },    {       ″AND Classifier″,   doClassifierAND,         NULL,             NULL      }};MENU    theMenu[]={    {       ″File    ″,         NULL,            theFileMenu,      NULL    },    {       ″Train   ″,         NULL,            theTrainMenu,     NULL    },    {       ″                              The Nanocell Simulator″,                              doAbout,     NULL,NULL    }};MENU    theRunMenu[]={    {      ″New    ″,           doNew,           NULL,NULL    },    {      ″Run    ″,           doRun,           NULL,NULL    },    {      ″Clear  ″,           doClear,         NULL,NULL    },    {     .″       ″,       NULL,        NULL,        NULL},    {      ″Set[10000]″,    doSet10000,  NULL,        NULL},    {      ″Set[01000]″,    doSet01000,  NULL,        NULL&lt;!-- SIPO &lt;DP n="80"> -->&lt;dp n="d80"/>                        theSimulator.cpp},    {        ″Set[11000]″,  doSet11000,    NULL,       NULL       }};DIALOG the_dialog[]={  /* (dialog proc)     (x)   (y)   (w)   (h)  (fg)  (bg)  (key) (flags)  (d1)       (d2)   (dp)                   (dp2) (dp3)*/  {d_box_proc,        0,   0,   639, 479,255, 4,   0,   0,      0,        0,    NULL,                 NULL,NULL  },  {d_box_proc,        12,  12,  615, 455,8,   6,   0,   0,      0,        0,    NULL,                 NULL,NULL  },  {d_menu_proc,       12,  13,  0,   0,  0,   0,   0,   0,      0,        0,    (void *)theMenu,      NULL,NULL  },  {d_menu_proc,       12,  454, 0,   0,  0,   0,   0,   0,      0,        0,    (void *)theRunMenu,   NULL,NULL  },  {NULL,              0,   0,   0,   0,  0,   0,   0,   0,      0,        0,    NULL,                 NULL,NULL  }};int main(){      StartGraphics();      SetTimer(0);      TraceOff();      do_dialog(the_dialog,-1);      if(myCell!=NULL)            delete myCell;      StopGraphics();      return 0;}int            doNew(){      show_mouse(NULL);      if(myCell!=NULL)            delete myCell;     myCell=new vzNanocell;&lt;!-- SIPO &lt;DP n="81"> -->&lt;dp n="d81"/>                         theSimulator.cpp  myCell->DoCreate(5,4,30,30,85,90);  myCell->DoDraw();      show_mouse(screen);      return D_O_K;}int               doAbout(){      char    str1[]=″The Nanocell Simulator″;      char    str2[]=″by Bill Van Zandt″;      char    str3[]=″and Eric Libby″;      alert(str1,str2,str3,″OK″,NULL,0,0);      return D_O_K;}int              doClear(){       int           i;      char   msg[20]=″                ″;      char   buffer[40]=″                            ″;      if(myCell!=NULL)      {            show_mouse(NULL);            text_mode(CYAN);            for(i=0;i<myCell->GetPinNum();i++)            {                    textout(screen,font,msg,540,myCell->PinHeight(i),BLACK);            textout(screen,font,msg,540,myCell->PinHeight(i)+10,BLACK);                    textout(screen,font,msg,15,myCell->PinHeight(i),BLACK);            textout(screen,font,msg,15,myCell->PinHeight(i)+10,BLACK);            }            textout(screen,font,buffer,20,440,BLACK);            TraceOn();            myCell->ClearCell();&lt;!-- SIPO &lt;DP n="82"> -->&lt;dp n="d82"/>                      theSimulator.cpp            TraceOff();            show_mouse(screen);    }    else    {    show_mouse(NULL);           rectfill(screen,25,25,615,445,CYAN);           show_mouse(screen);    }    return D_O_K;}int           doRun(){    int          i;    int          flow;    char  msg[20];    if(myCell!=NULL)    {            show_mouse(NULL);            text_mode(CYAN);            myCell->DoFlow();    for(i=0;i<myCell->GetPinNum();i++)            {                    flow=0;                    flow=myCell->GetInitialFlow(false,i);            sprintf(msg,″init=%d″,flow);                    textout(screen,font,msg,540,myCell->PinHeight(i),BLACK);            flow=myCell->GetFlow(false,i);                    sprintf(msg,″flow=%d″,flow);            textout(screen,font,msg,540,myCell->PinHeight(i)+10,BLACK);                     flow=myCell->GetInitialFlow(true,i);                    sprintf(msg,″init=%d″,flow);                    textout(screen,font,msg,15,myCell->PinHeight(i),BLACK);&lt;!-- SIPO &lt;DP n="83"> -->&lt;dp n="d83"/>                      theSimulator.cpp                    flow=myCell->GetFlow(true,i);                    sprintf(msg,″flow=%d″,flow);            textout(screen,font,msg,15,myCell->PinHeight(i)+10,BLACK);            myCell->Drawpaths();            }             ,            show_mouse(screen);     }     return D_O_K;}int             doSelect(){     char   path[81];     file_select(″Select File″,path,NULL);     doClear();     return D_O_K;}int             doSet10000(){     char   msg[20];     if(myCell!=NULL)     {            doClear();            show_mouse(NULL);            text_mode(CYAN);            TraceOn();            myCell->SetPin(true,0,kStartFlow);    sprintf(msg,″flow=%-5d″,kStartFlow);    textout(screen,font,msg,16,myCell->PinHeight(0),BLACK);            myCell->DeactivatePin(true,1);            myCell->DeactivatePin(true,2);            myCell->DeactivatePin(true,3);&lt;!-- SIPO &lt;DP n="84"> -->&lt;dp n="d84"/>                       theSimulator.cpp            myCell->DeactivatePin(true,4);            TraceOff();            show_mouse(screen);    }    return  D_O_K;}int             doSet01000(){     char    msg[20];    if(myCell!=NULL)    {            doClear();            show_mouse(NULL);            text_mode(CYAN);            TraceOn();            myCell->SetPin(true,1,kStartFlow);    sprintf(msg,″flow=%-5d″,kStartFlow);    textout(screen,font,msg,16,myCell->PinHeight(1),BLACK);            myCell->DeactivatePin(true,0);            myCell->DeactivatePin(true,2);            myCell->DeactivatePin(true,3);            myCell->DeactivatePin(true,4);            TraceOff();            show_mouse(screen);    }    return  D_O_K;}int             doSet11000(){    char    msg[20];    if(myCell!=NULL)    {            doClear();            show_mouse(NULL);&lt;!-- SIPO &lt;DP n="85"> -->&lt;dp n="d85"/>                       theSimulator.cpp            text_mode(-1);            TraceOn();            myCell->SetPin(true,0,kStartFlow);    sprintf(msg,″flow=%-5d″,kStartFlow);    textout(screen,font,msg,16,myCell->PinHeight(0),BLACK);            myCell->SetPin(true,1,kStartFlow);    sprintf(msg,″flow=%-5d″,kStartFlow);    textout(screen,font,msg,16,myCell->PinHeight(1),BLACK);            myCell->DeactivatePin(true,2);            myCell->DeactivatePin(true,3);            myCell->DeactivatePin(true,4);            TraceOff();            show_mouse(screen);    }    return  D_O_K;}int             doStore(){    if(myCell!=NULL)            myCell->DoStore(″Nanocell.out″);    return  D_O_K;}int             doLoad(){    show_mouse(NULL);    doClear();    if(myCell!=NULL)          delete myCell;    myCell=new vzNanocell;    myCell->DoLoad(″Nanocell.out″);myCell->DoDraw();    show_mouse(screen);&lt;!-- SIPO &lt;DP n="86"> -->&lt;dp n="d86"/>                     theSimulator.cpp    return  D_O_K;}int             doGetAND(){    show_mouse(NULL);    doClear();    if(myCell!=NULL)            delete myCell;    myCell=new vzNanocell;    myCell->DoLoad(″Nanocell.and″);myCell->DoDraw();    show_mouse(screen);    return  D_O_K;}int             doGetOR(){    show_mouse(NULL);    doClear();    if(myCell!=NULL)            delete myCell;    myCell=new vzNanocell;    myCell->DoLoad(″Nanocell.or″);myCell->DoDraw();    show_mouse(screen);    return  D_O_K;}int             doPaint(){    char    buffer[40];    static int bmp=1;&lt;!-- SIPO &lt;DP n="87"> -->&lt;dp n="d87"/>                       theSimulator.cpp    sprintf(buffer,″mcPaint%d.bmp″,bmp);    save_bitmap(buffer,screen,desktop_palette);    bmp++;    return  D_O_K;}int             doTrainAND(){    vzPopulation    *myPopulationPtr;    if(myCell!=NULL)    {            doClear();            TraceOff();            myPopulationPtr=new vzPopulation(         20,//mkTournamentCount            32,           //mkTournamentSize            400,   //mkMutate            500,   //mkCrossover            100,   //mkRandom,            50,                   //mkCount                                            myCell->GetSwitchCount(),  //mkSize             2,     //mkAlphabetCount                                                            theEvaluator2);            //Evaluation Ptr             myCell->ClearCell();             myPopulationPtr->BuildRandom();             myPopulationPtr->ReGenerate(50);             myCell->ClearCell();             myCell->LoadSwitch(myPopulationPtr->                             GetIndividualPtr(myPopulationPtr->SelectBest())->                             GetChromosomePtr());&lt;!-- SIPO &lt;DP n="88"> -->&lt;dp n="d88"/>                     theSimulator.cpp            delete myPopulationPtr;    }    return  D_O_K;}int             doTrainOR(){    vzPopulation     *myPopulationPtr;   if(myCell!=NULL)    {            doClear();            TraceOff();            myPopulationPtr=new vzPopulation(       20,//mkTournamentCount            32,           //mkTournamentSize            400,   //mkMutate            500,   //mkCrossover            100,   //mkRandom,            50,           //mkCount                                          myCell->GetSwitchCount(),//mkSize             2,    //mkAlphabetCount                                                          theEvaluator1);           //Evaluation Ptr            myCell->ClearCell();            myPopulationPtr->BuildRandom();            myPopulationPtr->ReGenerate(10);            TraceOn();            myCell->ClearCell();            TraceOff();            myCell->LoadSwitch(myPopulationPtr->                            GetIndividualPtr(myPopulationPtr->SelectBest())->                            GetChromosomePtr());&lt;!-- SIPO &lt;DP n="89"> -->&lt;dp n="d89"/>                     theSimulator.cpp            delete myPopulationPtr;    }    return  D_O_K;}int doExit(){    return  D_CLOSE;}double  theEvaluator1(vzIndividual *iPtr){    static  int             i=0;    char    buffer[80];    int             tmpFlow;    double  totFitness=0.0;    text_mode(CYAN);    myCell->LoadSwitch(iPtr->GetChromosomePtr());    myCell->ClearCell();myCell->SetInReg(″10000 ″);myCell->SetOutReg(″*****″);myCell->DoFlow();    totFitness+=doScore(0,false);  myCell->ClearCell();myCell->SetInReg(″01000″);myCell->SetOutReg(″*****″);myCell->DoFlow();  totFitness+=doScore(1,false);  myCell->ClearCell();myCell->SetInReg(″11000″);myCell->SetOutReg(″*****″);myCell->DoFlow();  totFitness+=doScore(2,false);  sprintf(buffer,″%d:%f″,i++,totFitness);textout(screen,font,buffer,20,440,BLACK);if (totFitness==0)          i=0;&lt;!-- SIPO &lt;DP n="90"> -->&lt;dp n="d90"/>                    theSimulator.cpp   return totFitness;}double theEvaluator2(vzIndividual *iPtr){   static  int             i=0;   char    buffer[80];   int             tmpFlow;   double  totFitness=0.0;   text_mode(CYAN);   myCell->LoadSwitch(iPtr->GetChromosomePtr());   myCell->ClearCell();myCell->SetInReg(″10000″);myCell->SetOutReg(″*****″); myCell->DoFlow();      totFitness+=doScore(0,true);    myCell->ClearCell();myCell->SetInReg(″01000″);myCell->SetOutReg(″******″);myCell->DoFlow();    totFitness+=doScore(1,true);    myCell->ClearCell();myCell->SetInReg(″11000″);myCell->SetOutReg(″*****″);myCell->DoFlow();    totFitness+=doScore(2,true);    sprintf(buffer,″%d:%f″,i++,totFitness);textout(screen,font,buffer,20,440,BLACK);if(totFitness==0)           i=0;   return totFitness;}double doScore(int n,bool IsItAnd){//     AND:in(″??***″)-->out(″?****″)&lt;!-- SIPO &lt;DP n="91"> -->&lt;dp n="d91"/>                       theSimulator.cppint                 tmpFlow;double      retFitness=0.0;if(IsItAnd)   {            switch(n)            {                    case 0://in(″10000″)                    case 1://in(″01000″)                            tmpFlow=myCell->GetPinPtr(out,0)->GetFlow(true);                            if(tmpFlow<=kLowFlow)                                  retFitness+=0.00;                            else                                  retFitness+=(double)(tmpFlow-kLowFlow);                            break;                    case 2://in(″11000″)                            tmpFlow=myCell->GetPinPtr(out,0)->GetFlow(true);                            if(tmpFlow>=kHighFlow)                                   retFitness+=0.00;                            else                                   retFitness+=(double)(kHighFlow-tmpFlow);                            break;          }          tmpFlow=myCell->GetPinPtr(out,1)->GetFlow(true);          if(tmpFlow<=kLowFlow)                retFitness+=0.00;          else                retFitness+=(double)(tmpFlow-kLowFlow);          tmpFlow=myCell->GetPinPtr(out;2)->GetFlow(true);          if(tmpFlow<=kLowFlow)                retFitness+=0.00;          else                retFitness+=(double)(tmpFlow-kLowFlow);          tmpFlow=myCell->GetPinPtr(out,3)->GetFlow(true);          if(tmpFlow<=kLowFlow)                retFitness+=0.00;          else                retFitness+=(double)(tmpFlow-kLowFlow);          tmpFlow=myCell->GetPinPtr(out,4)->GetFlow(true);          if(tmpFlow<=kLowFlow)                retFitness+=0.00;&lt;!-- SIPO &lt;DP n="92"> -->&lt;dp n="d92"/>                       theSimulator.cpp           else                    retFitness+=(double)(tmpFlow-kLowFlow);}    else    {           switch(n)           {                    case 0://in(″10000″)                    case 1://in(″01000″)                    case 2://in(″11000″)                    tmpFlow=myCell->GetPinPtr(out,0)->GetFlow(true);                    if(tmpFlow>=kHighFlow)                            retFitness+=0.00;                    else                            retFitness+=(double)(kHighFlow-tmpFlow);                    break;           }           tmpFlow=myCell->GetPinPtr(out,1)->GetFlow(true);           if(tmpFlow<=kLowFlow)                    retFitness+=0.00;           else                    retFitness+=(double)(tmpFlow-kLowFlow);           tmpFlow=myCell->GetPinPtr(out,2)->GetFlow(true);           if(tmpFlow<=kLowFlow)                    retFitness+=0.00;           else                    retFitness+=(double)(tmpFlow-kLowFlow);           tmpFlow=myCell->GetPinPtr(out,3)->GetFlow(true);           if(tmpFlow<=kLowFlow)                    retFitness+=0.00;           else                    retFitness+=(double)(tmpFlow-kLowFlow);           tmpFlow=myCell->GetPinPtr(out,4)->GetFlow(true);           if(tmpFlow<=kLowFlow)                    retFitness+=0.00;           else                    retFitness+=(double)(tmpFlow-kLowFlow);    }    return retFitness;}&lt;!-- SIPO &lt;DP n="93"> -->&lt;dp n="d93"/>                       theSimulator.cppint            doClassifierAND(){    return D_O_K;}&lt;!-- SIPO &lt;DP n="94"> -->&lt;dp n="d94"/>                         vzGrid.cpp/***************************************************************************vzGrid.cppVan Zandt***************************************************************************/vzGrid::vzGrid(){}vzGrid::~vzGrid(){}void vzGrid::DoCreate(int NumConn,int NumSwit){    mNumConn=NumConn;    mNumSwit=NumSwit;    mBoxHeight=190/(2*mNumConn);    mBoxWidth=320/(2*mNumSwit);    mCount=-1;}void vzGrid::DoDraw(int CurrentConn,int CurrentSwit,int Successval){    int x,y;    x=CurrentConn;    y=CurrentSwit;    mCount++;    if((Successval>=90)&amp;&amp;(Successval<100))           box(mBoxWidth*2*x+5,2*y*mBoxHeight+10,mBoxWidth*(2*x+1)+5,                   mBoxHeight*(2*y+1)+10,RED,FILLED);    if((Successval>=80)&amp;&amp;(Successval<90))           box(mBoxWidth*2*x+5,2*y*mBoxHeight+10,mBoxWidth*(2*x+1)+5,                   mBoxHeight*(2*y+1)+10,MAGENTA,FILLED);    if((Successval>=70)&amp;&amp;(Successval<80))           box(mBoxWidth*2*x+5,2*y*mBoxHeight+10,mBoxWidth*(2*x+1)+5,&lt;!-- SIPO &lt;DP n="95"> -->&lt;dp n="d95"/>                       vzGrid.cpp                   mBoxHeight*(2*y+1)+10,YELLOW,FILLED);    if((Successval>=60)&amp;&amp;(Successval<70))           box(mBoxWidth*2*x+5,2*y*mBoxHeight+10,mBoxWidth*(2*x+1)+5,                   mBoxHeight*(2*y+1)+10,GREEN,FILLED);    if((Successval>=50)&amp;&amp;(Successval<60))           box(mBoxWidth*2*x+5,2*y*mBoxHeight+10,mBoxWidth*(2*x+1)+5,                   mBoxHeight*(2*y+1)+10,CYAN,FILLED);    if((Successval<50))           box(mBoxWidth*2*x+5,2*y*mBoxHeight+10,mBoxWidth*(2*x+1)+5,                   mBoxHeight*(2*y+1)+10,BLUE,FILLED);    if(Successval==100)          box(mBoxWidth*2*x+5,2*y*mBoxHeight+10,mBoxWidth*(2*x+1)+5,           mBoxHeight*(2*y+1)+10,WHITE,FILLED);}&lt;!-- SIPO &lt;DP n="96"> -->&lt;dp n="d96"/>                         vzGrid.h/*************************************************************************vzGrid.hVan Zandt*************************************************************************/#if !defined(_vzGrid_h)#define_vzGrid_h#include<conio.h>class vzGrid{private:    int mBoxHeight;    int mBoxWidth;    int mNumSwit;    int mNumConn;    int mCount;public:    vzGrid();    ~vzGrid();    void DoCreate(int NumConn,int NumSwit);    void DoDraw(int CurrentConn,int CurrentSwit,int Successval);};#include″vzGrid.cpp″#endif //_vzGrid_h&lt;!-- SIPO &lt;DP n="97"> -->&lt;dp n="d97"/>                      vzPercolation.cpp/*****************************************************************************vzPercolation.cppVan Zandt*****************************************************************************/const int kRegisterWidth=15;#include ″vzNanoCell.h″#include<iostream.h>#include″vzGrid.h″void    main(){    int connx;int swity;int x,y,p;float success;int i;int testnum;vzGrid myGrid;    vgainit();    cls(BLACK);testnum=1;i=-1;x=-1;vzNanoCell   *myCell;myGrid.DoCreate(30,30);for(connx=40;connx<101;connx=connx+2){    x++;    y=-1;    for(swity=40;swity<101;swity=swity+2)    {           y++;        success=0;        i++;        for(p=0;p<testnum;p++)&lt;!-- SIPO &lt;DP n="98"> -->&lt;dp n="d98"/>                   vzPercolation.cpp    {        myCell=new vzNanoCell;        myCell->DoCreate(4,3,40,40,connx,swity);        myCell->DoLoad(″1000″);        myCell->DoFlood();        if(myCell->DoCheck())               success++;        delete myCell;        myCell=new vzNanoCell;        myCell->DoCreate(4,3,40,40,connx,swity);        myCell->DoLoad(″0100″);        myCell->DoFlood();        if(myCell->DoCheck())           success++;        delete myCell;        myCell=new vzNanoCell;        myCell->DoCreate(4,3,40,40,connx,swity);        myCell->DoLoad(″0010″);        myCell->DoFlood();        if(myCell->DoCheck())           success++;        delete myCell;        myCell=new vzNanoCell;        myCell->DoCreate(4,3,40,40,connx,swity);        myCell->DoLoad(″0001″);        myCell->DoFlood();        if(myCell->DoCheck())           success++;        delete myCell;    }    myGrid.DoDraw(x,y,success/testnum*25.00);}}&lt;!-- SIPO &lt;DP n="99"> -->&lt;dp n="d99"/>                       vzPercolation.cpp    getch();    vgaexit();return 0;}//**************************************************************************&lt;!-- SIPO &lt;DP n="100"> -->&lt;dp n="d100"/>                      vzClassifier.cpp/***************************************************************************Van ZandtvzClassifier.cpp***************************************************************************/vzClassifier::vzClassifier(  int              kClassifierSetSize,                                                            double     kGeneralTaxRate,                                                            double     kBadMatchTaxRate,                                                            double     kHonorariumRate,                                                            int            kMutationPer1000,                                                            int            kTournamentSize,                                                            int            kTournamentCount,                                                            int            kRegeneratePer1000):      mClassifierSetSize(kClassifierSetSize),    mGeneralTaxRate(kGeneralTaxRate),    mBadMatchTaxRate(kBadMatchTaxRate),    mHonorariumRate(kHonorariumRate),   mMutationPer1000(kMutationPer1000),    mTournamentSize(kTournamentSize),    mTournamentCount(kTournamentCount),    mRegeneratePer1000(kRegeneratePer1000){    mClassifierSet.resize(mClassifierSetSize);    mMatchSet.resize(mClassifierSetSize);    mActionSet.resize(mClassifierSetSize);    mOldActionSet.resize(mClassifierSetSize);    //BuildRandom();    mMatchSize=0;    mActionSize=0;    mOldActionSize=0;}/*&lt;!-- SIPO &lt;DP n="101"> -->&lt;dp n="d101"/>                         vzClassifier.cppvoid    vzClassifier::PrintvzClassifiers(ofstream out){    int               i;    for(i=0;i<kvzClassifierSetSize;i++)    {           out<<i<<″:-->″;           mClassifierSet[i].PrintToFile(out);    }}*/void    vzClassifier::BuildMatchSet(vzVector<int>theSensor){    int               i;    mMatchSize=0;    for(i=0;i<mClassifierSet.length();i++)            if(mClassifierSet[i].IsMatch(theSensor))            {                  mMatchSet[mMatchSize]=i;                  mMatchSize++;            }    if(mMatchSize==0)    {            i=BuildCover(theSensor);            mMatchSet[mMatchSize]=i;            mMatchSize++;    }}int             vzClassifier::GetMove(vzVector<int>theSensor){    BuildMatchSet(theSensor);    return BuildActionSet();}int             vzClassifier::BuildCover(vzVector<int>theSensor){    int             i;    double average;    average=0.0;&lt;!-- SIPO &lt;DP n="102"> -->&lt;dp n="d102"/>                       vzClassifier.cpp    for(i=0;i<mClassifierSetSize;i++)           average+=mClassifierSet[i].GetFitness();    average/=mClassifierSetSize;    i=SelectWeak(mClassifierSet,mClassifierSet.length());    mClassifierSet[i].BuildCover(theSensor,average);    return i;}void    vzClassifier::ApplyReward(int score){    double tmpHonorarium=0.0;    double totHonorarium=0.0;    int            bestAction;    int            i;    double tmpFitness;    bestAction=mClassifierSet[mActionSet[0]].GetAction();    for(i=0;i<mClassifierSet.length();i++)    {           tmpFitness=mClassifierSet[i].GetFitness();            mClassifierSet[i].SetFitness(tmpFitness *                                                   (1.0-mGeneralTaxRate));    }    for(i=0;i<mMatchSize;i++)            if(mClassifierSet[mMatchSet[i]].GetAction()!=bestAction)            {                  tmpFitness=mClassifierSet[mMatchSet[i]].GetFitness();                  mClassifierSet[mMatchSet[i]].SetFitness(tmpFitness*                                                  (1.0-mBadMatchTaxRate));            }/*     for(i=0;i<mActionSize;i++)     {            tmpHonorarium=mClassifierSet[mActionSet[i]].GetFitness()*                                           kHonorariumRate;&lt;!-- SIPO &lt;DP n="103"> -->&lt;dp n="d103"/>                      vzClassifier.cpp           mClassifierSet[mActionSet[i]].SetFitness(                   mClassifierSet[mActionSet[i]].GetFitness()-tmpHonorarium)           totHonorarium+=tmpHonorarium;   }   for(i=0;i<mOldActionSize;i++)           mClassifierSet[mOldActionSet[i]].SetFitness(tmpHonorarium/                                                   mOldActionSize);*/   for(i=0;i<mActionSize;i++)   {           tmpFitness=mClassifierSet[mActionSet[i]].GetFitness();           tmpFitness*=1.0+mGeneralTaxRate;           mClassifierSet[mActionSet[i]].SetFitness(tmpFitness+                                                   (((double)score)/mActionSize));    }    DoTournament();}int            vzClassifier::SelectStrongAction(vzVector<int>theSet,int size){    int            i;    int            r;    double TotalFitness;    TotalFitness=0.0;    for(i=0;i<size;i++)           TotalFitness+=mClassifierSet[theSet[i]].GetFitness();    r=getRandom((int)TotalFitness);    TotalFitness=0.0;    for(i=0;i<size;i++)    {          TotalFitness+=mClassifierSet[theSet[i]].GetFitnes&lt;!-- SIPO &lt;DP n="104"> -->&lt;dp n="d104"/>                     vzClassifier.cpps();            if(TotalFitness>=r)                  break;    }    return i;}int             vzClassifier::BuildActionSet(){    int             retSelection;    int             i;    for(i=0;i<mActionSize;i++)            mOldActionSet[i]=mActionSet[i];    mOldActionSize=mActionSize;    retSelection=SelectStrongAction(mMatchSet,mMatchSize);    mActionSize=0;    for(i=0;i<mMatchSize;i++)    {            if(mClassifierSet[mMatchSet[i]].GetAction()==                           mClassifierSet[mMatchSet[retSelection]].GetAction())            {                  mActionSet[mActionSize]=mMatchSet[i];                  mActionSize++;            }    }    return mClassifierSet[mMatchSet[retSelection]].GetAction();}//*************************************************************************&lt;!-- SIPO &lt;DP n="105"> -->&lt;dp n="d105"/>                       vzClassifier.h/******************************************************************************Van ZandtvzClassifier.h******************************************************************************/#if !defined(_vzClassifier_h)#define_ClassSystem_h#include″vzPopulation.h″#include″vzLib\vzTools.h″#include″vzLib\vzVector.h″class    vzClassifier{private:    int                                mClassifierSetSize;    double                     mGeneralTaxRate;    double                     mBadMatchTaxRate;    double                     mHonorariumRate;    int                                mMutationPer1000;    int                                mTournamentSize;    int                                mTournamentCount;    int                                mRegeneratePer1000;    int                                mMatchSize;    int                                mActionSize;    int                                mOldActionSize;    vzPopulation       *mpClassifierSetPtr;    vzVector<int>      mMatchSet;    vzVector<int>      mActionSet;    vzVector<int>      mOldActionSet;public:    vzClassifier(      int             kClassifierSetSize,                                       double  kGeneralTaxRate,                                       double  kBamatchTaxRate,                                       double  kHonorariumRate,                                       int             kMutationPer1000,                                       int             kTournamentSize,                                       int             kTournament&lt;!-- SIPO &lt;DP n="106"> -->&lt;dp n="d106"/>                         vzClassifier.hCount,Per1000);                              int            kRegenerate    int             BuildCover(vzVector<int>theSensor);    void    BuildMatchSet(vzVector<int>theSensor);    int             GetMove(vzVector<int>theSensor);    int             BuildActionSet();    int             SelectStrongAction(vzVector<int>theSet,int size);    void    ApplyReward(int score);//      void    PrintClassifiers(ofstream out);};#include        ″vzClassifier.cpp″#endif //_vzClassifier_h//**************************************************************************&lt;!-- SIPO &lt;DP n="107"> -->&lt;dp n="d107"/>                        vzComputer.h/* *************************************************************************vzComputer.hVan Zandt**************************************************************************/#if !defined(_vzComputer_h)#define_vzComputer_h#include<allegro.h>#include<fstream.h>// Global Variablesstatic  bool    GraphicsOn=false;static  int             TimerInterval=0;static  bool    Trace=true;static  bool    New=false;static  int     Summation=0;static int      Counter=0;const   int             kHighFlow=80;const   int             kLowFlow=40;const   int     kHighCapacity=100;const   int             kLowCapacity=20;const   int     kStartFlow=120;enum    vzCOLOR {      WHITE,RED,GREEN,YELLOW,BLUE,MAGENTA,CYAN,DARKGRAY,                                   LIGHTGRAY,LIGHTRED,LIGHTGREEN,LIGHTYELLOW,LIGHTBLUE,                                   LIGHTMAGENTA,LIGHTCYAN,BLACK};void    StartGraphics(){    allegro_init();    install_keyboard();    install_mouse();    install_timer();    set_gfx_mode(GFX_AUTODETECT,640,480,0,0);    set_pallete(desktop_pallete);    GraphicsOn=true;}&lt;!-- SIPO &lt;DP n="108"> -->&lt;dp n="d108"/>                            vzComputer.hvoid    StopGraphics(){    allegro_exit();    GraphicsOn=false;}/*void    CapacityChange(){kHighCapacity=kHighCapacity-1;kLowCapacity=kLowCapacity++;}void    Sum(int x){Summation=Summation+x;Counter++;} int     Average(){int Average;Average=Summation/Counter;Counter=0;Summation=0;return Average;}void    FlowChange(){kHighFlow=kHighFlow-1;kLowFlow=kLowFlow++;}*/void    Reset(){    New=true;}void    NoReset(){    New=false;}void    SetTimer(int n){    TimerInterval=n;}&lt;!-- SIPO &lt;DP n="109"> -->&lt;dp n="d109"/>                          vzComputer.hvoid    TraceOff(){Trace=false;}void    TraceOn(){Trace=true;}#include″vzNanoCell.h″#endif//_vzComputer_h//***********************************************************************&lt;!-- SIPO &lt;DP n="110"> -->&lt;dp n="d110"/>                       vzConnector.cpp/*****************************************************************************vzConnector.cppVan Zandt*****************************************************************************/vzConnector::vzConnector(){}vzConnector::~vzConnector(){}void    vzConnector::DoCreate(int wordsize,int x0,int y0,int size,int x,int y,                                              bool alive,vzEventQ *apEventQ){    int             i;    mWordSize=wordsize;    mSize=size;    mX=x0+(3*mSize*x);//+(3*mSize);    mY=y0+(3*mSize*y)+((x%2)*(3*mSize/2));    mAlive=alive;    mRow=y;    mColumn=x;    mpEventQ=apEventQ;    mColor=cOffColor;    mFlow=0;    mLabel=false;    mpSource=NULL;}void    vzConnector::DoDraw(){    if(mAlive)           circlefill(screen,mX,mY,mSize,mColor);}void vzConnector::DoFlood(){    int i;&lt;!-- SIPO &lt;DP n="111"> -->&lt;dp n="d111"/>                         vzConnector.cpp    if((mColor==cLowColor)&amp;&amp;(mAlive))    {             mColor=cHighColor;             if(Trace)                     DoDraw();             for(i=0;i<mNeighborCount;i++)                     mpEventQ->UpdateFuture(mNeighborArray[i]);    }}int vzConnector::GetX(){    return mX;}int vzConnector::GetY(){    return mY;}int vzConnector::GetSize(){    return mSize;}void    vzConnector::DoClear(){    if(mAlive)    {          mColor=cOffColor;          if(Trace)                 DoDraw();          mLabel=false;          mpSource=NULL;          mFlow=0;    }}void vzConnector::GiveFlow(int flow,bool meaningless,vzDevice *p){    mFlow=flow;    mpSource=p;}&lt;!-- SIPO &lt;DP n="112"> -->&lt;dp n="d112"/>                         vzConnector.cppbool vzConnector::GetLabel(){    return mLabel;}int vzConnector::DoAugment(int x){    int       j;    for(j=0;j<mNeighborCount;j++)              if(mNeighborArray[j]==mpSource)    {                     mColor=cLowColor;                     if(Trace)                            DoDraw();                     mpEventQ->UpdateFuture(mNeighborArray[j]);              }    return x;}void vzConnector::CheckFlow(){    int j;    int sum;    sum=0;    for(j=0;j<mNeighborCount;j++)            sum=sum+mNeighborArray[j]->GetFlow(true)+mNeighborArray[j]->GetFlow(false);    sum=sum/2;    if(sum==0)            mColor=cOffColor;    else if(sum<=kLowFlow)            mColor=cLowColor;    else if(sum>=kHighFlow)            mColor=cHighColor;    else            mColor=cMiddleColor;}int vzConnector::DoLabel(bool lefttoright){    int     j,space;    if((mLabel==false)&amp;&amp;(mFlow>0))    {&lt;!-- SIPO &lt;DP n="113"> -->&lt;dp n="d113"/>                      vzConnector.cpp            mColor=cHighColor;            if(Trace)                   DoDraw();            for(j=0;j<mNeighborCount;j++)            {                   if(mNeighborArray[j]->GetLabel()==false)                   {            space=mNeighborArray[j]->GetSpace(lefttoright);                           if(space!=0)                                 {                                        if(space<mFlow)                                               mNeighborArray[j]->GiveFlow(space,lefttoright,this);                                        else                                               mNeighborArray[j]->GiveFlow(mFlow,lefttoright,this);                    mpEventQ->UpdateFuture(mNeighborArray[j]);                                    }                    }            }    }    mLabel=true;    return 0;}void vzConnector::ClearStart(){    mColor=cOffColor;    mFlow=0;    mLabel=false;    mpSource=NULL;}//**************************************************************************&lt;!-- SIPO &lt;DP n="114"> -->&lt;dp n="d114"/>                        vzConnector.h/********************************************************************vzConnector.hVan Zandt********************************************************************/#if !defined(_vzConnector_h)#define_vzConnector_h#include″vzLib\vzVector.h″#include″vzDevice.h″#include″vzEventQ.h″const   int              cOffColor=DARKGRAY;const   int              cLowColor=YELLOW;const   int      cMiddleColor=LIGHTBLUE;const   int              cHighColor=BLUE;class   vzRegister;class vzConnector:public vzDevice{private:    int                     mX;    int                     mY;    int              mSize;    int              mAlive;    int                     mRow;    int                     mColumn;    int              mColor;    int                     mWordSize;    vzEventQ         *mpEventQ;    int                     mFlow;    bool             mLabel;    vzDevice         *mpSource;public:    vzConnector();    ~vzConnector();void         DoCreate(int wordsize,int x0,int y0,int size,int x,int y,ntQ);                                   bool alive,vzEventQ *apEve    void     DoDraw();&lt;!-- SIPO &lt;DP n="115"> -->&lt;dp n="d115"/>                        vzConnector.hbool        IsAlive(){return mAlive;};    int              GetRow(){return mRow;};    int              GetColumn(){return mColumn;};void        DoFlood();    void    DoClear();int         GetX();int         GetY();int         GetSize();    void    GiveFlow(int flow,bool meaningless,vzDevice *p);    bool    GetLabel();    int             DoAugment(int x);    bool    IsADrain(){return false;};    int             GetSpace(bool lefttoright){return 0;};    int             GetFlow(bool lefttoright){return 0;};    void    CheckFlow();int         DoLabel(bool lefttoright);    void    ClearStart();};#include″vzConnector.cpp″#endif//_vzConnector_h//**************************************************************************&lt;!-- SIPO &lt;DP n="116"> -->&lt;dp n="d116"/>                        vzDevice.cpp/***************************************************************************vzDevice.ccpVan Zandt***************************************************************************/vzDevice::vzDevice():mStatus(0),mNeighborCount(0){    int i;    mNeighborArray.resize(2);    mNeighborCurrent.resize(2);    for(i=0;i<2;i++)    {            mNeighborArray[i]=NULL;            mNeighborCurrent[i]=0;    }}vzDevice::~vzDevice(){}void vzDevice::AddNeighbor(vzDevice *N){    int               i;    mNeighborArray[mNeighborCount]=N;    mNeighborCount++;    if(mNeighborCount>=mNeighborArray.length())    {          mNeighborArray.resize(mNeighborCount+4);          mNeighborCurrent.resize(mNeighborCount+4);          for(i=0;i<4;i++)                  mNeighborCurrent[mNeighborCount+i]=0;    }}vzDevice *vzDevice::GetNeighbor(int n){    return mNeighborArray[n];&lt;!-- SIPO &lt;DP n="117"> -->&lt;dp n="d117"/>                          vzDevice.cpp}int    vzDevice::GetCurrent(vzDevice *dPtr){       int            i;   int            retCode=0;   for(i=0;i<mNeighborCount;i++)          if(dPtr==mNeighborArray[i])                  retCode=mNeighborCurrent[i];   return retCode;}&lt;!-- SIPO &lt;DP n="118"> -->&lt;dp n="d118"/>                         vzDevice.h/******************************************************************************vzDevice.hVan Zandt******************************************************************************/#if !defined(_vzDevice_h)#define_vzDevice_h#include″vzLib\vzVector.h″enum    pType{in,out};enum    vzCommand{Flood};class vzDevice{protected:    int                    mStatus;int                        mNeighborCount;vzVector<vzDevice*>mNeighborArray;    vzVector<int>          mNeighborCurrent;public:    vzDevice();~vzDevice();void               AddNeighbor(vzDevice *N);vzDevice    *GetNeighbor(int n);    int                    GetCurrent(vzDevice *dPtr);    virtual void   DoDraw(){};virtual void       DoFlood(){};    virtual int    DoAugment(int x){};    virtual bool   GetLabel(){};    virtual void   DoClear(){};    virtual void   GiveFlow(int f,bool m,vzDevice *p){};    virtual bool   IsADrain(){};    virtual int    GetFlow(bool m){};    virtual int            DoLabel(bool m){};    virtual int            GetSpace(bool m){};};#include″vzDevice.cpp″#endif//_vzDevice_h&lt;!-- SIPO &lt;DP n="119"> -->&lt;dp n="d119"/>                        vzEventQ.cpp/****************************************************************************vzEventQ.cppVan Zandt****************************************************************************/vzEventQ::vzEventQ(){    mFutureCount=0;    mFutureList.resize(50);}vzEventQ::~vzEventQ(){}void vzEventQ::UpdateFuture(vzDevice *N){    if(mFutureList.length()-1<mFutureCount)           mFutureList.resize(mFutureList.length()+50);    mFutureList[mFutureCount]=N;    mFutureCount++;}void vzEventQ::DoFire(int command){    int mCurrentCount;    int  firecounter;    vzVector<vzDevice*>mCurrentList;    mCurrentList=mFutureList;    mCurrentCount=mFutureCount;    mFutureCount=0;    while(mCurrentCount>0)    {             for(firecounter=0;firecounter<mCurrentCount;firecounter++)           {                  switch(command)                  {                  case Flood:             mCurrentList[firecounter]->DoFlood();                                                   break;&lt;!-- SIPO &lt;DP n="120"> -->&lt;dp n="d120"/>                           vzEventQ.cpp                      }    }              doPause(TimerInterval);              mCurrentCount=mFutureCount;              mCurrentList=mFutureList;//                rectfill(screen,0,0,10,10,mColor++);//                if(mColor>16)//                        mColor=0;              mFutureCount=0;    }}void vzEventQ::DoLabel(bool lefttoright){    int       mCurrentCount;    int       firecounter;    int       temp;    vzVector<vzDevice*>mCurrentList;    mCurrentList=mFutureList;    mCurrentCount=mFutureCount;    mFutureCount=0;    temp=0;    while(mCurrentCount>0)    {          for(firecounter=0;firecounter<mCurrentCount;firecounter++)          {                 temp=mCurrentList[firecounter]->DoLabel(lefttoright);                 if(temp==1)                 {                       mCurrentCount=0;                       mFutureCount=0;                       break;          }          }          doPause(TimerInterval);          mCurrentCount=mFutureCount;          mCurrentList=mFutureList;  /*rectfill(screen,0,0,10,10,mColor++);&lt;!-- SIPO &lt;DP n="121"> -->&lt;dp n="d121"/>                           vzEventQ.cpp    if(mColor>16)                      mColor=0;    */              mFutureCount=0;    }}void vzEventQ::DoAugment(int minflow){    int       mCurrentCount;    int       firecounter;    int       temp;    vzVector<vzDevice*>mCurrentList;    mCurrentList=mFutureList;    mCurrentCount=mFutureCount;    mFutureCount=0;    temp=0;    while(mCurrentCount>0)    {          for(firecounter=0;firecounter<mCurrentCount;firecounter++)          {                 temp=mCurrentList[firecounter]->DoAugment(minflow);                 if(temp==0)                 {                       mCurrentCount=0;                       mFutureCount=0;                       break;          }          }          doPause(TimerInterval);          mCurrentCount=mFutureCount;          mCurrentList=mFutureList;/*  rectfill(screen,0,0,10,10,mColor++);  if(mColor>16)              mColor=0;*/          mFutureCount=0;  }}&lt;!-- SIPO &lt;DP n="122"> -->&lt;dp n="d122"/>                         vzEventQ.h/****************************************************************************vzEventQ.hVan Zandt****************************************************************************/#if !defined(_vzEventQ_h)#define_vzEventQ_h #include″vzLib\vzVector.h″#include″vzDevice.h″#include″vzLib\vzTools.h″class vzEventQ{private:    int                           mFutureCount;vzVector<vzDevice*>mFutureList;    int                                   mColor;public:vzEventQ();~vzEventQ();void         UpdateFuture(vzDevice *D);void         DoFire(int command);    void     DoLabel(bool lefttoright);    void     DoAugment(int minflow);};#include″vzEventQ.cpp″#endif//_vzEventQ_h&lt;!-- SIPO &lt;DP n="123"> -->&lt;dp n="d123"/>                      vzIndividual.cpp/***************************************************************************Van ZandtvzIndividual.cpp***************************************************************************/vzIndividual::vzIndividual(int size,int alpha_count):mSize(size),mAlphabetCount(alpha_count){    mChromosome.resize(mSize);}vzIndividual::~vzIndividual(){ }void    vzIndividual::DoResize(int size){    mChromosome.resize(size);}/*void vzIndividual::PrintToFile(ofstream out){}*//*void    vzIndividual::DoPrint(int x,int y){}*/void    vzIndividual::DoMutate(){    int               i;    int               r;    int               c;    for(i=0;i<100;i++)    {            r=getRandom(mChromosome.length());            c=getRandom(mAlphabetCount);&lt;!-- SIPO &lt;DP n="124"> -->&lt;dp n="d124"/>                     vzIndividual.cpp            while(mChromosome[r]==c)                  c=getRandom(mAlphabetCount);            mChromosome[r]=c;    }}void    vzIndividual::DoCrossover(vzIndividual *cPtr){    int               i;    int               r;    r=getRandom(mChromosome.length());    if(getRandom(2))          for(i=0;i<r;i++)                  mChromosome[i]=cPtr->mChromosome[i];    else           for(i=r;i<mChromosome.length();i++)                  mChromosome[i]=cPtr->mChromosome[i];}void    vzIndividual::BuildRandom(){    int               i;    for(i=0;i<Chromosome.length();i++)            mChromosome[i]=getRandom(mAlphabetCount);}vzIndividual    vzIndividual::operator=(const vzIndividual rhs){    int                i;    for(i=0;i<mChromosome.length();i++)            mChromosome[i]=rhs.mChromosome[i];    mFitness=rhs.mFitness;    return *this;}//************************************************************************&lt;!-- SIPO &lt;DP n="125"> -->&lt;dp n="d125"/>                        vzIndividual.h/******************************************************************************Van ZandtvzIndividual.h******************************************************************************/#if !defined(_vzIndividual_h)#define_vzndividual_h#include″vzLib\vzTools.h″#include″vzLib\vzVector.h″class    vzIndividual{private:    const    int            mSize;    const    int            mAlphabetCount;    vzVector<int>   mChromosome;    double                  mFitness;public:    vzIndividual(int size,int alpha_count);    ~vzIndividual();    void     DoResize(int size);    void     BuildRandom();    double   GetFitness(){return mFitness;};    void     SetFitness(double fitness){mFitness=fitness;};    int              GetValue(int i){return mChromosome[i];};vzVector<int>        *GetChromosomePtr(){return &amp;mChromosome;};    void     DoMutate();    void     DoCrossover(vzIndividual *cPtr);    vzIndividual     operator=(const vzIndividual rhs);//      void     DoPrint(int x,int y);//      void     PrintToFile(ofstream out);};#include         ″vzIndividual.cpp″#endif//_vzIndividual_h//**************************************************************************&lt;!-- SIPO &lt;DP n="126"> -->&lt;dp n="d126"/>                       vzNanocell.cpp/*****************************************************************************vzNanocell.cpp  Van Zandt*****************************************************************************/vzNanocell::vzNanocell():mActive(false),mWordsize(0),mRowCount(0),mColumnCount(0){     int i;    mSwitchMax=50;    mSwitchCount=0;    mpSwitch.resize(mSwitchMax);    for(i=0;i<mSwitchMax;i++)            mpSwitch[i]=new vzSwitch;}vzNanocell::~vzNanocell(){    int i;    for(i=0;i<mSwitchMax;i++)            if(mpSwitch[i]!=NULL)                   delete mpSwitch[i];    if(mpInRegister!=NULL)    delete mpInRegister;    if(mpOutRegister!=NULL)    delete mpOutRegister;}void vzNanocell::DoCreate(int WordSize,int devicesize,int rowcount,                        int columncount,int density,int switchdensity){    int        r,c;    int        border;    int        temp;    bool       alive;mWordSize=WordSize;&lt;!-- SIPO &lt;DP n="127"> -->&lt;dp n="d127"/>                      vzNanocell.cppmDeviceSize=devicesize;mRowCount=rowcount;mColumnCount=columncount;    mConnector.resize(mRowCount,mColumnCount);mDensity=density;mSwitchDensity=switchdensity;mpInRegister=new vzRegister(mWordSize,mDeviceSize);mpOutRegister=new vzRegister(mWordSize,mDeviceSize);border=1+mDeviceSize;   mX1=(SCREEN_W/2)-((mColumnCount+1)*3*mDeviceSize)/2-border;  mY1=(SCREEN_H/2)-(mRowCount*3*mDeviceSize)/2-border;  mX2=(SCREEN_W/2)+((mColumnCount+3)*3*mDeviceSize)/2+border;  mY2=(SCREEN_H/2)+(mRowCount*3*mDeviceSize)/2+border;   mActive=true;  mpInRegister->DoCreate(mX1-(8*mDeviceSize),mY1,mY2,true,&amp;mEventQ);  mpOutRegister->DoCreate(mX2-(4*mDeviceSize),mY1,mY2,false,&amp;mEventQ);      for(r=0;r<mRowCount;r++)      for(c=0;c<mColumnCount;c++)      {              if(getRandom(100)<mDensity)         {                            alive=true;         }              else         {                            alive=false;                      }              mConnector[r][c].DoCreate(mWordSize,mX1+6*mDeviceSize,mY1+2*mDeviceSize,    mDeviceSize,c,r,alive,&amp;mEventQ);            }    for(r=0;r<mRowCount;r++)            for(c=0;c<mColumnCount;c++)&lt;!-- SIPO &lt;DP n="128"> -->&lt;dp n="d128"/>                            vzNanocell.cpp                  {                          if(mConnector[r][c].IsAlive())                          {                                 if((c==0)&amp;&amp;(r<mRowCount-1))                                 {                                           if(mConnector[r][c+1].IsAlive())                                                 SetSwitch(r,c,r,c+1);                                          if(mConnector[r+1][c].IsAlive())                                                 SetSwitch(r,c,r+1,c);                                 }                                 if((c>0)&amp;&amp;(c<mColumnCount-1)&amp;&amp;(c%2>0)&amp;&amp;(r<mRowCount-1))                                 {                                          if(mConnector[r+1][c-1].IsAlive())                                                 SetSwitch(r,c,r+1,c-1);                                          if(mConnector[r+1][c].IsAlive())                                                  SetSwitch(r,c,r+1,c);                                          if(mConnector[r+1][c+1].IsAlive())                                                    SetSwitch(r,c,r+1,c+1);                                 }                                 if((c>0)&amp;&amp;(c<mColumnCount-1)&amp;&amp;(c%2==0)&amp;&amp;(r<mRowCount-1))                                 {                                          if(mConnector[r][c-1].IsAlive())                                                  SetSwitch(r,c,r,c-1);&lt;!-- SIPO &lt;DP n="129"> -->&lt;dp n="d129"/>                             vzNanocell.cpp                                          if(mConnector[r+1][c].IsAlive())                                                 SetSwitch(r,c,r+1,c);                                          if(mConnector[r][c+1].IsAlive())                                                  SetSwitch(r,c,r,c+1);                                 }                                 if((r==mRowCount-1)&amp;&amp;(c<mColumnCount-1)&amp;&amp;(c%2==0))                                 {                                          if(mConnector[r][c+1].IsAlive())                                                 SetSwitch(r,c,r,c+1);                                 }                                 if((r==mRowCount-1)&amp;&amp;(c<mColumnCount-1)&amp;&amp;(c%2>0))                                 {                                          if(mConnector[r][c+1].IsAlive())                                                 SetSwitch(r,c,r,c+1);                                 }                                 if((r<mRowCount-1)&amp;&amp;(c==mColumnCount-1)&amp;&amp;(c%2==0))                                 {                                          if(mConnector[r][c-1].IsAlive())                                                  SetSwitch(r,c,r,c-1);                                          if(mConnector[r+1][c].IsAlive())                                                 SetSwitch(r,c,r+1,c);                                 }                                 if((r<mRowCount-1)&amp;&amp;(c==mColumnCount-1)&amp;&amp;(c%2>0))                                   121&lt;!-- SIPO &lt;DP n="130"> -->&lt;dp n="d130"/>                            vzNanocell.cpp                                 {                                          if(mConnector[r+1][c-1].IsAlive())                                                 SetSwitch(r,c,r+1,c-1);                                          if(mConnector[r+1][c].IsAlive())                                                 SetSwitch(r,c,r+1,c);                                 }                     }             }   for(r=0;r<mRowCount;r++)   {       if(mConnector[r][0].IsAlive())      {                            temp=mpInRegister->ConnectToPin(&amp;mConnector[r][0],mSwitchDensity*2);                            if(temp>=0)                                   SetPinSwitch(mpInRegister->GetPinPtr(temp),&amp;mConnector[r][0]);                     }                     if(mConnector[r][mColumnCount-1].IsAlive())                     {                            temp=mpOutRegister->ConnectToPin(&amp;mConnector[r][mColumnCount-1],mSwitchDensity*2);            if(temp>=0)                                   SetPinSwitch(mpOutRegister->GetPinPtr(temp),&amp;mConnector[r][mColumnCount-1]);                     }            }    DoDraw();}void vzNanocell::SetSwitch(int r1,int c1,int r2,int c2){    int              i;    int              state;    if(mSwitchCount>=mSwitchMax)    {&lt;!-- SIPO &lt;DP n="131"> -->&lt;dp n="d131"/>                       vzNanocell.cpp            mpSwitch.resize(mSwitchMax+50);            for(i=0;i<50;i++)            mpSwitch[mSwitchCount+i]=new vzSwitch;            mSwitchMax+=50;    }    if(getRandom(100)<mSwitchDensity)    {            state=1+getRandom(2);            mpSwitch[mSwitchCount]->DoCreate(mConnector[r1][c1].GetX(),                                                             mConnector[r1][c1].GetY(),                                                             mConnector[r2][c2].GetX(),                                                             mConnector[r2][c2].GetY(),                                                             state,&amp;mEventQ);            mConnector[r1][c1].AddNeighbor((vzDevice*)mpSwitch[mSwitchCount]);            mpSwitch[mSwitchCount]->AddNeighbor(&amp;mConnector[r1][c1]);            mpSwitch[mSwitchCount]->AddNeighbor(&amp;mConnector[r2][c2]);            mConnector[r2][c2].AddNeighbor((vzDevice*)mpSwitch[mSwitchCount]);            mpSwitch[mSwitchCount]->SetNeighbor1Type(1);            mpSwitch[mSwitchCount]->SetNeighbor1Parm1(r1);            mpSwitch[mSwitchCount]->SetNeighbor1Parm2(c1);            mpSwitch[mSwitchCount]->SetNeighbor2Type(1);            mpSwitch[mSwitchCount]->SetNeighbor2Parm1(r2);            mpSwitch[mSwitchCount]->SetNeighbor2Parm2(c2);            mSwitchCount++;    }}void vzNanocell::SetSwitch2(int r1,int c1,int r2,int c2,int state){    mpSwitch[mSwitchCount]=new vzSwitch;&lt;!-- SIPO &lt;DP n="132"> -->&lt;dp n="d132"/>                        vzNanocell.cpp    mpSwitch[mSwitchCount]->DoCreate(mConnector[r1][c1].GetX(),                                                             mConnector[r1][c1].GetY(),                                                             mConnector[r2][c2].GetX(),                                                             mConnector[r2][c2].GetY(),                                                             state,&amp;mEventQ);    mConnector[r1][c1].AddNeighbor((vzDevice *)mpSwitch[mSwitchCount]);    mpSwitch[mSwitchCount]->AddNeighbor(&amp;mConnector[r1][c1]);    mpSwitch[mSwitchCount]->AddNeighbor(&amp;mConnector[r2][c2]);    mConnector[r2][c2].AddNeighbor((vzDevice *)mpSwitch[mSwitchCount]);    mpSwitch[mSwitchCount]->SetNeighbor1Type(1);    mpSwitch[mSwitchCount]->SetNeighbor1Parm1(r1);    mpSwitch[mSwitchCount]->SetNeighbor1Parm2(c1);    mpSwitch[mSwitchCount]->SetNeighbor2Type(1);    mpSwitch[mSwitchCount]->SetNeighbor2Parm1(r2);    mpSwitch[mSwitchCount]->SetNeighbor2Parm2(c2);    mSwitchCourt++;}void vzNanocell::SetPinSwitch2(vzPin *aPin,vzConnector *aConnector,int state){    mpSwitch[mSwitchCount]=new vzSwitch;    mpSwitch[mSwitchCount]->DoCreate(aConnector->GetX(),                                                               aConnector->GetY(),                                                               aPin->GetOutX2(),                                                               aConnector->GetY(),                                                               state,&amp;mEventQ);aConnector->AddNeighbor((vzDevice *)mpSwitch[mSwitchCount]);    mpSwitch[mSwitchCount]->AddNeighbor(aConnector);    mpSwitch[mSwitchCount]->AddNeighbor(aPin);    aPin->AddNeighbor(mpSwitch[mSwitchCount]);mpSwitch[mSwitchCount]->SetState(state);&lt;!-- SIPO &lt;DP n="133"> -->&lt;dp n="d133"/>                        vzNanocell.cpp    mpSwitch[mSwitchCount]->SetNeighbor1Type(1);    mpSwitch[mSwitchCount]->SetNeighbor1Parm1(aConnector->GetRow());    mpSwitch[mSwitchCount]->SetNeighbor1Parm2(aConnector->GetColumn());    mpSwitch[mSwitchCount]->SetNeighbor2Type(0);    mpSwitch[mSwitchCount]->SetNeighbor2Parm1(aPin->GetType());    mpSwitcb[mSwitchCount]->SetNeighbor2Parm2(aPin->GetID());    mSwitchCount++;}void vzNanocell::SetPinSwitch(vzPin *aPin,vzConnector *aConnector){    int               i;    int               state;    state=1+getRandom(2);    if(mSwitchCount>=mSwitchMax)    {         mpSwitch.resize(mSwitchMax+50);         for(i=0;i<50;i++)         mpSwitch[mSwitchCount+i]=new vzSwitch;         mSwitchMax+=50;    }     mpSwitch[mSwitchCount]->DoCreate(aConnector->GetX(),                                                            aConnector->GetY(),                                                            aPin->GetOutX2(),                                                            aConnector->GetY(),                                                            state,&amp;mEventQ);aConnector->AddNeighbor((vzDevice *)mpSwitch[mSwitchCount]);    mpSwitch[mSwitchCount]->AddNeighbor(aConnector);    mpSwitch[mSwitchCount]->AddNeighbor(aPin);    aPin->AddNeighbor(mpSwitch[mSwitchCount]);    mpSwitch[mSwitchCount]->SetNeighbor1Type(1);    mpSwitch[mSwitchCount]->SetNeighbor1Parm1(aConnector->GetRo&lt;!-- SIPO &lt;DP n="134"> -->&lt;dp n="d134"/>                        vzNanocell.cppw());    mpSwitch[mSwitchCount]->SetNeighbor1Parm2(aConnector->GetColumn());    mpSwitch[mSwitchCount]->SetNeighbor2Type(0);    mpSwitch[mSwitchCount]->SetNeighbor2Parm1(aPin->GetType());    mpSwitch[mSwitchCount]->SetNeighbor2Parm2(aPin->GetID());    mSwitchCount++;}void vzNanocell::DoClear(){    int             r,c;    int             i;mpInRegister->DoClear();mpOutRegister->DoClear();    for(r=0;r<mRowCount;r++)    for(c=0;c<mColumnCount;c++)    {            if(mConnector[r][c].IsAlive())                  mConnector[r][c].DoClear();            }    for(i=0;i<mSwitchCount;i++)            mpSwitch[i]->DoClear();}void vzNanocell::DoDraw(){    int r,c;    if(mActive)    {    rectfill(screen,mX1,mY1,mX2,mY2,LIGHTGRAY);    mpInRegister->DoDraw();    mpOutRegister->DoDraw();    for(r=0;r<mRowCount;r++)            for(c=0;c<mColumnCount;c++)                    mConnector[r][c].DoDraw();            for(r=0;r<mSwitchCount;r++)                    mpSwitch[r]->DoDraw();&lt;!-- SIPO &lt;DP n="135"> -->&lt;dp n="d135"/>                        vzNanocell.cpp    }}void vzNanocell::DoFlood(){    mpInRegister->DoFlood();    mpOutRegister->DoFlood();    mEventQ.DoFire(Flood);}void vzNanocell::DoFlow(){    int      minflow=0;    int             r,c;    bool abletolabelone=true;    bool abletolabeltwo=true;    bool abletolabelthree=true;    bool abletolabelfour=true;    bool breakerone=true;    bool breakertwo=true;    while((breakerone)||(breakertwo))    {           mpInRegister->DoLabel(true);           mEventQ.DoLabel(true);           abletolabelone=mpOutRegister->CheckLabel();           abletolabeltwo=mpInRegister->CheckLabel();           if((abletolabelone)||(abletolabeltwo))           {                  if(abletolabelone)                          minflow=mpOutRegister->DoAugment();                  else                          minflow=mpInRegister->DoAugmeht();                  mEventQ.DoAugment(minflow);                  mpInRegister->DoClear();                  mpOutRegister->DoClear();      for(r=0;r<mRowCount;r++)                  for(c=0;c<mColumnCount;c++)                          mConnector[r][c].DoClear();                  for(r=0;r<mSwitchCount;r++)                          mpSwitch[r]->DoClear();          }          else&lt;!-- SIPO &lt;DP n="136"> -->&lt;dp n="d136"/>                        vzNanocell.cpp                     breakerone=false;      mpOutRegister->DoLabel(false);             mEventQ.DoLabel(false);             abletolabelthree=mpInRegister->CheckLabel();      abletolabelfour=mpOutRegister->CheckLabel();             if((abletolabelthree)||(abletolabelfour))             {                      if(abletolabelthree)                              minflow=mpInRegister->DoAugment();                      if(abletolabelfour)                              minflow=mpOutRegister->DoAugment();                      mEventQ.DoAugment(minflow);                      mpInRegister->DoClear();                      mpOutRegister->DoClear();          for(r=0;r<mRowCount;r++)                      for(c=0;c<mColumnCount;c++)                              mConnector[r][c].DoClear();                      for(r=0;r<mSwitchCount;r++)                              mpSwitch[r]->DoClear();              }              else                      breakertwo=false;    }}int vzNanocell::GetPinNum(){    return mWordSize;}int vzNanocell::OnPin(int x1,int y1){    int FirstReply;    int SecondReply ;    FirstReply=mpInRegister->OnPin(x1,y1);    if(FirstReply>=0)           return FirstReply;    else           SecondReply=mpOutRegister->OnPin(x1,y1);    if(SecondReply>=0)           return SecondReply+mWordSize;    else           return-1;}&lt;!-- SIPO &lt;DP n="137"> -->&lt;dp n="d137"/>                          vzNanocell.cppvoid vzNanocell::SetPin(bool InRegister,int WhichPin,int flow){if(InRegister)     mpInRegister->SetPin(WhichPin,flow);else     mpOutRegister->SetPin(WhichPin,flow);}int vzNanocell::PinHeight(int WhichPin){    return(mpInRegister->PinHeight(WhichPin));}int vzNanocell::GetFlow(bool WhichRegister,int WhichPin){    int flow;    if(WhichRegister)           flow=mpInRegister->GetPinFlow(WhichPin);    else           flow=mpOutRegister->GetPinFlow(WichPin);    return flow;}void vzNanocell::DeactivatePin(bool WhichRegister,int WhichPin){    if(WhichRegister)           mpInRegister->DeactivatePin(WhichPin);    else           mpOutRegister->DeactivatePin(WhichPin);}void vzNanocell::Drawpaths(){    int r,c;    for(r=0;r<mRowCount;r++)            for(c=0;c<mColumnCount;c++)            {            mConnector[r][c].CheckFlow();                    mConnector[r][c].DoDraw();            }    for(r=0;r<mSwitchCount;r++)            mpSwitch[r]->DoDraw();}int vzNanocell::GetInitialFlow(bool WhichRegister,int WhichPin){    int flow;&lt;!-- SIPO &lt;DP n="138"> -->&lt;dp n="d138"/>                         vzNanocell.cpp    if(WhichRegister)            flow=mpInRegister->GetInitialFlow(WhichPin);    else            flow=mpOutRegister->GetInitialFlow(WhichPin);    return flow;}void vzNanocell::ClearCell(){    int r,c;    mpInRegister->ClearStart();    mpOutRegister->ClearStart();for(r=0;r<mRowCount;r++)    for(c=0;c<mColumnCount;c++)            mConnector[r][c].ClearStart();            for(r=0;r<mSwitchCount;r++)                    mpSwitch[r]->ClearStart();    if(Trace)          DoDraw();}void vzNanocell::SetInReg(vzString aFireCode){    mpInRegister->Write(aFireCode);}void vzNanocell::SetOutReg(vzString aFireCode){      mpOutRegister->Write(aFireCode);}void vzNanocell::LoadSwitch(vzVector<int>*vPtr){    int              i;    if(vPtr->length()==mSwitchCount)    {    for(i=0;i<mSwitchCount;i++)                    mpSwitch[i]->SetState(1+(*vPtr)[i]);    }}vzPin   *vzNanocell::GetPinPtr(pType type,int i){    if(type==in)&lt;!-- SIPO &lt;DP n="139"> -->&lt;dp n="d139"/>                       vzNanocell.cpp            return mpInRegister->GetPinPtr(i);   else            return mpOutRegister->GetPinPtr(i);}int    vzNanocell::GetConnectorData(int x){return mConnectorData[x];}int    vzNanocell::GetColumnCount(){return mColummCount;}int    vzNanocell::GetWordSize(){    int r,c,temp;    temp=mSwitchData.length();    c=0;    for(r=0;r<temp;r++)    {              if((mSwitchData[r]>0)&amp;&amp;(c<mSwitchCount))            {                   mSwitchData[r]=mpSwitch[c]->GetState();                   c++;            }    }    return mWordSize;}int    vzNanocell::GetRowCount(){return mRowCount;}int    vzNanocell::GetSwitchDataSize(){return mSwitchData.length();}int    vzNanocell::GetSwitchData(int y){    return mSwitchData[y];}&lt;!-- SIPO &lt;DP n="140"> -->&lt;dp n="d140"/>                          vzNanocell.cppvoid    vzNanocell::DoLoad(vzString filename){    int                        i;    int                r,c;    int                border;    int                temp;    bool               alive;    int                        tmpState;    int                        tmpNeighbor1Type,tmpNeighbor1Parm1,tmpNeighbor1Parm2;    int                        tmpNeighbor2Type,tmpNeighbor2Parm1,tmpNeighbor2Parm2;    ifstream   infile;    infile.open(filename.c_str());    infile>>mWordSize;    infile>>mDeviceSize;infile>>mRowCount;infile>>mColumnCount;    mConnector.resize(mRowCount,mColumnCount);    infile>>mDensity;    infile>>mSwitchDensity;    infile>>mSwitchCount;    mSwitchMax=mSwitchCount;    mpSwitch.resize(mSwitchMax);    mSwitchCount=0;mpInRegister=new vzRegister(mWordSize,mDeviceSize);mpOutRegister=new vzRegister(mWordSize,mDeviceSize);border=1+mDeviceSize;  mX1=(SCREEN_W/2)-((mColumnCount+1)*3*mDeviceSize)/2-border;  mY1=(SCREEN_H/2)-(mRowCount*3*mDeviceSize)/2-border;  mX2=(SCREEN_W/2)+((mColumnCount+3)*3*mDeviceSize)/2+border;  mY2=(SCREEN_H/2)+(mRowCount*3*mDeviceSize)/2+border;  mActive=true;  mpInRegister->DoCreate(mX1-(8*mDeviceSize),mY1,mY2,true,&amp;mEven&lt;!-- SIPO &lt;DP n="141"> -->&lt;dp n="d141"/>                          vzNanocell.cpptQ);  mpOutRegister->DoCreate(mX2-(4*mDeviceSize),mY1,mY2,false,&amp;mEventQ);    for(r=0;r<mRowCount;r++)            for(c=0;c<mColumnCount;c++)            {                    infile>>alive;            mConnector[r][c].DoCreate(mWordSize,mX1+6*mDeviceSize,mY1+2*mDeviceSize,    mDeviceSize,c,r,alive,&amp;mEventQ);    }    for(i=0;i<mSwitchMax;i++)    {            infile>>tmpState;            infile>>tmpNeighbor1Type;            infile>>tmpNeighbor1Parm1;            infile>>tmpNeighbor1Parm2;            infile>>tmpNeighbor2Type;            infile>>tmpNeighbor2Parm1;            infile>>tmpNeighbor2Parm2;            if(tmpNeighbor2Type==1)                  SetSwitch2(tmpNeighbor1Parm1,tmpNeighbor1Parm2,                                    tmpNeighbor2Parm1,tmpNeighbor2Parm2,tmpState);            else            {                     if(tmpNeighbor2Parm1==0)                           SetPinSwitch2(mpInRegister->GetPinPtr(tmpNeighbor2Parm2),                                                     &amp;mConnector[tmpNeighbor1Parm1][tmpNeighbor1Parm2],tmpState);            else                            SetPinSwitch2(mpOutRegister->GetPinPtr(tmpNeighbor2Parm2),                                                     &amp;mConnector[tmpNeighbor1Parm1][tmpNeighbor1Parm2],tmpState);&lt;!-- SIPO &lt;DP n="142"> -->&lt;dp n="d142"/>                           vzNanocell.cpp            }    }    infile.close();}void    vzNanocell::DoStore(vzString filename){    int               i;    int               r,c; ofstream    outfile;    outfile.open(filename.c_str());    outfile<<mWordSize<<endl;    outfile<<mDeviceSize<<endl;outfile<<mRowCount<<endl;outfile<<mColumnCount<<endl;    outfile<<mDensity<<endl;    outfile<<mSwitchDensity<<endl;    outfile<<mSwitchCount<<endl;    for(r=0;r<mRowCount;r++)            for(c=0;c<mColumnCount;c++)                    outfile<<mConnector[r][c].IsAlive()<<endl;    for(i=0;i<mSwitchCount;i++)    {             outfile<<mpSwitch[i]->GetState()<<endl;            outfile<<mpSwitch[i]->GetNeighborlType()<<endl;            outfile<<mpSwitch[i]->GetNeighbor1Parm1()<<endl;            outfile<<mpSwitch[i]->GetNeighbor1Parm2()<<endl;            outfile<<mpSwitch[i]->GetNeighbor2Type()<<endl;            outfile<<mpSwitch[i]->GetNeighbor2Parm1()<<endl;            outfile<<mpSwitch[i]->GetNeighbor2Parm2()<<endl;    }    outfile.close();}&lt;!-- SIPO &lt;DP n="143"> -->&lt;dp n="d143"/>                        vzNanocell.cpp//**************************************************************************&lt;!-- SIPO &lt;DP n="144"> -->&lt;dp n="d144"/>                        vzNanocell.h/*****************************************************************************vzNanocell.hVan Zandt*****************************************************************************/#if !defined(_vzNanocell_h)#define_vzNanocell_h#include″vzEventQ.h″#include″vzRegister.h″#include″vzConnector.h″#include″vzLib\vzTools.h″#include″vzLib\vzString.h#include″vzSwitch.h″#include″vzLib\vzMatrix.h″#include″vzLib\vzVector.h″class vzNanocell{private:    bool        mActive;int         mWordSize;int         mRowCount;int         mColumnCount;int         mDeviceSize;int         mDensity;int         mSwitchDensity;    int                    mSwitchMax;int         mX1;int         mY1;int         mX2;int         mY2;int         mSwitchCount;vzRegister  *mpInRegister;vzRegister  *mpOutRegister;    int                    sizecount;vzMatrix<vzConnector> mConnector;vzVector<vzSwitch*>   mpSwitch;vzEventQ     mEventQ;vzVector<int>              mConnectorData;    vzVector<int>          mSwitchData;public:    vzNanocell();    ~vzNanocell();&lt;!-- SIPO &lt;DP n="145"> -->&lt;dp n="d145"/>                        vzNanocell.hvoid        DoCreate(int WordSize,int devicesize,int rowcount              int columncount,int density,int switchdensity);    void    SetSwitch(int r1,int c1,int r2,int c2);     void    SetSwitch2(int r1,int c1,int r2,int c2,int state);    void    SetPinSwitch2(vzPin *aPin,vzConnector *aConnector,int state);    void    SetPinSwitch(vzPin *aPin,vzConnector *aConnector);    int              GetSwitchCount(){return mSwitchCount;};    void    DoClear();void        DoDraw();void        DoFlood();    void    DoFlow();int         GetPinNum();    int     OnPin(int x1,int y1);void        SetPin(bool InRegister,int WhichPin,int flow);    int     PinHeight(int WhichPin);    int     GetFlow(bool WhichRegister,int WhichPin);    void    DeactivatePin(bool WhichRegister,int WhichPin);void        Drawpaths();    int             GetInitialFlow(bool WhichRegister,int WhichPin);    void    ClearCell();    void    SetInReg(vzString aFireCode);    void    SetOutReg(vzString aFireCode);    void    LoadSwitch(vzVector<int>*vPtr);    vzPin   *GetPinPtr(pType type,int i);int     GetConnectorData(int x);int         GetColumnCount();int         GetWordSize();int         GetRowCount();    int             GetSwitchDataSize();int         GetSwitchData(int y);void        DoLoad(vzString filename);    void    DoStore(vzString filename);};#include″vzNanocell.cpp″#endif//_vzNanocell_h//**************************************************************************&lt;!-- SIPO &lt;DP n="146"> -->&lt;dp n="d146"/>                          vzPin.cpp/**************************************************************************vzPin.cppVan Zandt**************************************************************************/vzPin::vzPin():vzDevice(){}vzPin::~vzPin(){}void vzPin::DoCreate(int id,pType type,int x1,int y1,int x2,int y2,                                              int x12,int y12,int x22,int y22,                                              int wordsize,vzEventQ *apEventQ){    int               i;    mID=id;    mType=type;    mColor=pnDrainColor;mInX1=x1;mInX2=x2;mInY1=y1;mInY2=y2;mOutX1=x12;mOutX2=x22;mOutY1=y12;mOutY2=y22;    mWordSize=wordsize;mpEventQ=apEventQ;    mFlow=0;    mIsADrain=true;    mIsASource=false;    mTempFlow=0;    mLabel=false;    mDeactivated=false;    mInitialFlow=0;&lt;!-- SIPO &lt;DP n="147"> -->&lt;dp n="d147"/>                           vzPin.cpp}void vzPin::DoDraw(){    if(mIsADrain)    {           if(mFlow==0)                   mColor=pnDrainColor;           else if(mFlow<=kLowFlow)                   mColor=pnLowColor;           else if(mFlow>=kHighFlow)                   mColor=pnHighColor;           else                   mColor=pnMiddleColor;    }    if(mDeactivated)           mColor=pnOffColor;    if(mIsASource)           mColor=pnSourceColor;      rectfill(screen,mInX1,mInY1,mInX2,mInY2,mColor);    rectfill(screen,mOutX1,mOutY1,mOutX2,mOutY2,mColor);}int vzPin::GetOutX1(){    return mOutX1;}int vzPin::GetOutY1(){    return mOutY1;}int vzPin::GetOutX2(){    return mOutX2;}int vzPin::GetOutY2(){    return mOutY2;}&lt;!-- SIPO &lt;DP n="148"> -->&lt;dp n="d148"/>                          vzPin.cppvoid vzPin::DoFlood(){    int i;    if(mColor==pnLowColor)    {           mColor=pnHighColor;           if(Trace)                   DoDraw();           for(i=0;i<mNeighborCount;i++)                   mpEventQ->UpdateFuture(mNeighborArray[i]);    }}void    vzPin::DoClear(){    if(mIsADrain)           mColor=pnDrainColor;    if(mDeactivated)           mColor=pnOffColor;    if(mIsASource)           mColor=pnSourceColor;    if(Trace)           DoDraw();    mpSource=NULL;    mLabel=false;    mTempFlow=0;}bool vzPin::GetLabel(){    return mLabel;}bool vzPin::IsADrain(){    return  mIsADrain;}void vzPin::GiveFlow(int flow,bool meaningless,vzDevice *p){    mTempFlow=flow;    mpSource=p;    mLabel=true;    mColor=pnSourceColor;    if(Trace)           DoDraw();}&lt;!-- SIPO &lt;DP n="149"> -->&lt;dp n="d149"/>                          vzPin.cppint vzPin::DoAugment(int x){    int      j;    int      returncode;    if(mIsADrain)    {           mFlow=mFlow+mTempFlow;           for(j=0;j<mNeighborCount;j++)                   if(mNeighborArray[j]==mpSource)                   mpEventQ->UpdateFuture(mNeighborArray[j]);           returncode=mTempFlow;    }    else           if(mDeactivated)    {                   for(j=0;j<mNeighborCount;j++)                   if(mNeighborArray[j]==mpSource)                   mpEventQ->UpdateFuture(mNeighborArray[j]);                   returncode=mTempFlow;           }           else           {                   mFlow=mFlow-x;                   returncode=0;           }    return returncode;}int vzPin::GetFlow(bool lefttoright){    if(mIsASource)           return(mInitialFlow-mFlow);    else           return mFlow;}int vzPin::GetInitialFlow(){    return mInitialFlow;}void vzPin::SetStart(int flow){&lt;!-- SIPO &lt;DP n="150"> -->&lt;dp n="d150"/>                        vzPin.cpp    mIsASource=true;    mIsADrain=false;    mFlow=flow;    mInitialFlow=flow;    mTempFlow=0;    mColor=pnSourceColor;    if(Trace)           DoDraw();    mColor=pnDrainColor;}void vzPin::DeactivatePin(){    mDeactivated=true;    mColor=pnOffColor;    if(Trace)              DoDraw();    mIsADrain=false;}int vzPin::DoLabel(bool lefttoright){    int       j,space;    int       returncode=0;    int flow,extra;    extra=0;    flow=0;    if(mIsASource)    {           if((mLabel==false)&amp;&amp;(mFlow>0)&amp;&amp;(mNeighborCount!=0))           {           flow=mFlow/mNeighborCount;                    extra=mFlow%mNeighborCount;                    mColor=pnSourceColor;                    if(Trace)                           DoDraw();                    for(j=0;j<mNeighborCount;j++)                    {                           if(mNeighborArray[j]->GetLabel()==false)                           {                                  space=mNeighborArray[j]->&lt;!-- SIPO &lt;DP n="151"> -->&lt;dp n="d151"/>                            vzPin.cppGetSpace(lefttoright);                                    if(space!=0)                                    {                                              if(space<flow)                                                    mNeighborArray[j]->GiveFlow(space,lefttoright,this);                                            else                    {                             if(extra>0)                                                           mNeighborArray[j]->GiveFlow(flow+1,lefttoright,this);                                                    else                                                           mNeighborArray[j]->GiveFlow(flow,lefttoright,this);                             extra=extra-1;                                             }                    mpEventQ->UpdateFuture(mNeighborArray[j]);                                    }                            }                    }            }mLabel=true;    return 0;    }  if((mDeactivated)&amp;&amp;(mLabel==false)&amp;&amp;(mTempFlow>0)&amp;&amp;(mNeighborCount!=0))    {    mColor=pnSourceColor;                   if(Trace)                          DoDraw();            for(j=0;j<mNeighborCount;j++)            {                    if(mNeighborArray[j]->GetLabel()==false)                    {            space=mNeighborArray[j]->GetSpace(lefttoright);                           if(space!=0)                           {                                 if(space<mTempFlow)                                         mNeighborArray[j]->GiveFlow(space,lefttoright,this);                                 else                                         mNeighborArray[j]->GiveFlow(mTempFlow,lefttoright,this);                                 mpEventQ->UpdateFuture(mNeighborArray[j]);                            }                    }             }&lt;!-- SIPO &lt;DP n="152"> -->&lt;dp n="d152"/>                                 vzPin.cppmLabel=true;    return 0;    }}void    vzPin::ClearStart(){    mColor=pnDrainColor;    mFlow=0;    mIsADrain=true;    mIsASource=false;    mTempFlow=0;    mLabel=false;    mDeactivated=false;    mInitialFlow=0;}&lt;!-- SIPO &lt;DP n="153"> -->&lt;dp n="d153"/>                          vzPin.h/***************************************************************************vzPin.hVan Zandt***************************************************************************/#if !defined(_vzPin_h)#define_vzPin_h#include″vzLib\vzVector.h″#include″vzDevice.h″#include″vzEventQ.h″const    int            pnOffColor=DARKGRAY;const    int            pnDrainColor=WHITE;const    int            pnSourceColor=BLUE;const    int            pnLowColor=YELLOW;const    int            pnMiddleColor=LIGHTBLUE;const    int    pnHighColor=BLUE;class vzPin:public vzDevice{ private:     int             mID;    pType   mType;    int     mInX1;int         mInX2;int         mInY1;int         mInY2;int         mOutX1;int         mOutX2;int         mOutY1;int         mOutY2;    int             mWordSize;int         mColor;    int             mCurrent;vzEventQ *mpEventQ;    bool    mAmIInPin;    bool    mLabel;    int             mFlow;    bool    mIsADrain;    bool    mIsASource;    vzDevice        *mpSource;&lt;!-- SIPO &lt;DP n="154"> -->&lt;dp n="d154"/>                          vzPin.h      int            mTempFlow;bool       mDeactivated;      int    mInitialFlow;public:  vzPin();  ~vzPin();  void       DoCreate(int id,pType type,int x1,int y1,int x2,int y2,                                      int x12,int y12,int x22,int y22,                                      int wordsize,vzEventQ *apEventQ);  void       DoDraw();  int        GetOutX1();  int        GetOutY1();  int        GetOutX2();  int        GetoutY2();      int            GetType(){return mType;};      int            GetID(){return mID;};  void       DoFlood();      void   DoClear();      bool   GetLabel();      bool   IsADrain();      void   GiveFlow(int flow,bool meaningless,vzDevice *p);      int            DoAugment(int x);      int            GetSpace(bool m){return 0;};      int            GetFlow(bool lefttoright);      int            GetInitialFlow();      void   SetStart(int flow);      void   DeactivatePin();      int            DoLabel(bool lefttoright);      void   ClearStart();};#include″vzPin.cpp″#endif//_vzPin_h//***********************************************************************&lt;!-- SIPO &lt;DP n="155"> -->&lt;dp n="d155"/>                       vzPopulation.cpp/***************************************************************************Van ZandtvzPopulation.cpp***************************************************************************/vzPopulation::vzPopulation(.     int  tournamentcount,                                                     int tournamentsize,                                                     int mutate,                                                     int crossover,                                                     int     random,                                                     int count,                                                     int size,                                                     int alpha_size,                                                     double(*eval)(vzIndividual *iPtr)):  mkTournamentCount(tournamentcount),      mkTournamentSize(tournamentsize),      mkMutate(mutate),      mkCrossover(crossover),      mkRandom(random),      mkTotal(mutate+crossover+random),      mkCount(count),      mkSize(size),      mkAlphabetCount(alpha_size),      DoEvaluate(eval){      int            i;      mpIndividual.resize(mkCount);     for(i=0;i<mkCount;i++)              mpIndividual[i]=new vzIndividual(mkSize,mkAlphabetCount);}vzPopulation::~vzPopulation(){      int                i;      for(i=0;i<mkCount;i++)&lt;!-- SIPO &lt;DP n="156"> -->&lt;dp n="d156"/>                      vzPopulation.cpp            delete mpIndividual[i];}/*void vzPopulation::PrintToFile(ofstream out){}*//*void    vzPopulation::DoPrint(int x,int y){} */void    vzPopulation::ReGenerate(int cycle_count){    int              i,j;    for(i=0;i<cycle_count;i++)    {             if(mpIndividual[SelectBest()]->GetFitness()==0.0)                  break;    for(j=0;j<mkTournamentCount;j++)            {                  if(mpIndividual[SelectBest()]->GetFitness()==0.0)                        break;                  DoTournament();            }    }}int            vzPopulation::SelectBest(){    int           i;    int           retBestIndex;    double  retBestFitness;    for(i=0;i<mkCount;i++)    {    if(i==0)          {                     retBestIndex=0;&lt;!-- SIPO &lt;DP n="157"> -->&lt;dp n="d157"/>                      vzPopulation.cpp                    retBestFitness=mpIndividual[0]->GetFitness();            }            else            {                    if(mpIndividual[i]->GetFitness()<retBestFitness)                    {                          retBestIndex=i;                          retBestFitness=mpIndividual[i]->GetFitness();                    }            }    }    return retBestIndex;}void    vzPopulation::DoTournament(){    int               i;    int               r;    int               first=0;    int               second=0;    int               last=0;    double  tmpFitness=0.0;    double  firstFit=1000000.0;    double  secondFit=1000000.0;    double  lastFit=0.0;    for(i=0;i<mkTournamentSize;i++)    {            r=getRandom(mkCount);            tmpFitness=mpIndividual[r]->GetFitness();            if(tmpFitness<firstFit)            {                  secondFit=firstFit;                  firstFit=tmpFitness;                  second=first;                  first=r;            }            else if(tmpFitness<secondFit)            {                  secondFit=tmpFitness;                  second=r;            }            else if(tmpFitness>lastFit)&lt;!-- SIPO &lt;DP n="158"> -->&lt;dp n="d158"/>                         vzPopulation.cpp            {                       lastFit=tmpFitness;                       last=r;            }    }    if(first!=last)    {            r=getRandom(mkTotal);            if(r<mkMutate)            {                       DoClone(first,last);                       DoMutate(last);            }            else if(r<mkMutate+mkCrossover)            {                        if(second!=last)                    {                       DoClone(first,last);                       DoCrossover(last,second);                    }            }            else//(r<mkMutate+mkCrossover+mkRandom)            {                    mpIndividual[last]->BuildRandom();            }            mpIndividual[last]->SetFitness(DoEvaluate(mpIndividual[last]));    }}void    vzPopulation::DoClone(int from,int to){    *(mpIndividual[to])=*(mpIndividual[from]);}void    vzPopulation::DoMutate(int i){    mpIndividual[i]->DoMutate();}void    vzPopulation::DoCrossover(int i,int j){    mpIndividual[i]->DoCrossover(mpIndividual[j]);&lt;!-- SIPO &lt;DP n="159"> -->&lt;dp n="d159"/>                         vzPopulation.cpp}void    vzPopulation::BuildRandom(){    int               i;    for(i=0;i<mkCount;i++)    {            mpIndividual[i]->BuildRandom();            mpIndividual[i]->SetFitness(DoEvaluate(mpIndividual[i]));    }}//************************************************************************&lt;!-- SIPO &lt;DP n="160"> -->&lt;dp n="d160"/>                        vzPopulation.h/******************************************************************************Van ZandtvzPopulation.h******************************************************************************/#if !defined(_vzPopulation_h)#define_vzPopulation_h#include″vzLib\vzTools.h″#include″vzLib\vzVector.h″#include″vzIndividual.h″class    vzPopulation{private:    const    int                                     mkTournamentCount;    const    int                                     mkTournamentSize;    const    int                                     mkMutate;    const    int                                     mkCrossover;    const    int                                     mkRandom;    const    int                            mkTotal;    const    int                                     mkCount;    const    int                                     mkSize;    const    int                                     mkAlphabetCount;    vzVector<vzIndividual *>        mpIndividual;public:    vzPopulation(   int tournamentcount,                                    int tournamentsize,                                    int mutate,                                    int crossover,                                    int     random,                                    int count,                                    int size,                                    int alpha_size,                                    double(*eval)(vzIndividual *iPtr));    ~vzPopulation();&lt;!-- SIPO &lt;DP n="161"> -->&lt;dp n="d161"/>                       vzPopulation.h    void    BuildRandom();    void    ReGenerate(int cycle_count);    void    DoTournament();    int             SelectBest();    void    DoClone(int from,int to);    void    DoMutate(int i);    void    DoCrossover(int i,int j); vzIndividual        *GetIndividualPtr(int i){return mpIndividual[i];};    double  (*DoEvaluate)(vzIndividual *iPtr);//      void    DoPrint(int x,int y);//      void    PrintToFile(ofstream out);};#include        ″vzPopulation.cpp″#endif//_vzPopulation_h//**************************************************************************&lt;!-- SIPO &lt;DP n="162"> -->&lt;dp n="d162"/>                       vzRegister.cpp/*****************************************************************************vzRegister.cppVan Zandt*****************************************************************************/vzRegister::vzRegister(int WordSize,int devicesize):mWordSize(WordSize),mWidth(devicesize*4),mX1(0),mY1(0),mX2(0),mY2(0){     mPin=new vzPin[mWordSize];}vzRegister::~vzRegister(){    delete[]mPin;    mPin=NULL;}void    vzRegister::DoCreate(int x1,int y1,int y2,bool ingrid,                                                      vzEventQ *apEventQ){    int counter;//in for loop that draws yellow boxesint boxlength;//the calculated average length of each boxint extra;//the leftover space for boxesint y1adder;//adders distribute leftover space to boxesint y2adder;    mX1=x1+mWidth;//mWidth;    mY1=y1;    mX2=mX1+mWidth;//mWidth;    mY2=y2;    mpEventQ=apEventQ;    boxlength=((mY2-mY1)/(2*mWordSize+1));    extra=(mY2-mY1)%(2*mWordSize+1);//the space reservedbetween ends    y2adder=extra/2;    y1adder=extra/2;    if(ingrid)    {          for(counter=0;counter<mWordSize;counter++)    {&lt;!-- SIPO &lt;DP n="163"> -->&lt;dp n="d163"/>                       vzRegister.cpp            mPin[counter].DoCreate(counter,in,mX1+3,mY1+boxlength+yladder+(boxlength+boxlength)*counter,            mX2-3,mY1+boxlength+y2adder+(boxlength+boxlength)*counter+boxlength,            mX1+mWidth+3,mY1+boxlength+yladder+(boxlength+boxlength)*counter,            mX1+2*mWidth-3,mY1+boxlength+y2adder+(boxlength+boxlength)*counter+boxlength,            mWordSize,mpEventQ);            if(counter==mWordSize-2)            {                   if(extra%2>0)                          y2adder=extra/2+1;                   else                          y2adder=extra/2;            }   }}    else{    for(counter=0;counter<mWordSize;counter++)    {            mPin[counter].DoCreate(counter,out,mX1+3,mY1+boxlength+yladder+(boxlength+boxlength)*counter,            mX2-3,mY1+boxlength+y2adder+(boxlength+boxlength)*counter+boxlength,            mX1-mWidth+3,mY1+boxlength+yladder+(boxlength+boxlength)*counter,            mX1-3,mY1+boxlength+y2adder+(boxlength+boxlength)*counter+boxl ength,            mWordSize,mpEventQ);            if(counter==mWordSize-2)            {                   if(extra%2>0)                          y2adder=extra/2+1;                   else                          y2adder=extra/2;            }    } }}void vzRegister::DoDraw(){    int counter;&lt;!-- SIPO &lt;DP n="164"> -->&lt;dp n="d164"/>                        vzRegister.cpp     for(counter=0;counter<mWordSize;counter++)    mPin[counter].DoDraw();}void vzRegister::DoFlood()  {    int counter;    for(counter=0;counter<mWordSize;counter++)    if(mPin[counter].GetFlow(true)>0)                   mPin[counter].DoFlood();}void vzRegister::DoClear(){    int counter;    for(counter=0;counter<mWordSize;counter++)           mPin[counter].DoClear();}int vzRegister::ConnectToPin(vzConnector *pAConnector,int SwitchDensity){    int any;    int connectorsize;    int counter;    int whichpin;    any=pAConnector->GetY();    connectorsize=pAConnector->GetSize();whichpin=-1;    for(counter=0;counter<mWordsize;counter++)    {           if((any>=mPin[counter].GetOutY1())&amp;&amp;(any<=mPin[counter].GetOutY2()))        if(getRandom(100)<SwitchDensity)                         whichpin=counter;           }    return whichpin;}vzPin   *vzRegister::GetPinPtr(int i){    return &amp;mPin[i];}&lt;!-- SIPO &lt;DP n="165"> -->&lt;dp n="d165"/>                          vzRegister.cppvoid vzRegister::DoLabel(bool lefttoright){    int counter;    for(counter=0;counter<mWordSize;counter++)           mPin[counter].DoLabel(lefttoright);}int vzRegister::DoAugment(){    int counter,minflow;    for(counter=0;counter<mWordSize;counter++){            if((mPin[counter].GetLabel())&amp;&amp;(mPin[counter].IsADrain()))    {                 minflow=mPin[counter].DoAugment(0);           break;           }    }    return minflow;}bool vzRegister::CheckLabel(){    int counter;    int check=0;    for(counter=0;counter<mWordSize;counter++)           if((mPin[counter].GetLabel())&amp;&amp;(mPin[counter].IsADrain()))                 check++;    if(check>0)          return true;    else          return false;}int vzRegister::OnPin(int x1,int y1){    int j;    int answer;    answer=-1;    for(j=0;j<mWordSize;j++)&lt;!-- SIPO &lt;DP n="166"> -->&lt;dp n="d166"/>                       vzRegister.cpp    {            if(mPin[j].GetOutX1()<=x1)            if(mPin[j].GetOutX2()>=x1)            if(mPin[j].GetOutY1()<=y1)            if(mPin[j].GetOutY2()>=y1)            {                   answer=j;                   break;            }    }    return answer;}void vzRegister::SetPin(int WhichPin,int flow){    mPin[WhichPin].SetStart(flow);}int vzRegister::PinHeight(int WhichPin){    return(mPin[WhichPin].GetOutY1());}int vzRegister::GetPinFlow(int WhichPin){    return(mPin[WhichPin].GetFlow(true));}void vzRegister::DeactivatePin(int WhichPin){    mPin[WhichPin].DeactivatePin();}int vzRegister::GetInitialFlow(int WhichPin){    return(mPin[WhichPin].GetInitialFlow());}void vzRegister::ClearStart(){    int counter;    for(counter=0;counter<mWordSize;counter++)           mPin[counter].ClearStart();}void vzRegister::Write(vzString string){&lt;!-- SIPO &lt;DP n="167"> -->&lt;dp n="d167"/>                     vzRegister.cpp     int counter;     int size;     if(string.length()<mWordSize)            size=string.length();     else                            /            size=mWordSize;     for(counter=0;counter<size;counter++)            if(string[counter]==′0′)                    mPin[counter].DeactivatePin();            else if(string[counter]==′1′)                    mPin[counter].SetStart(kStartFlow);}//**************************************************************************&lt;!-- SIPO &lt;DP n="168"> -->&lt;dp n="d168"/>                        vzRegister.h/*****************************************************************************vzRegister.hVan Zandt*****************************************************************************/#if !defined(_vzRegister_h)#define_vzRegister_h#include″vzEventQ.h″#include″vzPin.h″#include″vzConnector.h″#include″vzLib\vzString.h″∥const int kRegisterWidth=15;class vzRegister{private:const   int     mWordSize;           int               mWidth;    int     mX1;    int     mY1;    int     mX2;    int     mY2;    vzPin   *mPin;    vzEventQ*mpEventQ;           bool      mAmIInReg;public:    vzRegister(int WordSize,int devicesize);    ~vzRegister();void        DoCreate(int x1,int y1,int y2,bool ingrid,vzEventQ *apEventQ);    void    DoDraw();    void    DoFlood();    int     ConnectToPin(vzConnector *pAConnector,int SwitchDensity);    void    DoClear();    vzPin   *GetPinPtr(int i);    void    DoLabel(bool lefttoright);    int             DoAugment();    bool    CheckLabel();int     OnPin(int x1,int y1);void    SetPin(int WhichPin,int flow);&lt;!-- SIPO &lt;DP n="169"> -->&lt;dp n="d169"/>                        vzRegister.h    int     PinHeight(int WhichPin);    int     GetPinFlow(int WhichPin);    void    DeactivatePin(int WhichPin);    int             GetInitialFlow(int WhichPin);    void    ClearStart(); void    Write(vzString string);};#include″vzRegister.cpp″#endif//_vzRegister_h//**************************************************************************&lt;!-- SIPO &lt;DP n="170"> -->&lt;dp n="d170"/>                        vzRegister.h/*****************************************************************************vzRegister.hVan Zandt*****************************************************************************/#if !defined(_vzRegister_h)#define_vzRegister_h#include″vzEventQ.h″#include″vzPin.h″#include″vzConnector.h″#include″vzLib\vzString.h″//const int kRegisterWidth=15;class vzRegister{private:const   int     mWordSize;           int            mWidth;    int     mX1;    int     mY1;    int     mX2;    int     mY2;    vzPin   *mPin;    vzEventQ*mpEventQ;           bool     mAmIInReg;public:    vzRegister(int WordSize,int devicesize);    ~vzRegister();void        DoCreate(int x1,int y1,int y2,bool ingrid,vzEventQ *apEventQ);    void    DoDraw();    void    DoFlood();    int     ConnectToPin(vzConnector *pAConnector,int SwitchDensity);    void    DoClear();    vzPin   *GetPinPtr(int i);    void    DoLabel(bool lefttoright);    int             DoAugment();    bool    CheckLabel();int     OnPin(int x1,int y1);void    SetPin(int WhichPin,int flow);&lt;!-- SIPO &lt;DP n="171"> -->&lt;dp n="d171"/>                        vzRegister.h    int     PinHeight(int WhichPin);    int     GetPinFlow(int WhichPin);    void    DeactivatePin(int WhichPin);    int             GetInitialFlow(int WhichPin);    void    ClearStart(); void    Write(vzString string);};#include″vzRegister.cpp″#endif//_vzRegister_h//**************************************************************************&lt;!-- SIPO &lt;DP n="172"> -->&lt;dp n="d172"/>                        vzSwitch.cpp/**************************************************************************vzSwitch.cppVan Zandt**************************************************************************/vzSwitch::vzSwitch(){}vzSwitch::~vzSwitch(){}void vzSwitch::DoCreate(int x1,int y1,int x2,int y2,                                              int state,vzEventQ*apEventQ){    mX1=x1;    mY1=y1;    mX2=x2;    mY2=y2;    mpEventQ=apEventQ;    mState=state;    if(mState==0)          mInCapacity=0;    else if(mState==1)          mInCapacity=kLowCapacity;    else          mInCapacity=kHighCapacity;    mOutCapacity=mInCapacity;    mInFlow=0;    mOutFlow=0;    mLabel=false;    mpSource=NULL;    mTempFlow=0;    mColor=swLowColor;}void vzSwitch::DoDraw(){    int              i;&lt;!-- SIPO &lt;DP n="173"> -->&lt;dp n="d173"/>                          vzSwitch.cpp if(mState==2)            mColor=swHighColor;    if(mState==1)            mColor=swLowColor;    if(mState==0)            mColor=swOffColor;    line(screen,mX1,mY1,mX2,mY2,mColor); -  for(i=0;i<mNeighborCount;i++)              mNeighborArray[i]->DoDraw();}void vzSwitch::DoFlood(){    int i;    if(mColor==swLowColor)    {             mColor=swHighColor;            if(Trace)                  DoDraw();            for(i=0;i<mNeighborCount;i++)                    mpEventQ->UpdateFuture(mNeighborArray[i]);    }}void    vzSwitch::DoClemr(){    mColor=swLowColor;if(Trace)            DoDraw();    mLabel=false;    mpSource=NULL;    mTempFlow=0;    mAddFlow=true;}bool vzSwitch::GetLabel(){    return mLabel;}int vzSwitch::GetSpace(bool lefttoright){    if(lefttoright)&lt;!-- SIPO &lt;DP n="174"> -->&lt;dp n="d174"/>                        vzSwitch.cpp             return(mInCapacity-mInFlow);   else             return(mOutCapacity-mOutFlow);}int vzSwitch::GetFlow(bool lefttoright){   if(lefttoright)             return mOutFlow;   else             return mInFlow;}void vzSwitch::GiveFlow(int flow,bool inflow,vzDevice *p){   mpSource=p;   mTempFlow=flow;   if(inflow)  mAddFlow=true;   else      mAddFlow=false;}int vzSwitch::DoAugment(int x){   int       j;   mColor=swHighColor;   if(Trace)          DoDraw();   if(mAddFlow)          mInFlow=mInFlow+x;   else          mOutFlow=mOutFlow+x;   for(j=0;j<mNeighborCount;j++)          if(mNeighborArray[j]==mpSource)          {          mpEventQ->UpdateFuture(mNeighborArray[j]);                  break;          }   return x;}int vzSwitch::DoLabel(bool lefttoright)&lt;!-- SIPO &lt;DP n="175"> -->&lt;dp n="d175"/>                        vzSwitch.cpp{    int     j,returncode;    returncode=0;    if((mLabel==false)&amp;&amp;(mTempFlow>0))    {                for(j=0;j<mNeighborCount;j++)                {                       if((mNeighborArray[j]!=mpSource)&amp;&amp;(mNeighborArray[j]->GetLabel()==false))                       {                if(mNeighborArray[j]->IsADrain())                               {                       mNeighborArray[j]->GiveFlow(mTempFlow,lefttoright,this);                                      returncode=1;                                      break;                               }                               else                               {                                      mNeighborArray[j]->GiveFlow(mTempFlow,lefttoright,this);                      mpEventQ->UpdateFuture(mNeighborArray[j]);             }                      }             }             mLabel=true;    }    return returncode;}  void    vzSwitch::ClearStart(){        mInFlow=0;    mOutFlow=0;    mLabel=false;    mpSource=NULL;    mTempFlow=0;    mColor=swLowColor;}void    vzSwitch::SetState(int n){    if(n==0)    {          mState=0;&lt;!-- SIPO &lt;DP n="176"> -->&lt;dp n="d176"/>                       vzSwitch.cpp            mColor=swOffColor;            mInCapacity=0;    }    else if(n==1)    {            mState=1;            mColor=swLowColor;            mInCapacity=kLowCapacity;    }    else    {            mState=2;            mColor=swHighColor;            mInCapacity=kHighCapacity;    }    mOutCapacity=mInCapacity;}&lt;!-- SIPO &lt;DP n="177"> -->&lt;dp n="d177"/>                        vzSwitch.h/*****************************************************************************vzSwitch.hVan Zandt*****************************************************************************/#if !defined(_vzSwitch_h)#define_vzSwitch_h#include″vzDevice.h″const   int             swOffColor=DARKGRAY;const   int             swLowColor=BLACK;const   int             swHighColor=WHITE;class vzSwitch:public vzDevice{private:    int                     mX1;int                         mY1;int                         mX2;int                         mY2;    int                             mColor;vzEventQ           *mpEventQ;    int                             mInCapacity;    int                             mOutCapacity;    int                             mInFlow;    int                             mOutFlow;    bool                   mLabel;    vzDevice               *mpSource;    int                             mTempFlow;    bool                   mAddFlow;    int                    mState;    int                             mNeighbor1Type;    int                             mNeighbor1Parm1;    int                             mNeighbor1Parm2;    int                             mNeighbor2Type;    int                             mNeighbor2Parm1;    int                             mNeighbor2Parm2;public:vzSwitch();~vzSwitch();void        DoCreate(int x1,int y1,int x2,int y2,&lt;!-- SIPO &lt;DP n="178"> -->&lt;dp n="d178"/>                    vzSwitch.h                               int state,vzEventQ *apEventQ); void        DoDraw(); void        DoFlood();    void    DoClear();    bool    GetLabel();int         GetSpace(bool lefttoright);    int             GetFlow(bool lefttoright);    void    GiveFlow(int flow,bool inflow,vzDevice *p);    bool    IsADrain(){return false;};    int             DoAugment(int x);    int             DoLabel(bool lefttoright);    void    ClearStart();    void    SetState(int n);    void    SetNeighbor1Type(int n){mNeighbor1Type=n;};    void    SetNeighbor1Parm1(int n){mNeighbor1Parm1=n;};    void    SetNeighbor1Parm2(int n){mNeighbor1Parm2=n;};    void    SetNeighbor2Type(int n){mNeighbor2Type=n;};    void    SetNeighbor2Parm1(int n){mNeighbor2Parm1=n;};    void    SetNeighbor2Parm2(int n){mNeighbor2Parm2=n;};    int             GetState(){return mState;};    int             GetNeighbor1Type(){return mNeighbor1Type;};    int             GetNeighbor1Parml(){return mNeighbor1Parm1;};    int             GetNeighbor1Parm2(){return mNeighbor1Parm2;};    int             GetNeighbor2Type(){return mNeighbor2Type;};    int             GetNeighbor2Parm1(){return mNeighbor2Parm1;};    int             GetNeighbor2Parm2(){return mNeighbor2Parm2;};};#include″vzSwitch.cpp″#endif//_vzSwitch_h
Unbred nano unit connects table
Moletronics
.OPTIONS?RELTOL=.01?ITL4=10?SCALE=1?POST?METHOD=Gear?DCSTEP=10
.OPTIONS?ACCT=0?INGOLD=1?NOMOD?PROBE
.TRAN?10000n?60000n
ROut1?1?0?1
.PRINT?TRAN?I(Rout1)
C1?1?0?10f
C2?2?0?10f
C3?3?0?10f
C4?4?0?10f
C5?5?0?10f
C6?6?0?10f
C7?7?0?10f
C8?8?0?10f
C9?9?0?10f
C10?10?0?10f
C11?11?0?10f
C12?12?0?10f
C13?13?0?10f
C14?14?0?10f
VInputA15?15?0?PWL(0n,0V?20000n,0V?20001n,0.5V?30000n,0.5V?30001n,2V
40000n,2V
+40001n,0.5V?50000n,0.5V?50001n,0.5V?60000n,0.5V)
.PRINT?TRAN?15
C15?15?0?10f
C16?16?0?10f
C17?17?0?10f
C18?18?0?10f
C19?19?0?10f
C20?20?0?10f
C24?24?0?5f
C27?27?0?5f
C29?29?0?5f
C32?32?0?5f
C34?34?0?5f
C35?35?0?5f
C37?37?0?5f
C39?39?0?5f
C42?42?0?5f
C44?44?0?5f
C47?47?0?5f
C49?49?0?5f
C50?50?0?5f
C52?52?0?5f
C53?53?0?5f
C54?54?0?5f
C55?55?0?5f
C56?56?0?5f
C57?57?0?5f
C58?58?0?5f
C59?59?0?5f
C60?60?0?5f
C61?61?0?5f
C62?62?0?5f
C63?63?0?5f
C64?64?0?5f
C67?67?0?5f
C68?68?0?5f
C69?69?0?5f
C70?70?0?5f
C71?71?0?5f
C72?72?0?5f
C74?74?0?5f
C75?75?0?5f
C76?76?0?5f
C77?77?0?5f
C78?78?0?5f
C79?79?0?5f
C82?82?0?5f
C83?83?0?5f
C84?84?0?5f
C85?85?0?5f
C86?86?0?5f
C87?87?0?5f
C88?88?0?5f
C89?89?0?5f
C90?90?0?5f
C92?92?0?5f
C93?93?0?5f
C94?94?0?5f
C97?97?0?5f
C99?99?0?5f
C101?101?0?5f
C102?102?0?5f
C103?103?0?5f
C104?104?0?5f
C105?105?0?5f
C106?106?0?5f
C108?108?0?5f
C109?109?0?5f
C111?111?0?5f
C112?112?0?5f
C113?113?0?5f
C114?114?0?5f
C115?115?0?5f
C116?116?0?5f
C119?119?0?5f
C120?120?0?5f
C121?121?0?5f
C122?122?0?5f
C123?123?0?5f
C124?124?0?5f
C125?125?0?5f
C128?128?0?5f
C129?129?0?5f
C130?130?0?5f
C131?131?0?5f
C132?132?0?5f
C133?133?0?5f
C134?134?0?5f
C135?135?0?5f
C136?136?0?5f
C137?137?0?5f
C138?138?0?5f
C139?139?0?5f
C142?142?0?5f
C143?143?0?5f
C144?144?0?5f
C145?145?0?5f
C146?146?0?5f
C147?147?0?5f
C149?149?0?5f
C150?150?0?5f
C151?151?0?5f
C152?152?0?5f
C153?153?0?5f
C154?154?0?5f
C157?157?0?5f
C158?158?0?5f
C159?159?0?5f
C160?160?0?5f
C161?161?0?5f
C162?162?0?5f
C163?163?0?5f
C164?164?0?5f
C165?165?0?5f
C166?166?0?5f
C167?167?0?5f
C168?168?0?5f
C169?169?0?5f
C172?172?0?5f
C173?173?0?5f
C175?175?0?5f
C176?176?0?5f
C178?178?0?5f
C179?179?0?5f
C180?180?0?5f
C181?181?0?5f
C182?182?0?5f
C183?183?0?5f
C184?184?0?5f
C186?186?0?5f
C187?187?0?5f
C188?188?0?5f
C190?190?0?5f
C191?191?0?5f
C192?192?0?5f
C193?193?0?5f
C194?194?0?5f
C195?195?0?5f
C196?196?0?5f
C197?197?0?5f
C198?198?0?5f
C199?199?0?5f
C200?200?0?5f
C202?202?0?5f
C203?203?0?5f
C204?204?0?5f
C205?205?0?5f
C206?206?0?5f
C207?207?0?5f
C208?208?0?5f
C209?209?0?5f
C210?210?0?5f
C212?212?0?5f
C214?214?0?5f
C217?217?0?5f
C219?219?0?5f
C222?222?0?5f
C224?224?0?5f
C229?229?0?5f
C231?231?0?5f
C232?232?0?5f
C234?234?0?5f
C237?237?0?5f
C239?239?0?5f
C242?242?0?5f
C244?244?0?5f
X512?20?244?NDRDIODE_0
X511?242?20?NDRDIODE_1
X510?19?242?NDRDIODE_0
X508?239?19?NDRDIODE_0
X507?18?239?NDRDIODE_1
X506?237?18?NDRDIODE_0
X505?237?17?NDRDIODE_0
X503?234?17?NDRDIODE_1
X502?234?16?NDRDIODE_1
X501?16?232?NDRDIODE_0
X500?232?231?NDRDIODE_1
X499?5?229?NDRDIODE_1
X498?229?244?NDRDIODE_0
X497?20?229?NDRDIODE_0
X496?20?229?NDRDIODE_0
X490?239?19?NDRDIODE_1
X489?224?19?NDRDIODE_1
X488?224?239?NDRDIODE_0
X487?18?224?NDRDIODE_0
X486?18?239?NDRDIODE_0
X484?18?237?NDRDIODE_0
X483?222?18?NDRDIODE_0
X482?237?222?NDRDIODE_1
X481?222?17?NDRDIODE_0
X480?237?17?NDRDIODE_1
X475?219?17?NDRDIODE_1
X474?219?17?NDRDIODE_0
X473?219?234?NDRDIODE_1
X472?219?16?NDRDIODE_0
X471?16?219?NDRDIODE_1
X469?217?16?NDRDIODE_0
X468?217?16?NDRDIODE_0
X467?217?232?NDRDIODE_0
X466?217?231?NDRDIODE_0
X465?10?231?NDRDIODE_0
X464?10?217?NDRDIODE_1
X462?214?5?NDRDIODE_0
X461?214?5?NDRDIODE_1
X460?214?229?NDRDIODE_1
X459?214?20?NDRDIODE_1
X458?212?20?NDRDIODE_0
X457?212?19?NDRDIODE_0
X456?210?19?NDRDIODE_0
X455?19?210?NDRDIODE_0
X454?210?224?NDRDIODE_0
X453?210?209?NDRDIODE_0
X452?209?224?NDRDIODE_0
X451?209?208?NDRDIODE_1
X450?224?208?NDRDIODE_0
X449?18?208?NDRDIODE_0
X448?222?208?NDRDIODE_1
X447?207?208?NDRDIODE_0
X446?222?207?NDRDIODE_0
X445?207?206?NDRDIODE_0
X444?206?222?NDRDIODE_0
X443?206?17?NDRDIODE_0
X442?206?17?NDRDIODE_0
X441?206?205?NDRDIODE_0
X440?205?17?NDRDIODE_0
X439?204?205?NDRDIODE_0
X438?17?204?NDRDIODE_1
X437?204?219?NDRDIODE_0
X436?16?204?NDRDIODE_1
X435?203?204?NDRDIODE_0
X434?203?16?NDRDIODE_1
X433?203?202?NDRDIODE_0
X432?16?202?NDRDIODE_1
X431?217?202?NDRDIODE_0
X430?202?10?NDRDIODE_1
X428?10?202?NDRDIODE_1
X427?200?5?NDRDIODE_1
X426?199?200?NDRDIODE_0
X425?199?5?NDRDIODE_0
X424?199?214?NDRDIODE_0
X423?199?198?NDRDIODE_0
X422?197?198?NDRDIODE_1
X421?212?197?NDRDIODE_1
X420?196?197?NDRDIODE_0
X419?195?196?NDRDIODE_1
X418?195?210?NDRDIODE_0
X417?195?209?NDRDIODE_0
X416?194?195?NDRDIODE_0
X415?194?209?NDRDIODE_1
X414?194?193?NDRDIODE_1
X413?193?209?NDRDIODE_1
X412?193?208?NDRDIODE_0
X411?207?193?NDRDIODE_1
X410?193?192?NDRDIODE_0
X409?207?192?NDRDIODE_1
X408?191?192?NDRDIODE_0
X407?207?191?NDRDIODE_0
X406?191?206?NDRDIODE_1
X405?205?191?NDRDIODE_0
X404?190?191?NDRDIODE_0
X403?205?190?NDRDIODE_0
X402?188?203?NDRDIODE_1
X401?188?187?NDRDIODE_1
X400?187?203?NDRDIODE_1
X399?202?187?NDRDIODE_1
X398?10?187?NDRDIODE_0
X397?186?10?NDRDIODE_1
X396?187?186?NDRDIODE_0
X395?200?4?NDRDIODE_0
X394?4?184?NDRDIODE_1
X393?184?200?NDRDIODE_0
X392?184?199?NDRDIODE_0
X391?184?198?NDRDIODE_0
X390?183?184?NDRDIODE_0
X389?198?183?NDRDIODE_1
X388?183?182?NDRDIODE_0
X387?182?198?NDRDIODE_1
X386?197?182?NDRDIODE_1
X385?182?196?NDRDIODE_0
X384?182?181?NDRDIODE_0
X383?196?181?NDRDIODE_1
X382?181?180?NDRDIODE_0
X381?196?180?NDRDIODE_1
X380?195?180?NDRDIODE_1
X379?194?180?NDRDIODE_1
X378?179?180?NDRDIODE_1
X377?179?194?NDRDIODE_0
X376?179?178?NDRDIODE_0
X375?178?194?NDRDIODE_1
X374?178?193?NDRDIODE_1
X373?192?178?NDRDIODE_1
X372?192?176?NDRDIODE_0
X371?191?176?NDRDIODE_0
X370?190?176?NDRDIODE_0
X369?175?176?NDRDIODE_0
X368?190?175?NDRDIODE_1
X367?188?173?NDRDIODE_0
X366?173?172?NDRDIODE_0
X365?188?172?NDRDIODE_0
X364?172?187?NDRDIODE_0
X363?172?186?NDRDIODE_0
X362?186?9?NDRDIODE_0
X361?9?172?NDRDIODE_1
X359?169?4?NDRDIODE_0
X358?169?4?NDRDIODE_1
X357?184?169?NDRDIODE_0
X356?183?169?NDRDIODE_0
X355?168?169?NDRDIODE_1
X354?183?168?NDRDIODE_1
X353?167?168?NDRDIODE_1
X352?167?183?NDRDIODE_0
X351?167?182?NDRDIODE_1
X350?181?167?NDRDIODE_0
X349?167?166?NDRDIODE_0
X348?181?166?NDRDIODE_1
X347?165?166?NDRDIODE_1
X346?181?165?NDRDIODE_1
X345?165?180?NDRDIODE_0
X344?179?165?NDRDIODE_1
X343?165?164?NDRDIODE_1
X342?179?164?NDRDIODE_1
X341?164?163?NDRDIODE_0
X340?179?163?NDRDIODE_0
X339?178?163?NDRDIODE_0
X338?162?163?NDRDIODE_1
X337?162?161?NDRDIODE_1
X336?161?176?NDRDIODE_1
X335?161?175?NDRDIODE_1
X334?161?160?NDRDIODE_0
X333?175?160?NDRDIODE_1
X332?160?159?NDRDIODE_0
X331?159?175?NDRDIODE_1
X330?173?159?NDRDIODE_1
X329?158?159?NDRDIODE_0
X328?158?173?NDRDIODE_1
X327?158?157?NDRDIODE_0
X326?157?173?NDRDIODE_0
X325?157?172?NDRDIODE_0
X324?157?9?NDRDIODE_0
X322?157?9?NDRDIODE_1
X320?3?154?NDRDIODE_1
X319?154?4?NDRDIODE_0
X318?154?169?NDRDIODE_0
X317?168?154?NDRDIODE_1
X316?153?154?NDRDIODE_1
X315?168?153?NDRDIODE_0
X314?152?153?NDRDIODE_0
X313?152?168?NDRDIODE_0
X312?152?167?NDRDIODE_0
X311?152?166?NDRDIODE_1
X310?152?151?NDRDIODE_1
X309?151?166?NDRDIODE_0
X308?150?151?NDRDIODE_1
X307?166?150?NDRDIODE_1
X306?165?150?NDRDIODE_1
X305?164?150?NDRDIODE_1
X304?150?149?NDRDIODE_0
X303?149?164?NDRDIODE_1
X302?147?162?NDRDIODE_0
X301?147?146?NDRDIODE_0
X300?162?146?NDRDIODE_0
X299?146?161?NDRDIODE_1
X298?146?160?NDRDIODE_1
X297?145?146?NDRDIODE_0
X296?145?160?NDRDIODE_1
X295?144?145?NDRDIODE_0
X294?160?144?NDRDIODE_1
X293?144?159?NDRDIODE_1
X292?144?158?NDRDIODE_0
X291?143?144?NDRDIODE_1
X290?158?143?NDRDIODE_1
X289?143?142?NDRDIODE_0
X288?158?142?NDRDIODE_0
X287?157?142?NDRDIODE_0
X286?9?142?NDRDIODE_0
X284?8?142?NDRDIODE_0
X282?139?3?NDRDIODE_1
X281?3?139?NDRDIODE_0
X280?139?154?NDRDIODE_1
X279?139?153?NDRDIODE_1
X278?139?138?NDRDIODE_1
X277?138?153?NDRDIODE_1
X276?137?138?NDRDIODE_1
X275?137?153?NDRDIODE_1
X274?152?137?NDRDIODE_0
X273?151?137?NDRDIODE_1
X272?136?137?NDRDIODE_0
X271?136?151?NDRDIODE_0
X270?136?135?NDRDIODE_1
X269?151?135?NDRDIODE_1
X268?150?135?NDRDIODE_0
X267?149?135?NDRDIODE_0
X266?135?134?NDRDIODE_0
X265?134?149?NDRDIODE_1
X264?134?133?NDRDIODE_1
X263?133?149?NDRDIODE_0
X262?133?147?NDRDIODE_0
X261?132?133?NDRDIODE_0
X260?147?132?NDRDIODE_0
X259?131?132?NDRDIODE_1
X258?147?131?NDRDIODE_0
X257?146?131?NDRDIODE_1
X256?131?145?NDRDIODE_0
X255?131?130?NDRDIODE_1
X254?145?130?NDRDIODE_1
X253?130?129?NDRDIODE_1
X252?129?145?NDRDIODE?0
X251?129?144?NDRDIODE_0
X250?143?129?NDRDIODE_1
X249?128?129?NDRDIODE_1
X248?143?128?NDRDIODE_0
X246?3?125?NDRDIODE_1
X245?124?125?NDRDIODE_0
X244?3?124?NDRDIODE_0
X243?124?139?NDRDIODE_1
X242?138?124?NDRDIODE_1
X241?124?123?NDRDIODE_1
X240?138?123?NDRDIODE_0
X239?122?123?NDRDIODE_0
X238?122?138?NDRDIODE_1
X237?122?137?NDRDIODE_0
X236?136?122?NDRDIODE_0
X235?121?122?NDRDIODE_0
X234?121?136?NDRDIODE_0
X233?121?120?NDRDIODE_1
X232?136?120?NDRDIODE_1
X231?120?135?NDRDIODE_1
X230?120?134?NDRDIODE_1
X229?120?119?NDRDIODE_1
X228?134?119?NDRDIODE_0
X227?115?116?NDRDIODE_1
X226?115?130?NDRDIODE_0
X225?114?115?NDRDIODE_1
X224?114?130?NDRDIODE_0
X223?129?114?NDRDIODE_0
X222?114?128?NDRDIODE_1
X221?113?114?NDRDIODE_0
X220?113?128?NDRDIODE_1
X219?112?113?NDRDIODE_1
X218?112?128?NDRDIODE_0
X217?112?8?NDRDIODE_0
X216?111?8?NDRDIODE_0
X215?112?111?NDRDIODE_1
X214?2?125?NDRDIODE_0
X213?2?109?NDRDIODE_0
X212?125?109?NDRDIODE_0
X211?109?124?NDRDIODE_1
X210?109?123?NDRDIODE_0
X209?108?109?NDRDIODE_1
X208?123?108?NDRDIODE_0
X207?121?106?NDRDIODE_1
X206?106?105?NDRDIODE_1
X205?121?105?NDRDIODE_0
X204?120?105?NDRDIODE_1
X203?119?105?NDRDIODE_0
X202?105?104?NDRDIODE_0
X201?119?104?NDRDIODE_0
X200?104?103?NDRDIODE_0
X199?103?119?NDRDIODE_0
X198?102?103?NDRDIODE_0
X197?101?102?NDRDIODE_1
X196?101?116?NDRDIODE_1
X195?115?101?NDRDIODE_0
X194?99?115?NDRDIODE_1
X193?114?99?NDRDIODE_1
X192?113?99?NDRDIODE_0
X191?97?113?NDRDIODE_0
X190?112?97?NDRDIODE_0
X189?111?97?NDRDIODE_0
X188?111?7?NDRDIODE_1
X187?97?7?NDRDIODE_0
X185?2?94?NDRDIODE_0
X184?2?94?NDRDIODE_1
X183?94?109?NDRDIODE_1
X182?94?108?NDRDIODE_1
X181?93?94?NDRDIODE_0
X180?93?108?NDRDIODE_1
X179?93?92?NDRDIODE_1
X178?108?92?NDRDIODE_0
X177?106?92?NDRDIODE_0
X176?106?90?NDRDIODE_0
X175?105?90?NDRDIODE_0
X174?90?104?NDRDIODE_1
X173?89?90?NDRDIODE_1
X172?104?89?NDRDIODE_1
X171?89?88?NDRDIODE_0
X170?88?104?NDRDIODE_1
X169?103?88?NDRDIODE_1
X168?88?102?NDRDIODE_0
X167?87?88?NDRDIODE_1
X166?87?102?NDRDIODE_1
X165?86?87?NDRDIODE_0
X164?86?102?NDRDIODE_0
X163?101?86?NDRDIODE_0
X162?86?85?NDRDIODE_1
X161?84?85?NDRDIODE_1
X160?84?99?NDRDIODE_1
X159?84?83?NDRDIODE_1
X158?83?82?NDRDIODE_1
X157?82?97?NDRDIODE_1
X156?82?7?NDRDIODE_1
X154?7?82?NDRDIODE_1
X152?1?79?NDRDIODE_1
X151?2?79?NDRDIODE_1
X150?94?79?NDRDIODE_1
X149?93?79?NDRDIODE_0
X148?78?79?NDRDIODE_1
X147?78?93?NDRDIODE_0
X146?78?77?NDRDIODE_1
X145?77?93?NDRDIODE_0
X144?92?77?NDRDIODE_1
X143?77?76?NDRDIODE_1
X142?76?75?NDRDIODE_1
X141?90?75?NDRDIODE_1
X140?75?89?NDRDIODE_0
X139?74?75?NDRDIODE_1
X138?74?89?NDRDIODE_1
X137?87?72?NDRDIODE_0
X136?72?71?NDRDIODE_0
X135?87?71?NDRDIODE_1
X134?71?86?NDRDIODE_1
X133?71?85?NDRDIODE_0
X132?70?71?NDRDIODE_0
X131?85?70?NDRDIODE_1
X130?70?69?NDRDIODE_0
X129?85?69?NDRDIODE_1
X128?69?84?NDRDIODE_0
X127?69?83?NDRDIODE_1
X126?68?69?NDRDIODE_0
X125?83?68?NDRDIODE_0
X124?68?67?NDRDIODE_0
X123?83?67?NDRDIODE_0
X122?67?82?NDRDIODE_1
X121?7?67?NDRDIODE_0
X119?6?67?NDRDIODE_1
X117?64?1?NDRDIODE_1
X116?64?1?NDRDIODE_0
X115?79?64?NDRDIODE_0
X114?64?78?NDRDIODE_0
X113?63?64?NDRDIODE_0
X112?78?63?NDRDIODE_1
X111?63?62?NDRDIODE_0
X110?78?62?NDRDIODE_1
X109?62?77?NDRDIODE_1
X108?62?76?NDRDIODE_1
X107?62?61?NDRDIODE_0
X106?76?61?NDRDIODE_0
X105?60?61?NDRDIODE_0
X104?76?60?NDRDIODE_0
X103?60?75?NDRDIODE_1
X102?74?60?NDRDIODE_1
X101?59?60?NDRDIODE_1
X100?59?74?NDRDIODE_1
X99?59?58?NDRDIODE_0
X98?58?74?NDRDIODE_0
X97?72?58?NDRDIODE_0
X96?57?58?NDRDIODE_1
X95?72?57?NDRDIODE_1
X94?56?57?NDRDIODE_1
X93?72?56?NDRDIODE_1
X92?56?71?NDRDIODE_0
X91?56?70?NDRDIODE_0
X90?56?55?NDRDIODE_0
X89?55?70?NDRDIODE_0
X88?54?55?NDRDIODE_1
X87?70?54?NDRDIODE_0
X86?69?54?NDRDIODE_1
X85?54?68?NDRDIODE_1
X84?54?53?NDRDIODE_0
X83?68?53?NDRDIODE_0
X82?52?53?NDRDIODE_0
X81?68?52?NDRDIODE_0
X80?67?52?NDRDIODE_1
X79?52?6?NDRDIODE_1
X77?6?52?NDRDIODE_1
X76?1?50?NDRDIODE_0
X75?50?49?NDRDIODE_0
X74?49?1?NDRDIODE_1
X73?64?49?NDRDIODE_1
X72?63?49?NDRDIODE_1
X71?15?49?NDRDIODE_0
X70?15?63?NDRDIODE_1
X69?15?47?NDRDIODE_1
X68?63?47?NDRDIODE_1
X67?62?47?NDRDIODE_0
X66?47?61?NDRDIODE_0
X65?47?14?NDRDIODE_1
X64?61?14?NDRDIODE_0
X62?14?61?NDRDIODE_1
X61?60?14?NDRDIODE_0
X60?14?59?NDRDIODE_1
X59?14?44?NDRDIODE_1
X58?44?59?NDRDIODE_1
X57?13?44?NDRDIODE_1
X56?13?59?NDRDIODE_1
X55?13?58?NDRDIODE_0
X54?13?57?NDRDIODE_1
X53?13?42?NDRDIODE_1
X52?57?42?NDRDIODE_0
X51?12?42?NDRDIODE_1
X50?57?12?NDRDIODE_0
X49?12?56?NDRDIODE_1
X48?55?12?NDRDIODE_1
X46?12?55?NDRDIODE_1
X45?12?39?NDRDIODE_0
X44?55?39?NDRDIODE_1
X43?39?54?NDRDIODE_0
X42?53?39?NDRDIODE_1
X41?11?39?NDRDIODE_1
X40?11?53?NDRDIODE_0
X39?37?11?NDRDIODE_0
X38?53?37?NDRDIODE_0
X37?37?52?NDRDIODE_0
X36?6?37?NDRDIODE_0
X35?35?50?NDRDIODE_0
X34?35?34?NDRDIODE_1
X33?50?34?NDRDIODE_1
X32?34?49?NDRDIODE_0
X31?15?34?NDRDIODE_1
X30?32?15?NDRDIODE_0
X29?32?47?NDRDIODE_1
X28?32?14?NDRDIODE_1
X27?32?14?NDRDIODE_1
X22?44?14?NDRDIODE_0
X21?14?29?NDRDIODE_1
X20?29?44?NDRDIODE_0
X19?13?29?NDRDIODE_0
X18?44?13?NDRDIODE_1
X16?13?42?NDRDIODE_0
X15?13?27?NDRDIODE_1
X14?42?27?NDRDIODE_1
X13?27?12?NDRDIODE_0
X12?12?42?NDRDIODE_1
X7?12?24?NDRDIODEE_0
X6?12?24?NDRDIODE_1
X5?39?24?NDRDIODE_0
X4?11?24?NDRDIODE_0
X3?11?24?NDRDIODE_0
.SUBCKT?NDRDIODE_1?IN?OUT
G1?IN?OUT?PWL(1)IN?OUT-1V,-1n-.8V,-1n-.625V,-760n?0V,0n
.625V,760n.8V,1n?1V,1n?SMOOTH=1
.ENDS
.SUBCKT?NDRDIODE_0?IN?OUT
G1?IN?OUT?PWL(1)IN?OUT-2V,-.8n-1V,-.8n-.75V,-.55n-.5V,-.21n
0V,0n.5V,.21n.75V,.55n?1V,.8n?2V,.8n?SMOOTH=1
.ENDS
.END
Phase inverter connects table
Moletronics
.OPTIONS?RELTOL=.01?ITL4=10?SCALE=1?POST?METHOD=Gear?DCSTEP=10
.OPTIONS?ACCT=0?INGOLD=1?NOMOD?PROBE
.TRAN?10000n?60000n
ROut1?1?0?1
.PRINT?TRAN?I(Rout1)
C1?1?0?10f
C2?2?0?10f
C3?3?0?10f
C4?4?0?10f
C5?5?0?10f
C6?6?0?10f
C7?7?0?10f
C8?8?0?10f
C9?9?0?10f
C10?10?0?10f
C11?11?0?10f
C12?12?0?10f
C13?13?0?10f
C14?14?0?10f
VInputA15?15?0?PWL(0n,0V?20000n,0V?20001n,0.5V?30000n,0.5V?30001n,2V
40000n,2V
+40001n,0.5V?50000n,0.5V?50001n,0.5V?60000n,0.5V)
.PRINT?TRAN?15
C15?15?0?10f
C16?16?0?10f
C17?17?0?10f
C18?18?0?10f
C19?19?0?10f
C20?20?0?10f
C24?24?0?5f
C27?27?0?5f
C29?29?0?5f
C32?32?0?5f
C34?34?0?5f
C35?35?0?5f
C37?37?0?5f
C39?39?0?5f
C42?42?0?5f
C44?44?0?5f
C47?47?0?5f
C49?49?0?5f
C50?50?0?5f
C52?52?0?5f
C53?53?0?5f
C54?54?0?5f
C55?55?0?5f
C56?56?0?5f
C57?57?0?5f
C58?58?0?5f
C59?59?0?5f
C60?60?0?5f
C61?61?0?5f
C62?62?0?5f
C63?63?0?5f
C64?64?0?5f
C67?67?0?5f
C68?68?0?5f
C69?69?0?5f
C70?70?0?5f
C71?71?0?5f
C72?72?0?5f
C74?74?0?5f
C75?75?0?5f
C76?76?0?5f
C77?77?0?5f
C78?78?0?5f
C79?79?0?5f
C82?82?0?5f
C83?83?0?5f
C84?84?0?5f
C85?85?0?5f
C86?86?0?5f
C87?87?0?5f
C88?88?0?5f
C89?89?0?5f
C90?90?0?5f
C92?92?0?5f
C93?93?0?5f
C94?94?0?5f
C97?97?0?5f
C99?99?0?5f
C101?101?0?5f
C102?102?0?5f
C103?103?0?5f
C104?104?0?5f
C105?105?0?5f
C106?106?0?5f
C108?108?0?5f
C109?109?0?5f
C111?111?0?5f
C112?112?0?5f
C113?113?0?5f
C114?114?0?5f
C115?115?0?5f
C116?116?0?5f
C119?119?0?5f
C120?120?0?5f
C121?121?0?5f
C122?122?0?5f
C123?123?0?5f
C124?124?0?5f
C125?125?0?5f
C128?128?0?5f
C129?129?0?5f
C130?130?0?5f
C131?131?0?5f
C132?132?0?5f
C133?133?0?5f
C134?134?0?5f
C135?135?0?5f
C136?136?0?5f
C137?137?0?5f
C138?138?0?5f
C139?139?0?5f
C142?142?0?5f
C143?143?0?5f
C144?144?0?5f
C145?145?0?5f
C146?146?0?5f
C147?147?0?5f
C149?149?0?5f
C150?150?0?5f
C151?151?0?5f
C152?152?0?5f
C153?153?0?5f
C154?154?0?5f
C157?157?0?5f
C158?158?0?5f
C159?159?0?5f
C160?160?0?5f
C161?161?0?5f
C162?162?0?5f
C163?163?0?5f
C164?164?0?5f
C165?165?0?5f
C166?166?0?5f
C167?167?0?5f
C168?168?0?5f
C169?169?0?5f
C172?172?0?5f
C173?173?0?5f
C175?175?0?5f
C176?176?0?5f
C178?178?0?5f
C179?179?0?5f
C180?180?0?5f
C181?181?0?5f
C182?182?0?5f
C183?183?0?5f
C184?184?0?5f
C186?186?0?5f
C187?187?0?5f
C188?188?0?5f
C190?190?0?5f
C191?191?0?5f
C192?192?0?5f
C193?193?0?5f
C194?194?0?5f
C195?195?0?5f
C196?196?0?5f
C197?197?0?5f
C198?198?0?5f
C199?199?0?5f
C200?200?0?5f
C202?202?0?5f
C203?203?0?5f
C204?204?0?5f
C205?205?0?5f
C206?206?0?5f
C207?207?0?5f
C208?208?0?5f
C209?209?0?5f
C210?210?0?5f
C212?212?0?5f
C214?214?0?5f
C217?217?0?5f
C219?219?0?5f
C222?222?0?5f
C224?224?0?5f
C229?229?0?5f
C231?231?0?5f
C232?232?0?5f
C234?234?0?5f
C237?237?0?5f
C239?239?0?5f
C242?242?0?5f
C244?244?0?5f
X512?20?244?NDRDIODE_0
X511?242?20?NDRDIODE_0
X510?19?242?NDRDIODE_1
X508?239?19?NDRDIODE_1
X507?18?239?NDRDIODE_1
X506?237?18?NDRDIODE_0
X505?237?17?NDRDIODE_1
X503?234?17?NDRDIODE_0
X502?234?16?NDRDIODE_0
X501?16?232?NDRDIODE_1
X500?232?231?NDRDIODE_0
X499?5?229?NDRDIODE_0
X498?229?244?NDRDIODE_0
X497?20?229?NDRDIODE_0
X496?20?229?NDRDIODE_0
X490?239?19?NDRDIODE_1
X489?224?19?ND?RDIODE_1
X488?224?239?NDRDIODE_1
X487?18?224?NDRDIODE_1
X486?18?239?NDRDIODE_0
X484?18?237?NDRDIODE_1
X483?222?18?NDRDIODE_1
X482?237?222?NDRDIODE_0
X481?222?17?NDRDIODE_0
X480?237?17?NDRDIODE_0
X475?219?17?NDRDIODE_1
X474?219?17?NDRDIODE_0
X473?219?234?NDRDIODE_1
X472?219?16?NDRDIODE_0
X471?16?219?NDRDIODE_0
X469?217?16?NDRDIODE_1
X468?217?16?NDRDIODE_0
X467?217?232?NDRDIODE_0
X466?217?231?NDRDIODE_0
X465?10?231?NDRDIODE_1
X464?10?217?NDRDIODE_0
X462?214?5?NDRDIODE_0
X461?214?5?NDRDIODE_1
X460?214?229?NDRDIODE_1
X459?214?20?NDRDIODE_0
X458?212?20?NDRDIODE_0
X457?212?19?NDRDIODE_1
X456?210?19?NDRDIODE_1
X455?19?210?NDRDIODE_0
X454?210?224?NDRDIODE_1
X453?210?209?NDRDIODE_1
X452?209?224?NDRDIODE_1
X451?209?208?NDRDIODE_1
X450?224?208?NDRDIODE_0
X449?18?208?NDRDIODE_1
X448?222?208?NDRDIODE_0
X447?207?208?NDRDIODE_1
X446?222?207?NDRDIODE_0
X445?207?206?NDRDIODE_0
X444?206?222?NDRDIODE_1
X443?206?17?NDRDIODE_0
X442?206?17?NDRDIODE_1
X441?206?205?NDRDIODE_1
X440?205?17?NDRDIODE_0
X439?204?205?NDRDIODE_0
X438?17?204?NDRDIODE_0
X437?204?219?NDRDIODE_1
X436?16?204?NDRDIODE_1
X435?203?204?NDRDIODE_0
X434?203?16?NDRDIODE_1
X433?203?202?NDRDIODE_1
X432?16?202?NDRDIODE_1
X431?217?202?NDRDIODE_0
X430?202?10?NDRDIODE_0
X428?10?202?NDRDIODE_1
X427?200?5?NDRDIODE_0
X426?199?200?NDRDIODE_0
X425?199?5?NDRDIODE_1
X424?199?214?NDRDIODE_0
X423?199?198?NDRDIODE_1
X422?197?198?NDRDIODE_0
X421?212?197?NDRDIODE_1
X420?196?197?NDRDIODE_0
X419?195?196?NDRDIODE_1
X418?195?210?NDRDIODE_0
X417?195?209?NDRDIODE_0
X416?194?195?NDRDIODE_0
X415?194?209?NDRDIODE_0
X414?194?193?NDRDIODE_1
X413?193?209?NDRDIODE_1
X412?193?208?NDRDIODE_0
X411?207?193?NDRDIODE_0
X410?193?192?NDRDIODE_0
X409?207?192?NDRDIODE_0
X408?191?192?NDRDIODE_1
X407?207?191?NDRDIOD_1
X406?191?206?NDRDIODE_1
X405?205?191?NDRDIOD_0
X404?190?191?NDRDIODE_1
X403?205?190?NDRDIODE_0
X402?188?203?NDRDIODE_1
X401?188?187?NDRDIODE_0
X400?187?203?NDRDIODE_1
X399?202?187?NDRDIODE_1
X398?10?187?NDRDIODE_1
X397?186?10?NDRDIODE_1
X396?187?186?NDRDIODE_0
X395?200?4?NDRDIODE_1
X394?4?184?NDRDIODE_0
X393?184?200?NDRDIODE_1
X392?184?199?NDRDIODE_1
X391?184?198?NDRDIODE_0
X390?183?184?NDRDIODE_0
X389?198?183?NDRDIODE_1
X388?183?182?NDRDIODE_0
X387?182?198?NDRDIODE_0
X386?197?182?NDRDIODE_0
X385?182?196?NDRDIODE_0
X384?182?181?NDRDIODE_0
X383?196?181?NDRDIODE_1
X382?181?180?NDRDIODE_1
X381?196?180?NDRDIODE_1
X380?195?180?NDRDIODE_0
X379?194?180?NDRDIODE_1
X378?179?180?NDRDIODE_1
X377?179?194?NDRDIODE_1
X376?179?178?NDRDIODE_0
X375?178?194?NDRDIODE_1
X374?178?193?NDRDIODE_1
X373?192?178?NDRDIODE_1
X372?192?176?NDRDIODE_1
X371?191?176?NDRDIODE_0
X370?190?176?NDRDIODE_0
X369?175?176?NDRDIODE_1
X368?190?175?NDRDIODE_0
X367?188?173?NDRDIODE_1
X366?173?172?NDRDIODE_0
X365?188?172?NDRDIODE_1
X364?172?187?NDRDIODE_1
X363?172?186?NDRDIODE_1
X362?186?9?NDRDIODE_0
X361?9?172?NDRDIODE_1
X359?169?4?NDRDIODE_1
X358?169?4?NDRDIODE_1
X357?184?169?NDRDIODE_0
X356?183?169?NDRDIODE_1
X355?168?169?NDRDIODE_1
X354?183?168?NDRDIODE_0
X353?167?168?NDRDIODE_1
X352?167?183?NDRDIODE_0
X351?167?182?NDRDIODE_1
X350?181?167?NDRDIODE_1
X349?167?166?NDRDIODE_1
X348?181?166?NDRDIODE_1
X347?165?166?NDRDIODE_1
X346?181?165?NDRDIODE_1
X345?165?180?NDRDIODE_0
X344?179?165?NDRDIODE_0
X343?165?164?NDRDIODE_1
X342?179?164?NDRDIODE_1
X341?164?163?NDRDIODE_0
X340?179?163?NDRDIODE_0
X339?178?163?NDRDIODE_0
X338?162?163?NDRDIODE_1
X337?162?161?NDRDIODE_0
X336?161?176?NDRDIODE_1
X335?161?175?NDRDIODE_0
X334?161?160?NDRDIODE_1
X333?175?160?NDRDIODE_1
X332?160?159?NDRDIODE_1
X331?159?175?NDRDIODE_0
X330?173?159?NDRDIODE_0
X329?158?159?NDRDIODE_1
X328?158?173?NDRDIODE_1
X327?158?157?NDRDIODE_1
X326?157?173?NDRDIODE_1
X325?157?172?NDRDIODE_1
X324?157?9?NDRDIODE_1
X322?157?9?NDRDIODE_0
X320?3?154?NDRDIODE_1
X319?154?4?NDRDIODE_0
X318?154?169?NDRDIODE_1
X317?168?154?NDRDIODE_1
X316?153?154?NDRDIODE_1
X315?168?153?NDRDIODE_0
X314?152?153?NDRDIODE_0
X313?152?168?NDRDIODE_0
X312?152?167?NDRDIODE_0
X311?152?166?NDRDIODE_0
X310?152?151?NDRDIODE_0
X309?151?166?NDRDIODE_0
X308?150?151?NDRDIODE_0
X307?166?150?NDRDIODE_1
X306?165?150?NDRDIODE_0
X305?164?150?NDRDIODE_0
X304?150?149?NDRDIODE_0
X303?149?164?NDRDIODE_0
X302?147?162?NDRDIODE_0
X301?147?146?NDRDIODE_0
X300?162?146?NDRDIODE_0
X299?146?161?NDRDIODE_0
X298?146?160?NDRDIODE_0
X297?145?146?NDRDIODE_1
X296?145?160?NDRDIODE_1
X295?144?145?NDRDIODE_1
X294?160?144?NDRDIODE_1
X293?144?159?NDRDIODE_0
X292?144?158?NDRDIODE_0
X291?143?144?NDRDIODE_0
X290?158?143?NDRDIODE_1
X289?143?142?NDRDIODE_1
X288?158?142?NDRDIODE_0
X287?157?142?NDRDIODE_1
X286?9?142?NDRDIODE_0
X284?8?142?NDRDIODE_0
X282?139?3?NDRDIODE_1
X281?3?139?NDRDIODE_0
X280?139?154?NDRDIODE_1
X279?139?153?NDRDIODE_0
X278?139?138?NDRDIODE_0
X277?138?153?NDRDIODE_1
X276?137?138?NDRDIODE_1
X275?137?153?NDRDIODE_1
X274?152?137?NDRDIODE_1
X273?151?137?NDRDIODE_1
X272?136?137?NDRDIODE_0
X271?136?151?NDRDIODE_0
X270?136?135?NDRDIODE_0
X269?151?135?NDRDIODE_1
X268?150?135?NDRDIODE_0
X267?149?135?NDRDIODE_0
X266?135?134?NDRDIODE_1
X265?134?149?NDRDIODE_0
X264?134?133?NDRDIODE_1
X263?133?149?NDRDIODE_1
X262?133?147?NDRDIODE_1
X261?132?133?NDRDIODE_0
X260?147?132?NDRDIODE_0
X259?131?132?NDRDIODE_0
X258?147?131?NDRDIODE_0
X257?146?131?NDRDIODE_0
X256?131?145?NDRDIODE_1
X255?131?130?NDRDIODE_0
X254?145?130?NDRDIODE_0
X253?130?129?NDRDIODE_1
X252?129?145?NDRDIODE_1
X251?129?144?NDRDIODE_0
X250?143?129?NDRDIODE_1
X249?128?129?NDRDIODE_0
X248?143?128?NDRDIODE_0
X246?3?125?NDRDIODE_0
X245?124?125?NDRDIODE_0
X244?3?124?NDRDIODE_0
X243?124?139?NDRDIODE_1
X242?138?124?NDRDIODE_1
X241?124?123?NDRDIODE_0
X240?138?123?NDRDIODE_1
X239?122?123?NDRDIODE_0
X238?122?138?NDRDIODE_0
X237?122?137?NDRDIODE_1
X236?136?122?NDRDIODE_1
X235?121?12?2NDRDIODE_1
X234?121?136?NDRDIODE_0
X233?121?120?NDRDIODE_1
X232?136?120?NDRDIODE_1
X231?120?135?NDRDIODE_1
X230?120?134?NDRDIODE_1
X229?120?119?NDRDIODE_0
X228?134?119?NDRDIODE_0
X227?115?116?NDRDIODE_0
X226?115?130?NDRDIODE_1
X225?114?115?NDRDIODE_1
X224?114?130?NDRDIODE_0
X223?129?114?NDRDIODE_0
X222?114?128?NDRDIODE_1
X221?113?114?NDRDIODE_0
X220?113?128?NDRDIODE_0
X219?112?113?NDRDIODE_1
X218?112?128?NDRDIODE_1
X217?112?8?NDRDIODE_1
X216?111?8?NDRDIODE_1
X215?112?111?NDRDIODE_0
X214?2?125?NDRDIODE_0
X213?2?109?NDRDIODE_0
X212?125?109?NDRDIODE_0
X211?109?124?NDRDIODE_1
X210?109?123?NDRDIODE_0
X209?108?109?NDRDIODE_0
X208?123?108?NDRDIODE_1
X207?121?106?NDRDIODE_0
X206?106?105?NDRDIODE_0
X205?121?105?NDRDIODE_0
X204?120?105?NDRDIODE_1
X203?119?105?NDRDIODE_0
X202?105?104?NDRDIODE_0
X201?119?104?NDRDIODE_0
X200?104?103?NDRDIODE_0
X199?103?119?NDRDIODE_1
X198?102?103?NDRDIODE_0
X197?101?102?NDRDIODE_1
X196?101?116?NDRDIODE_1
X195?115?101?NDRDIODE_1
X194?99?115?NDRDIODE_0
X193?114?99?NDRDIODE_0
X192?113?99?NDRDIODE_1
X191?97?113?NDRDIODE_0
X190?112?97?NDRDIODE_1
X189?111?97?NDRDIODE_1
X188?111?7?NDRDIODE_1
X187?97?7?NDRDIODE_1
X185?2?94?NDRDIODE_1
X184?2?94?NDRDIODE_0
X183?94?109?NDRDIODE_0
X182?94?108?NDRDIODE_0
X181?93?94?NDRDIODE_0
X180?93?108?NDRDIODE_0
X179?93?92?NDRDIODE_1
X178?108?92?NDRDIODE_0
X177?106?92?NDRDIODE_0
X176?106?90?NDRDIODE_0
X175?105?90?NDRDIODE_0
X174?90?104?NDRDIODE_1
X173?89?90?NDRDIODE_0
X172?104?89?NDRDIODE_1
X171?89?88?NDRDIODE_1
X170?88?104?NDRDIODE_0
X169?103?88?NDRDIODE_0
X168?88?102?NDRDIODE_1
X167?87?88?NDRDIODE_0
X166?87?102?NDRDIODE_0
X165?86?87?NDRDIODE_1
X164?86?102?NDRDIODE_1
X163?101?86?NDRDIODE_0
X162?86?85?NDRDIODE_1
X161?84?85?NDRDIODE_0
X160?84?99?NDRDIODE_0
X159?84?83?NDRDIODE_0
X158?83?82?NDRDIODE?0
X157?82?97?NDRDIODE_1
X156?82?7?NDRDIODE?0
X154?7?82?NDRDIODE_1
X152?1?79?NDRDIODE_0
X151?2?79?NDRDIODE_0
X150?94?79?NDRDIODE_1
X149?93?79?NDRDIODE_0
X148?78?79?NDRDIODE_1
X147?78?93?NDRDIODE_0
X146?78?77?NDRDIODE_0
X145?77?93?NDRDIODE_0
X144?92?77?NDRDIODE_0
X143?77?76?NDRDIODE_0
X142?76?75?NDRDIODE_0
X141?90?75?NDRDIODE_1
X140?75?89?NDRDIODE_1
X139?74?75?NDRDIODE_1
X138?74?89?NDRDIODE?1
X137?87?72?NDRDIODE_0
X136?72?71?NDRDIODE_0
X135?87?71?NDRDIODE_0
X134?71?86?NDRDIODE_0
X133?71?85?NDRDIODE_1
X132?70?71?NDRDIODE_1
X131?85?70?NDRDIODE_0
X130?70?69?NDRDIODE_1
X129?85?69?NDRDIODE_1
X128?69?84?NDRDIODE_1
X127?69?83?NDRDIODE_1
X126?68?69?NDRDIODE_1
X125?83?68?NDRDIODE_0
X124?68?67?NDRDIODE_1
X123?83?67?NDRDIODE_0
X122?67?82?NDRDIODE_0
X121?7?67?NDRDIODE_1
X119?6?67?NDRDIODE_1
X117?64?1?NDRDIODE_1
X116?64?1?NDRDIODE_0
X115?79?64?NDRDIODE_0
X114?64?78?NDRDIODE_0
X113?63?64?NDRDIODE_1
X112?78?63?NDRDIODE_0
X111?63?62?NDRDIODE_1
X110?78?62?NDRDIODE_1
X109?62?77?NDRDIODE_0
X108?62?76?NDRDIODE_0
X107?62?61?NDRDIODE_0
X106?76?61?NDRDIODE_1
X105?60?61?NDRDIODE_1
X104?76?60?NDRDIODE_1
X103?60?75?NDRDIODE_1
X102?74?60?NDRDIODE_0
X101?59?60?NDRDIODE_0
X100?59?74?NDRDIODE_1
X99?59?58?NDRDIODE_1
X98?58?74?NDRDIODE_1
X97?72?58?NDRDIODE_0
X96?57?58?NDRDIODE_0
X95?72?57?NDRDIODE_1
X94?56?57?NDRDIODE_0
X93?72?56?NDRDIODE_1
X92?56?71?NDRDIODE_1
X91?56?70?NDRDIODE_0
X90?56?55?NDRDIODE_0
X89?55?70?NDRDIODE_1
X88?54?55?NDRDIODE_1
X87?70?54?NDRDIODE_1
X86?69?54?NDRDIODE_1
X85?54?68?NDRDIODE_1
X84?54?53?NDRDIODE_1
X83?68?53?NDRDIODE_1
X82?52?53?NDRDIODE_0
X81?68?52?NDRDIODE_1
X80?67?52?NDRDIODE_1
X79?52?6?NDRDIODE_1
X77?6?52?NDRDIODE_0
X76?1?50?NDRDIODE_1
X75?50?49?NDRDIODE_1
X74?49?1?NDRDIODE_1
X73?64?49?NDRDIODE_0
X72?63?49?NDRDIODE_0
X71?15?49?NDRDIODE_1
X70?15?63?NDRDIODE_1
X69?15?47?NDRDIODE_0
X68?63?47?NDRDIODE_1
X67?62?47?NDRDIODE_1
X66?47?61?NDRDIODE_1
X65?47?14?NDRDIODE_1
X64?61?14?NDRDIODE_1
X62?14?61?NDRDIODE_0
X61?60?14?NDRDIODE_1
X60?14?59?NDRDIODE_1
X59?14?44?NDRDIODE_0
X58?44?59?NDRDIODE_1
X57?13?44?NDRDIODE_1
X56?13?59?NDRDIODE_1
X55?13?58?NDRDIODE_1
X54?13?57?NDRDIODE_0
X53?13?42?NDRDIODE_1
X52?57?42?NDRDIODE_0
X51?12?42?NDRDIODE_1
X50?57?12?NDRDIODE_0
X49?12?56?NDRDIODE_1
X48?55?12?NDRDIODE_0
X46?12?55?NDRDIODE_0
X45?12?39?NDRDIODE_0
X44?55?39?NDRDIODE_0
X43?39?54?NDRDIODE_1
X42?53?39?NDRDIODE_1
X41?11?39?NDRDIODE_0
X40?11?53?NDRDIODE_0
X39?37?11?NDRDIODE_0
X38?53?37?NDRDIODE_1
X37?37?52?NDRDIODE_1
X36?6?37?NDRDIODE_0
X35?35?50?NDRDIODE_1
X34?35?34?NDRDIODE_1
X33?50?34?NDRDIODE_0
X32?34?49?NDRDIODE_0
X31?15?34?NDRDIODE_0
X30?32?15?NDRDIODE_0
X29?32?47?NDRDIODE_0
X28?32?14?NDRDIODE_0
X27?32?14?NDRDIODE_0
X22?44?14?NDRDIODE_1
X21?14?29?NDRDIODE_0
X20?29?44?NDRDIODE_1
X19?13?29?NDRDIODE_0
X18?44?13?NDRDIODE_0
X16?13?42?NDRDIODE_0
X15?13?27?NDRDIODE_0
X14?42?27?NDRDIODE_1
X13?27?12?NDRDIODE_0
X12?12?42?NDRDIODE_1
X7?12?24?NDRDIODE_1
X6?12?24?NDRDIODE_1
X5?39?24?NDRDIODE_1
X4?11?24?NDRDIODE_0
X3?11?24?NDRDIODE_1
.SUBCKT?NDRDIODE_1?IN?OUT
G1?IN?OUT?PWL(1)IN?OUT-1V,-1n-.8V,-1n-.625V,-760n?0V,0n
.625V,760n.8V,1n?1V,1n?SMOOTH=1
.ENDS
.SUBCKT?NDRDIODE_0?IN?OUT
G1?IN?OUT?PWL(1)IN?OUT-2V,-.8n-1V,-.8n-.75V,-.55n-.5V,-.21n
0V,0n.5V,.21n.75V,.55n?1V,.8n?2V,.8n?SMOOTH=1
.ENDS
.END
Nand connects table
Moletronics
.OPTIONS?RELTOL=.01?ITL4=10?SCALE=1?POST?METHOD=Gear?DCSTEP=10
.OPTIONS?ACCT=0?INGOLD=1?NOMOD?PROBE
.TRAN?10000n?100000n
ROut1?1?0?1
.PRINT?TRAN?I(Rout1)
C1?1?0?10f
VInputB2?2?0?PWL(0n,0V?20000n,0V?20001n,0.5V?30000n,0.5V?30001n,2V
40000n,2V
+40001n,0.5V?50000n,0.5V?50001n,0.5V?60000n,0.5V
+60001n,0.5V?70000n,0.5V?70001n,2V?80000n,2V
+80001n,0.5V?90000n,0.5V?90001n,0.5V?100000n,0.5V)
.PRINT?TRAN?2
C2?2?0?10f
C3?3?0?10f
C4?4?0?10f
C5?5?0?10f
C6?6?0?10f
C7?7?0?10f
C8?8?0?10f
C9?9?0?10f
C10?10?0?10f
C11?11?0?10f
C12?12?0?10f
C13?13?0?10f
C14?14?0?10f
VInputA15?15?0?PWL(0n,0V?20000n,0V?20001n,0.5V?30000n,0.5V
30001n,0.5V?40000n,0.5V
+40001n,0.5V?50000n,0.5V?50001n,2V?60000n,2V
+60001n,0.5V?70000n,0.5V?70001n,2V?80000n,2V
+80001n,0.5V?90000n,0.5V?90001n,0.5V?100000n,0.5V)
.PRINT?TRAN?15
C15?15?0?10f
C16?16?0?10f
C17?17?0?10f
C18?18?0?10f
C19?19?0?10f
C20?20?0?10f
C24?24?0?5f
C27?27?0?5f
C29?29?0?5f
C32?32?0?5f
C34?34?0?5f
C35?35?0?5f
C37?37?0?5f
C39?39?0?5f
C42?42?0?5f
C44?44?0?5f
C47?47?0?5f
C49?49?0?5f
C50?50?0?5f
C52?52?0?5f
C53?53?0?5f
C54?54?0?5f
C55?55?0?5f
C56?56?0?5f
C57?57?0?5f
C58?58?0?5f
C59?59?0?5f
C60?60?0?5f
C61?61?0?5f
C62?62?0?5f
C63?63?0?5f
C64?64?0?5f
C67?67?0?5f
C68?68?0?5f
C69?69?0?5f
C70?70?0?5f
C71?71?0?5f
C72?72?0?5f
C74?74?0?5f
C75?75?0?5f
C76?76?0?5f
C77?77?0?5f
C78?78?0?5f
C79?79?0?5f
C82?82?0?5f
C83?83?0?5f
C84?84?0?5f
C85?85?0?5f
C86?86?0?5f
C87?87?0?5f
C88?88?0?5f
C89?89?0?5f
C90?90?0?5f
C92?92?0?5f
C93?93?0?5f
C94?94?0?5f
C97?97?0?5f
C99?99?0?5f
C101?101?0?5f
C102?102?0?5f
C103?103?0?5f
C104?104?0?5f
C105?105?0?5f
C106?106?0?5f
C108?108?0?5f
C109?109?0?5f
C111?111?0?5f
C112?112?0?5f
C113?113?0?5f
C114?114?0?5f
C115?115?0?5f
C116?116?0?5f
C119?119?0?5f
C120?120?0?5f
C121?121?0?5f
C122?122?0?5f
C123?123?0?5f
C124?124?0?5f
C125?125?0?5f
C128?128?0?5f
C129?129?0?5f
C130?130?0?5f
C131?131?0?5f
C132?132?0?5f
C133?133?0?5f
C134?134?0?5f
C135?135?0?5f
C136?136?0?5f
C137?137?0?5f
C138?138?0?5f
C139?139?0?5f
C142?142?0?5f
C143?143?0?5f
C144?144?0?5f
C145?145?0?5f
C146?146?0?5f
C147?147?0?5f
C149?149?0?5f
C150?150?0?5f
C151?151?0?5f
C152?152?0?5f
C153?153?0?5f
C154?154?0?5f
C157?157?0?5f
C158?158?0?5f
C159?159?0?5f
C160?160?0?5f
C161?161?0?5f
C162?162?0?5f
C163?163?0?5f
C164?164?0?5f
C165?165?0?5f
C166?166?0?5f
C167?167?0?5f
C168?168?0?5f
C169?169?0?5f
C172?172?0?5f
C173?173?0?5f
C175?175?0?5f
C176?176?0?5f
C178?178?0?5f
C179?179?0?5f
C180?180?0?5f
C181?181?0?5f
C182?182?0?5f
C183?183?0?5f
C184?184?0?5f
C186?186?0?5f
C187?187?0?5f
C188?188?0?5f
C190?190?0?5f
C191?191?0?5f
C192?192?0?5f
C193?193?0?5f
C194?194?0?5f
C195?195?0?5f
C196?196?0?5f
C197?197?0?5f
C198?198?0?5f
C199?199?0?5f
C200?200?0?5f
C202?202?0?5f
C203?203?0?5f
C204?204?0?5f
C205?205?0?5f
C206?206?0?5f
C207?207?0?5f
C208?208?0?5f
C209?209?0?5f
C210?210?0?5f
C212?212?0?5f
C214?214?0?5f
C217?217?0?5f
C219?219?0?5f
C222?222?0?5f
C224?224?0?5f
C229?229?0?5f
C231?231?0?5f
C232?232?0?5f
C234?234?0?5f
C237?237?0?5f
C239?239?0?5f
C242?242?0?5f
C244?244?0?5f
X512?20?244?NDRDIODE_0
X511?242?20?NDRDIODE_0
X510?19?242?NDRDIODE_0
X508?239?19?NDRDIODE_0
X507?18?239?NDRDIODE_1
X506?237?18?NDRDIODE_1
X505?237?17?NDRDIODE_1
X503?234?17?NDRDIODE_1
X502?234?16?NDRDIODE_0
X501?16?232?NDRDIODE_1
X500?232?231?NDRDIODE_0
X499?5?229?NDRDIODE_0
X498?229?244?NDRDIODE_0
X497?20?229?NDRDIODE_0
X496?20?229?NDRDIODE_0
X490?239?19?NDRDIODE_0
X489?224?19?NDRDIODE_1
X488?224?239?NDRDIODE_1
X487?18?224?NDRDIODE_0
X486?18?239?NDRDIODE_0
X484?18?237?NDRDIODE_1
X483?222?18?NDRDIODE_0
X482?237?222?NDRDIODE_1
X481?222?17?NDRDIODE_0
X480?237?17?NDRDIODE_1
X475?219?17?NDRDIODE_0
X474?219?17?NDRDIODE_1
X473?219?234?NDRDIODE_1
X472?219?16?NDRDIODE_0
X471?16?219?NDRDIODE_0
X469?217?16?NDRDIODE_1
X468?217?16?NDRDIODE_0
X467?217?232?NDRDIODE_0
X466?217?231?NDRDIODE_0
X465?10?231?NDRDIODE_0
X464?10?217?NDRDIODE_0
X462?214?5?NDRDIODE_0
X461?214?5?NDRDIODE_1
X460?214?229?NDRDIODE_1
X459?214?20?NDRDIODE_1
X458?212?20?NDRDIODE_1
X457?212?19?NDRDIODE_1
X456?210?19?NDRDIODE_1
X455?19?210?NDRDIODE_0
X454?210?224?NDRDIODE_0
X453?210?209?NDRDIODE_1
X452?209?224?NDRDIODE_0
X451?209?208?NDRDIODE_0
X450?224?208?NDRDIODE_1
X449?18?208?NDRDIODE_0
X448?222?208?NDRDIODE_1
X447?207?208?NDRDIODE_1
X446?222?207?NDRDIODE_1
X445?207?206?NDRDIODE_1
X444?206?222?NDRDIODE_0
X443?206?17?NDRDIODE_0
X442?206?17?NDRDIODE_0
X441?206?205?NDRDIODE_0
X440?205?17?NDRDIODE_0
X439?204?205?NDRDIODE_1
X438?17?204?NDRDIODE_0
X437?204?219?NDRDIODE_0
X436?16?204?NDRDIODE_0
X435?203?204?NDRDIODE_0
X434?203?16?NDRDIODE_0
X433?203?202?NDRDIODE_1
X432?16?202?NDRDIODE_1
X431?217?202?NDRDIODE_0
X430?202?10?NDRDIODE_0
X428?10?202?NDRDIODE_1
X427?200?5?NDRDIODE_0
X426?199?200?NDRDIODE_1
X425?199?5?NDRDIODE_1
X424?199?214?NDRDIODE_1
X423?199?198?NDRDIODE_0
X422?197?198?NDRDIODE_1
X421?212?197?NDRDIODE_0
X420?196?197?NDRDIODE_0
X419?195?196?NDRDIODE_1
X418?195?210?NDRDIODE_1
X417?195?209?NDRDIODE_1
X416?194?195?NDRDIODE_1
X415?194?209?NDRDIODE_0
X414?194?193?NDRDIODE_0
X413?193?209?NDRDIODE_0
X412?193?208?NDRDIODE_1
X411?207?193?NDRDIODE_0
X410?193?192?NDRDIODE_1
X409?207?192?NDRDIODE_0
X408?191?192?NDRDIODE_0
X407?207?191?NDRDIODE_0
X406?191?206?NDRDIODE_1
X405?205?191?NDRDIODE_1
X404?190?191?NDRDIODE_1
X403?205?190?NDRDIODE_1
X402?188?203?NDRDIODE_1
X401?188?187?NDRDIODE_1
X400?187?203?NDRDIODE_1
X399?202?187?NDRDIODE_0
X398?10?187?NDRDIODE_0
X397?186?10?NDRDIODE_0
X396?187?186?NDRDIODE_1
X395?200?4?NDRDIODE_0
X394?4?184?NDRDIODE_1
X393?184?200?NDRDIODE_0
X392?184?199?NDRDIODE_1
X391?184?198?NDRDIODE_1
X390?183?184?NDRDIODE_1
X389?198?183?NDRDIODE_0
X388?183?182?NDRDIODE_0
X387?182?198?NDRDIODE_0
X386?197?182?NDRDIODE_0
X385?182?196?NDRDIODE_1
X384?182?181?NDRDIODE_0
X383?196?181?NDRDIODE_1
X382?181?180?NDRDIODE_1
X381?196?180?NDRDIODE_1
X380?195?180?NDRDIODE_0
X379?194?180?NDRDIODE_0
X378?179?180?NDRDIODE_0
X377?179?194?NDRDIODE_1
X376?179?178?NDRDIODE_1
X375?178?194?NDRDIODE_1
X374?178?193?NDRDIODE_1
X373?192?178?NDRDIODE_0
X372?192?176?NDRDIODE_0
X371?191?176?NDRDIODE_1
X370?190?176?NDRDIODE_1
X369?175?176?NDRDIODE_0
X368?190?175?NDRDIODE_0
X367?188?173?NDRDIODE_1
X366?173?172?NDRDIODE_1
X365?188?172?NDRDIODE_0
X364?172?187?NDRDIODE_0
X363?172?186?NDRDIODE_1
X362?186?9?NDRDIODE_0
X361?9?172?NDRDIODE_1
X359?169?4?NDRDIODE_0
X358?169?4?NDRDIODE_0
X357?184?169?NDRDIODE_1
X356?183?169?NDRDIODE_1
X355?168?169?NDRDIODE_1
X354?183?168?NDRDIODE_1
X353?167?168?NDRDIODE_1
X352?167?183?NDRDIODE_1
X351?167?182?NDRDIODE_1
X350?181?167?NDRDIODE_0
X349?167?166?NDRDIODE_0
X348?181?166?NDRDIODE_0
X347?165?166?NDRDIODE_1
X346?181?165?NDRDIODE_1
X345?165?180?NDRDIODE_0
X344?179?165?NDRDIODE_1
X343?165?164?NDRDIODE_0
X342?179?164?NDRDIODE_0
X341?164?163?NDRDIODE_0
X340?179?163?NDRDIODE_1
X339?178?163?NDRDIODE_1
X338?162?163?NDRDIODE_0
X337?162?161?NDRDIODE_0
X336?161?176?NDRDIODE_1
X335?161?175?NDRDIODE_0
X334?161?160?NDRDIODE_0
X333?175?160?NDRDIODE_0
X332?160?159?NDRDIODE_0
X331?159?175?NDRDIODE_0
X330?173?159?NDRDIODE_1
X329?158?159?NDRDIODE_0
X328?158?173?NDRDIODE_0
X327?158?157?NDRDIODE_0
X326?157?173?NDRDIODE_0
X325?157?172?NDRDIODE_1
X324?157?9?NDRDIODE_0
X322?157?9?NDRDIODE_1
X320?3?154?NDRDIODE_0
X319?154?4?NDRDIODE_0
X318?154?169?NDRDIODE_1
X317?168?154?NDRDIODE_1
X316?153?154?NDRDIODE_0
X315?168?153?NDRDIODE_0
X314?152?153?NDRDIODE_0
X313?152?168?NDRDIODE_1
X312?152?167?NDRDIODE_0
X311?152?166?NDRDIODE_1
X310?152?151?NDRDIODE_0
X309?151?166?NDRDIODE_1
X308?150?151?NDRDIODE_0
X307?166?150?NDRDIODE_1
X306?165?150?NDRDIODE_0
X305?164?150?NDRDIODE_1
X304?150?149?NDRDIODE_1
X303?149?164?NDRDIODE_1
X302?147?162?NDRDIODE_1
X301?147?146?NDRDIODE_1
X300?162?146?NDRDIODE_0
X299?146?161?NDRDIODE_0
X298?146?160?NDRDIODE_0
X297?145?146?NDRDIODE_1
X296?145?160?NDRDIODE_0
X295?144?145?NDRDIODE_0
X294?160?144?NDRDIODE_1
X293?144?159?NDRDIODE_0
X292?144?158?NDRDIODE_1
X291?143?144?NDRDIODE_0
X290?158?143?NDRDIODE_0
X289?143?142?NDRDIODE_0
X288?158?142?NDRDIODE_1
X287?157?142?NDRDIODE_0
X286?9?142?NDRDIODE_0
X284?8?142?NDRDIODE_1
X282?139?3?NDRDIODE_1
X281?3?139?NDRDIODE_1
X280?139?154?NDRDIODE_0
X279?139?153?NDRDIODE_1
X278?139?138?NDRDIODE_1
X277?138?153?NDRDIODE_1
X276?137?138?NDRDIODE_1
X275?137?153?NDRDIODE_1
X274?152?137?NDRDIODE_0
X273?151?137?NDRDIODE_0
X272?136?137?NDRDIODE_1
X271?136?151?NDRDIODE_1
X270?136?135?NDRDIODE_0
X269?151?135?NDRDIODE_1
X268?150?135?NDRDIODE_1
X267?149?135?NDRDIODE_1
X266?135?134?NDRDIODE_0
X265?134?149?NDRDIODE_1
X264?134?133?NDRDIODE_0
X263?133?149?NDRDIODE_0
X262?133?147?NDRDIODE_0
X261?132?133?NDRDIODE_1
X260?147?132?NDRDIODE_1
X259?131?132?NDRDIODE_1
X258?147?131?NDRDIODE_0
X257?146?131?NDRDIODE_1
X256?131?145?NDRDIODE_0
X255?131?130?NDRDIODE_0
X254?145?130?NDRDIODE_0
X253?130?129?NDRDIODE_1
X252?129?145?NDRDIODE_0
X251?129?144?NDRDIODE_1
X250?143?129?NDRDIODE_0
X249?128?129?NDRDIODE_1
X248?143?128?NDRDIODE_1
X246?3?125?NDRDIODE_1
X245?124?125?NDRDIODE_1
X244?3?124?NDRDIODE_1
X243?124?139?NDRDIODE_1
X242?138?124?NDRDIODE_0
X241?124?123?NDRDIODE_0
X240?138?123?NDRDIODE_0
X239?122?123?NDRDIODE_1
X238?122?138?NDRDIODE_1
X237?122?137?NDRDIODE_0
X236?136?122?NDRDIODE_1
X235?121?122?NDRDIODE_1
X234?121?136?NDRDIODE_1
X233?121?120?NDRDIODE_0
X232?136?120?NDRDIODE_1
X231?120?135?NDRDIODE_1
X230?120?134?NDRDIODE_0
X229?120?119?NDRDIODE_0
X228?134?119?NDRDIODE_0
X227?115?116?NDRDIODE_1
X226?115?130?NDRDIODE_0
X225?114?115?NDRDIODE_0
X224?114?130?NDRDIODE_0
X223?129?114?NDRDIODE_0
X222?114?128?NDRDIODE_1
X221?113?114?NDRDIODE_1
X220?113?128?NDRDIODE_0
X219?112?113?NDRDIODE_0
X218?112?128?NDRDIODE_0
X217?112?8?NDRDIODE_1
X216?111?8?NDRDIODE_1
X215?112?111?NDRDIODE_0
X214?2?125?NDRDIODE_1
X213?2?109?NDRDIODE_0
X212?125?109?NDRDIODE_1
X211?109?124?NDRDIODE_0
X210?109?123?NDRDIODE_1
X209?108?109?NDRDIODE_1
X208?123?108?NDRDIODE_0
X207?121?106?NDRDIODE_0
X206?106?105?NDRDIODE_1
X205?121?105?NDRDIODE_1
X204?120?105?NDRDIODE_0
X203?119?105?NDRDIODE_0
X202?105?104?NDRDIODE_0
X201?119?104?NDRDIODE_0
X200?104?103?NDRDIODE_1
X199?103?119?NDRDIODE_1
X198?102?103?NDRDIODE_1
X197?101?102?NDRDIODE_0
X196?101?116?NDRDIODE_1
X195?115?101?NDRDIODE_0
X194?99?115?NDRDIODE_1
X193?114?99?NDRDIODE_1
X192?113?99?NDRDIODE_0
X191?97?113?NDRDIODE_1
X190?112?97?NDRDIODE_1
X189?111?97?NDRDIODE_0
X188?111?7?NDRDIODE_1
X187?97?7?NDRDIODE_1
X185?2?94?NDRDIODE_1
X184?2?94?NDRDIODE_0
X183?94?109?NDRDIODE_1
X182?94?108?NDRDIODE_1
X181?93?94?NDRDIODE_0
X180?93?108?NDRDIODE_1
X179?93?92?NDRDIODE_0
X178?108?92?NDRDIODE_1
X177?106?92?NDRDIODE_0
X176?106?90?NDRDIODE_0
X175?105?90?NDRDIODE_1
X174?90?104?NDRDIODE_0
X173?89?90?NDRDIODE_0
X172?104?89?NDRDIODE_0
X171?89?88?NDRDIODE_0
X170?88?104?NDRDIODE_0
X169?103?88?NDRDIODE_0
X168?88?102?NDRDIODE_0
X167?87?88?NDRDIODE_0
X166?87?102?NDRDIODE_0
X165?86?87?NDRDIODE_0
X164?86?102?NDRDIODE_0
X163?101?86?NDRDIODE_1
X162?86?85?NDRDIODE_0
X161?84?85?NDRDIODE_1
X160?84?99?NDRDIODE_0
X159?84?83?NDRDIODE_1
X158?83?82?NDRDIODE_1
X157?82?97?NDRDIODE_1
X156?82?7?NDRDIODE_0
X154?7?82?NDRDIODE_0
X152?1?79?NDRDIODE_1
X151?2?79?NDRDIODE_1
X150?94?79?NDRDIODE_1
X149?93?79?NDRDIODE_0
X148?78?79?NDRDIODE_0
X147?78?93?NDRDIODE_1
X146?78?77?NDRDIODE_0
X145?77?93?NDRDIODE_0
X144?92?77?NDRDIODE_1
X143?77?76?NDRDIODE_0
X142?76?75?NDRDIODE_0
X141?90?75?NDRDIODE_0
X140?75?89?NDRDIODE_0
X139?74?75?NDRDIODE_0
X138?74?89?NDRDIODE_0
X137?87?72?NDRDIODE_1
X136?72?71?NDRDIODE_1
X135?87?71?NDRDIODE_0
X134?71?86?NDRDIODE_1
X133?71?85?NDRDIODE_0
X132?70?71?NDRDIODE_0
X131?85?70?NDRDIODE_1
X130?70?69?NDRDIODE_1
X129?85?69?NDRDIODE_0
X128?69?84?NDRDIODE_0
X127?69?83?NDRDIODE_1
X126?68?69?NDRDIODE_0
X125?83?68?NDRDIODE_1
X124?68?67?NDRDIODE_0
X123?83?67?NDRDIODE_0
X122?67?82?NDRDIODE_0
X121?7?67?NDRDIODE_0
X119?6?67?NDRDIODE_1
X117?64?1?NDRDIODE_1
X116?64?1?NDRDIODE_1
X115?79?64?NDRDIODE_1
X114?64?78?NDRDIODE_1
X113?63?64?NDRDIODE_1
X112?78?63?NDRDIODE_0
X111?63?62?NDRDIODE_0
X110?78?62?NDRDIODE_1
X109?62?77?NDRDIODE_1
X108?62?76?NDRDIODE_0
X107?62?61?NDRDIODE_0
X106?76?61?NDRDIODE_1
X105?60?61?NDRDIODE_0
X104?76?60?NDRDIODE_1
X103?60?75?NDRDIODE_0
X102?74?60?NDRDIODE_0
X101?59?60?NDRDIODE_0
X100?59?74?NDRDIODE_0
X99?59?58?NDRDIODE_0
X98?58?74?NDRDIODE_1
X97?72?58?NDRDIODE_1
X96?57?58?NDRDIODE_1
X95?72?57?NDRDIODE_1
X94?56?57?NDRDIODE_0
X93?72?56?NDRDIODE_1
X92?56?71?NDRDIODE_0
X91?56?70?NDRDIODE_1
X90?56?55?NDRDIODE_1
X89?55?70?NDRDIODE_1
X88?54?55?NDRDIODE_1
X87?70?54?NDRDIODE_0
X86?69?54?NDRDIODE_0
X85?54?68?NDRDIODE_1
X84?54?53?NDRDIODE_0
X83?68?53?NDRDIODE_1
X82?52?53?NDRDIODE_1
X81?68?52?NDRDIODE_0
X80?67?52?NDRDIODE_1
X79?52?6?NDRDIODE_1
X77?6?52?NDRDIODE_0
X76?1?50?NDRDIODE_1
X75?50?49?NDRDIODE_1
X74?49?1?NDRDIODE_0
X73?64?49?NDRDIODE_0
X72?63?49?NDRDIODE_1
X71?15?49?NDRDIODE_0
X70?15?63?NDRDIODE_1
X69?15?47?NDRDIODE_0
X68?63?47?NDRDIODE_0
X67?62?47?NDRDIODE_1
X66?47?61?NDRDIODE_0
X65?47?14?NDRDIODE_0
X64?61?14?NDRDIODE_0
X62?14?61?NDRDIODE_0
X61?60?14?NDRDIODE_0
X60?14?59?NDRDIODE_1
X59?14?44?NDRDIODE_1
X58?44?59?NDRDIODE_1
X57?13?44?NDRDIODE_1
X56?13?59?NDRDIODE_0
X55?13?58?NDRDIODE_1
X54?13?57?NDRDIODE_0
X53?13?42?NDRDIODE_1
X52?57?42?NDRDIODE_1
X51?12?42?NDRDIODE_0
X50?57?12?NDRDIODE_1
X49?12?56?NDRDIODE_1
X48?55?12?NDRDIODE_1
X46?12?55?NDRDIODE_1
X45?12?39?NDRDIODE_1
X44?55?39?NDRDIODE_0
X43?39?54?NDRDIODE_1
X42?53?39?NDRDIODE_1
X41?11?39?NDRDIODE_1
X40?11?53?NDRDIODE_1
X39?37?11?NDRDIODE_1
X38?53?37?NDRDIODE_0
X37?37?52?NDRDIODE_0
X36?6?37?NDRDIODE_1
X35?35?50?NDRDIODE_1
X34?35?34?NDRDIODE_0
X33?50?34?NDRDIODE_1
X32?34?49?NDRDIODE_0
X31?15?34?NDRDIODE_1
X30?32?15?NDRDIODE_1
X29?32?47?NDRDIODE_0
X28?32?14?NDRDIODE_1
X27?32?14?NDRDIODE_1
X22?44?14?NDRDIODE_0
X21?14?29?NDRDIODE_1
X20?29?44?NDRDIODE_0
X19?13?29?NDRDIODE_0
X18?44?13?NDRDIODE_0
X16?13?42?NDRDIODE_0
X15?13?27?NDRDIODE_0
X14?42?27?NDRDIODE_1
X13?27?12?NDRDIODE_1
X12?12?42?NDRDIODE_0
X7?12?24?NDRDIODE_0
X6?12?24?NDRDIODE_0
X5?39?24?NDRDIODE_0
X4?11?24?NDRDIODE_1
X3?11?24?NDRDIODE_0
.SUBCKT?NDRDIODE_1?IN?OUT
G1?IN?OUT?PWL(1)IN?OUT-1V,-1n-.8V,-1n-.625V,-760n?0V,0n
.625V,760n.8V,1n?1V,1n?SMOOTH=1
.ENDS
.SUBCKT?NDRDIODE_0?IN?OUT
G1?IN?OUT?PWL(1)IN?OUT-2V,-.8n-1V,-.8n-.75V,-.55n-.5V,-.21n
0V,0n.5V,.21n.75V,.55n?1V,.8n?2V,.8n?SMOOTH=1
.ENDS
.END
Anti-phase half-adder connects table
Moletronics
.OPTIONS?RELTOL=.01?ITL4=10?SCALE=1?POST?METHOD=Gear?DCSTEP=10
.OPTIONS?ACCT=0?INGOLD=1?NOMOD?PROBE
.TRAN?10000n?100000n
ROut1?1?0?1
.PRINT?TRAN?I(Rout1)
C1?1?0?10f
VInputB2?2?0?PWL(0n,0V?20000n,0V?20001n,0.5V?30000n,0.5V?30001n,2V
40000n,2V
+40001n,0.5V?50000n,0.5V?50001n,0.5V?60000n,0.5V
+60001n,0.5V?70000n,0.5V?70001n,2V?80000n,2V
+80001n,0.5V?90000n,0.5V?90001n,0.5V?100000n,0.5V)
.PRINT?TRAN?2
C2?2?0?10f
C3?3?0?10f
C4?4?0?10f
C5?5?0?10f
VInputB6?6?0?PWL(0n,0V?20000n,0V?20001n,0.5V?30000n,0.5V?30001n,2V
40000n,2V
+40001n,0.5V?50000n,0.5V?50001n,0.5V?60000n,0.5V
+60001n,0.5V?70000n,0.5V?70001n,2V?80000n,2V
+80001n,0.5V?90000n,0.5V?90001n,0.5V?100000n,0.5V)
.PRINT?TRAN?6
C6?6?0?10f
C7?7?0?10f
ROut2?8?0?1
.PRINT?TRAN?I(Rout2)
C8?8?0?10f
C9?9?0?10f
VInputA10?10?0?PWL(0n,0V?20000n,0V?20001n,0.5V?30000n,0.5V
30001n,0.5V?40000n,0.5V
+40001n,0.5V?50000n,0.5V?50001n,2V?60000n,2V
+60001n,0.5V?70000n,0.5V?70001n,2V?80000n,2V
+80001n,0,5V?90000n,0.5V?90001n,0.5V?100000n,0.5V)
.PRINT?TRAN?10
C10?10?0?10f
VDInputA11?11?0?PWL(0n,0V?20000n,0V?20001n,2V?30000n,2V?30001n,2V
40000n,2V?40001n,2V?50000n,2V?50001n,0.5V?60000n,0.5V?60001n,2V
70000n,2V?70001n,0.5V?80000n,0.5V?80001n,2V?90000n,2V?90001n,2V
100000n,2V)
.PRINT?TRAN?11
C11?11?0?10f
C12?12?0?10f
C13?13?0?10f
C14?14?0?10f
VInputA15?15?0?PWL(0n,0V?20000n,0V?20001n,0.5V?30000n,0.5V
30001n,0.5V?40000n,0.5V
+40001n,0.5V?50000n,0.5V?50001n,2V?60000n,2V
+60001n,0.5V?70000n,0.5V?70001n,2V?80000n,2V
+80001n,0.5V?90000n,0.5V?90001n,0.5V?100000n,0.5V)
.PRINT?TRAN?15
C15?15?0?10f
VDInputB16?16?0?PWL(0n,0V?20000n,0V?20001n,2V?30000n,2V?30001n,0.5V
40000n,0.5V?40001n,2V?50000n,2V?50001n,2V?60000n,2V?60001n,2V
70000n,2V?70001n,0.5V?80000n,0.5V?80001n,2V?90000n,2V?90001n,2V
100000n,2V)
.PRINT?TRAN?16
C16?16?0?10f
C17?17?0?10f
C18?18?0?10f
C19?19?0?10f
C20?20?0?10f
C24?24?0?5f
C27?27?0?5f
C29?29?0?5f
C32?32?0?5f
C34?34?0?5f
C35?35?0?5f
C37?37?0?5f
C39?39?0?5f
C42?42?0?5f
C44?44?0?5f
C47?47?0?5f
C49?49?0?5f
C50?50?0?5f
C52?52?0?5f
C53?53?0?5f
C54?54?0?5f
C55?55?0?5f
C56?56?0?5f
C57?57?0?5f
C58?58?0?5f
C59?59?0?5f
C60?60?0?5f
C61?61?0?5f
C62?62?0?5f
C63?63?0?5f
C64?64?0?5f
C67?67?0?5f
C68?68?0?5f
C69?69?0?5f
C70?70?0?5f
C71?71?0?5f
C72?72?0?5f
C74?74?0?5f
C75?75?0?5f
C76?76?0?5f
C77?77?0?5f
C78?78?0?5f
C79?79?0?5f
C82?82?0?5f
C83?83?0?5f
C84?84?0?5f
C85?85?0?5f
C86?86?0?5f
C87?87?0?5f
C88?88?0?5f
C89?89?0?5f
C90?90?0?5f
C92?92?0?5f
C93?93?0?5f
C94?94?0?5f
C97?97?0?5f
C99?99?0?5f
C101?101?0?5f
C102?102?0?5f
C103?103?0?5f
C104?104?0?5f
C105?105?0?5f
C106?106?0?5f
C108?108?0?5f
C109?109?0?5f
C111?111?0?5f
C112?112?0?5f
C113?113?0?5f
C114?114?0?5f
C115?115?0?5f
C116?116?0?5f
C119?119?0?5f
C120?120?0?5f
C121?121?0?5f
C122?122?0?5f
C123?123?0?5f
C124?124?0?5f
C125?125?0?5f
C128?128?0?5f
C129?129?0?5f
C130?130?0?5f
C131?131?0?5f
C132?132?0?5f
C133?133?0?5f
C134?134?0?5f
C135?135?0?5f
C136?136?0?5f
C137?137?0?5f
C138?138?0?5f
C139?139?0?5f
C142?142?0?5f
C143?143?0?5f
C144?144?0?5f
C145?145?0?5f
C146?146?0?5f
C147?147?0?5f
C149?149?0?5f
C150?150?0?5f
C151?151?0?5f
C152?152?0?5f
C153?153?0?5f
C154?154?0?5f
C157?157?0?5f
C158?158?0?5f
C159?159?0?5f
C160?160?0?5f
C161?161?0?5f
C162?162?0?5f
C163?163?0?5f
C164?164?0?5f
C165?165?0?5f
C166?166?0?5f
C167?167?0?5f
C168?168?0?5f
C169?169?0?5f
C172?172?0?5f
C173?173?0?5f
C175?175?0?5f
C176?176?0?5f
C178?178?0?5f
C179?179?0?5f
C180?180?0?5f
C181?181?0?5f
C182?182?0?5f
C183?183?0?5f
C184?184?0?5f
C186?186?0?5f
C187?187?0?5f
C188?188?0?5f
C190?190?0?5f
C191?191?0?5f
C192?192?0?5f
C193?193?0?5f
C194?194?0?5f
C195?195?0?5f
C196?196?0?5f
C197?197?0?5f
C198?198?0?5f
C199?199?0?5f
C200?200?0?5f
C202?202?0?5f
C203?203?0?5f
C204?204?0?5f
C205?205?0?5f
C206?206?0?5f
C207?207?0?5f
C208?208?0?5f
C209?209?0?5f
C210?210?0?5f
C212?212?0?5f
C214?214?0?5f
C217?217?0?5f
C219?219?0?5f
C222?222?0?5f
C224?224?0?5f
C229?229?0?5f
C231?231?0?5f
C232?232?0?5f
C234?234?0?5f
C237?237?0?5f
C239?239?0?5f
C242?242?0?5f
C244?244?0?5f
X512?20?244?NDRDIODE_0
X511?242?20?NDRDIODE_0
X510?19?242?NDRDIODE_1
X508?239?19?NDRDIODE_0
X507?18?239?NDRDIODE_0
X506?237?18?NDRDIODE_0
X505?237?17?NDRDIODE_1
X503?234?17?NDRDIODE_0
X502?234?16?NDRDIODE_0
X501?16?232?NDRDIODE_1
X500?232?231?NDRDIODE_1
X499?5?229?NDRDIODE_0
X498?229?244?NDRDIODE_0
X497?20?229?NDRDIODE_0
X496?20?229?NDRDIODE_0
X490?239?19?NDRDIODE_0
X489?224?19?NDRDIODE_1
X488?224?239?NDRDIODE_0
X487?18?224?NDRDIODE_0
X486?18?239?NDRDIODE_0
X484?18?237?NDRDIODE_1
X483?222?18?NDRDIODE_1
X482?237?222?NDRDIODE_0
X481?222?17?NDRDIODE_0
X480?237?17?NDRDIODE_0
X475?219?17?NDRDIODE_0
X474?219?17?NDRDIODE_1
X473?219?234?NDRDIODE_0
X472?219?16?NDRDIODE_0
X471?16?219?NDRDIODE_1
X469?217?16?NDRDIODE_0
X468?217?16?NDRDIODE_0
X467?217?232?NDRDIODE_0
X466?217?231?NDRDIODE_0
X465?10?231?NDRDIODE_0
X464?10?217?NDRDIODE_0
X462?214?5?NDRDIODE_1
X461?214?5?NDRDIODE_0
X460?214?229?NDRDIODE_0
X459?214?20?NDRDIODE_0
X458?212?20?NDRDIODE_0
X457?212?19?NDRDIODE_1
X456?210?19?NDRDIODE_1
X455?19?210?NDRDIODE_1
X454?210?224?NDRDIODE_1
X453?210?209?NDRDIODE_1
X452?209?224?NDRDIODE_1
X451?209?208?NDRDIODE_1
X450?224?208?NDRDIODE_1
X449?18?208?NDRDIODE_0
X448?222?208?NDRDIODE_0
X447?207?208?NDRDIODE_0
X446?222?207?NDRDIODE_0
X445?207?206?NDRDIODE_0
X444?206?222?NDRDIODE_0
X443?206?17?NDRDIODE_1
X442?206?17?NDRDIODE_1
X441?206?205?NDRDIODE_1
X440?205?17?NDRDIODE_0
X439?204?205?NDRDIODE_1
X438?17?204?NDRDIODE_1
X437?204?219?NDRDIODE_1
X436?16?204?NDRDIODE_0
X435?203?204?NDRDIODE_0
X434?203?16?NDRDIODE_1
X433?203?202?NDRDIODE_1
X432?16?202?NDRDIODE_1
X431?217?202?NDRDIODE_1
X430?202?10?NDRDIODE_1
X428?10?202?NDRDIODE_1
X427?200?5?NDRDIODE_1
X426?199?200?NDRDIODE_0
X425?199?5?NDRDIODE_1
X424?199?214?NDRDIODE_0
X423?199?198?NDRDIODE_1
X422?197?198?NDRDIODE_1
X421?212?197?NDRDIODE_1
X420?196?197?NDRDIODE_0
X419?195?196?NDRDIODE_0
X418?195?210?NDRDIODE_0
X417?195?209?NDRDIODE_0
X416?194?195?NDRDIODE_0
X415?194?209?NDRDIODE_1
X414?194?193?NDRDIODE_0
X413?193?209?NDRDIODE_0
X412?193?208?NDRDIODE_0
X411?207?193?NDRDIODE_0
X410?193?192?NDRDIODE_0
X409?207?192?NDRDIODE_1
X408?191?192?NDRDIODE_0
X407?207?191?NDRDIODE_0
X406?191?206?NDRDIODE_0
X405?205?191?NDRDIODE_0
X404?190?191?NDRDIODE_0
X403?205?190?NDRDIODE_1
X402?188?203?NDRDIODE_0
X401?188?187?NDRDIODE_1
X400?187?203?NDRDIODE_0
X399?202?187?NDRDIODE_1
X398?10?187?NDRDIODE_0
X397?186?10?NDRDIODE_1
X396?187?186?NDRDIODE_1
X395?200?4?NDRDIODE_1
X394?4?184?NDRDIODE_1
X393?184?200?NDRDIODE_1
X392?184?199?NDRDIODE_0
X391?184?198?NDRDIODE_1
X390?183?184?NDRDIODE_1
X389?198?183?NDRDIODE_1
X388?183?182?NDRDIODE_1
X387?182?198?NDRDIODE_0
X386?197?182?NDRDIODE_0
X385?182?196?NDRDIODE_1
X384?182?181?NDRDIODE_0
X383?196?181?NDRDIODE_0
X382?181?180?NDRDIODE_1
X381?196?180?NDRDIODE_0
X380?195?180?NDRDIODE_0
X379?194?180?NDRDIODE_1
X378?179?180?NDRDIODE_0
X377?179?194?NDRDIODE_1
X376?179?178?NDRDIODE_0
X375?178?194?NDRDIODE_1
X374?178?193?NDRDIODE_1
X373?192?178?NDRDIODE_0
X372?192?176?NDRDIODE_0
X371?191?176?NDRDIODE_1
X370?190?176?NDRDIODE_0
X369?175?176?NDRDIODE_0
X368?190?175?NDRDIODE_0
X367?188?173?NDRDIODE_1
X366?173?172?NDRDIODE_0
X365?188?172?NDRDIODE_1
X364?172?187?NDRDIODE_1
X363?172?186?NDRDIODE_0
X362?186?9?NDRDIODE_0
X361?9?172?NDRDIODE_0
X359?169?4?NDRDIODE_1
X358?169?4?NDRDIOD_0
X357?184?169?NDRDIODE_0
X356?183?169?NDRDIOD_1
X355?168?169?NDRDIODE_0
X354?183?168?NDRDIODE_0
X353?167?168?NDRDIODE_1
X352?167?183?NDRDIODE_1
X351?167?182?NDRDIODE_0
X350?181?167?NDRDIODE_0
X349?167?166?NDRDIODE_0
X348?181?166?NDRDIODE_1
X347?165?166?NDRDIODE_1
X346?181?165?NDRDIODE_1
X345?165?180?NDRDIODE_0
X344?179?165?NDRDIODE_0
X343?165?164?NDRDIODE_0
X342?179?164?NDRDIODE_0
X341?164?163?NDRDIODE_1
X340?179?163?NDRDIODE_0
X339?178?163?NDRDIODE_0
X338?162?163?NDRDIODE_0
X337?162?161?NDRDIODE_1
X336?161?176?NDRDIODE_1
X335?161?175?NDRDIODE_0
X334?161?160?NDRDIODE_1
X333?175?160?NDRDIODE_1
X332?160?159?NDRDIODE_1
X331?159?175?NDRDIODE_1
X330?173?159?NDRDIODE_0
X329?158?159?NDRDIODE_0
X328?158?173?NDRDIODE_1
X327?158?157?NDRDIODE_1
X326?157?173?NDRDIODE_1
X325?157?172?NDRDIODE_1
X324?157?9?NDRDIODE_0
X322?157?9?NDRDIODE_0
X320?3?154?NDRDIODE_1
X319?154?4?NDRDIODE_0
X318?154?169?NDRDIODE_0
X317?168?154?NDRDIODE_0
X316?153?154?NDRDIODE_0
X315?168?153?NDRDIODE_0
X314?152?153?NDRDIODE_1
X313?152?168?NDRDIODE_1
X312?152?167?NDRDIODE_1
X311?152?166?NDRDIODE_0
X310?152?151?NDRDIODE_1
X309?151?166?NDRDIODE_1
X308?150?151?NDRDIODE_0
X307?166?150?NDRDIODE_1
X306?165?150?NDRDIODE_1
X305?164?150?NDRDIODE_1
X304?150?149?NDRDIODE_0
X303?149?164?NDRDIODE_1
X302?147?162?NDRDIODE_0
X301?147?146?NDRDIODE_0
X300?162?146?NDRDIODE_0
X299?146?161?NDRDIODE_1
X298?146?160?NDRDIODE_0
X297?145?146?NDRDIODE_0
X296?145?160?NDRDIODE_0
X295?144?145?NDRDIODE_0
X294?160?144?NDRDIODE_0
X293?144?159?NDRDIODE_1
X292?144?158?NDRDIODE_1
X291?143?144?NDRDIODE_1
X290?158?143?NDRDIODE_0
X289?143?142?NDRDIODE_0
X288?158?142?NDRDIODE_1
X287?157?142?NDRDIODE_1
X286?9?142?NDRDIODE_1
X284?8?142?NDRDIODE_1
X282?139?3?NDRDIODE_1
X281?3?139?NDRDIODE_1
X280?139?154?NDRDIODE_1
X279?139?153?NDRDIODE_0
X278?139?138?NDRDIODE_1
X277?138?153?NDRDIODE_0
X276?137?138?NDRDIODE_1
X275?137?153?NDRDIODE_0
X274?152?137?NDRDIODE_0
X273?151?137?NDRDIODE_0
X272?136?137?NDRDIODE_1
X271?136?151?NDRDIODE_0
X270?136?135?NDRDIODE_1
X269?151?135?NDRDIODE_1
X268?150?135?NDRDIODE_0
X267?149?135?NDRDIODE_0
X266?135?134?NDRDIODE_0
X265?134?149?NDRDIODE_1
X264?134?133?NDRDIODE_1
X263?133?149?NDRDIODE_1
X262?133?147?NDRDIODE_0
X261?132?133?NDRDIODE_1
X260?147?132?NDRDIODE_0
X259?131?132?NDRDIODE_0
X258?147?131?NDRDIODE_1
X257?146?131?NDRDIODE_0
X256?131?145?NDRDIODE_0
X255?131?130?NDRDIODE_1
X254?145?130?NDRDIODE_0
X253?130?129?NDRDIODE_1
X252?129?145?NDRDIODE_0
X251?129?144?NDRDIODE_0
X250?143?129?NDRDIODE_0
X249?128?129?NDRDIODE_1
X248?143?128?NDRDIODE_0
X246?3?125?NDRDIODE_1
X245?124?125?NDRDIODE_1
X244?3?124?NDRDIODE_0
X243?124?139?NDRDIODE_0
X242?138?124?NDRDIODE_0
X241?124?123?NDRDIODE_1
X240?138?123?NDRDIODE_1
X239?122?123?NDRDIODE_0
X238?122?138?NDRDIODE_0
X237?122?137?NDRDIODE_0
X236?136?122?NDRDIODE_0
X235?121?122?NDRDIODE_0
X234?121?136?NDRDIODE_1
X233?121?120?NDRDIODE_0
X232?136?120?NDRDIODE_0
X231?120?135?NDRDIODE_1
X230?120?134?NDRDIODE_1
X229?120?119?NDRDIODE_0
X228?134?119?NDRDIODE_0
X227?115?116?NDRDIODE_0
X226?115?130?NDRDIODE_1
X225?114?115?NDRDIODE_1
X224?114?130?NDRDIODE_0
X223?129?114?NDRDIODE_0
X222?114?128?NDRDIODE_1
X221?113?114?NDRDIODE_1
X220?113?128?NDRDIODE_1
X219?112?113?NDRDIODE_0
X218?112?128?NDRDIODE_1
X217?112?8?NDRDIODE_1
X216?111?8?NDRDIODE_1
X215?112?111?NDRDIODE_0
X214?2?125?NDRDIODE_0
X213?2?109?NDRDIODE_1
X212?125?109?NDRDIODE_1
X211?109?124?NDRDIODE_1
X210?109?123?NDRDIODE_1
X209?108?109?NDRDIODE_0
X208?123?108?NDRDIODE_1
X207?121?106?NDRDIODE_1
X206?106?105?NDRDIODE_1
X205?121?105?NDRDIODE_0
X204?120?105?NDRDIODE_0
X203?119?105?NDRDIODE_1
X202?105?104?NDRDIODE_1
X201?119?104?NDRDIODE_1
X200?104?103?NDRDIODE_0
X199?103?119?NDRDIODE_1
X198?102?103?NDRDIODE_0
X197?101?102?NDRDIODE_0
X196?101?116?NDRDIODE_0
X195?115?101?NDRDIODE_1
X194?99?115?NDRDIODE_0
X193?114?99?NDRDIODE_0
X192?113?99?NDRDIODE_1
X191?97?113?NDRDIODE_0
X190?112?97?NDRDIODE_1
X189?111?97?NDRDIODE_0
X188?111?7?NDRDIODE_0
X187?97?7?NDRDIODE_0
X185?2?94?NDRDIODE_1
X184?2?94?NDRDIODE_0
X183?94?109?NDRDIODE_1
X182?94?108?NDRDIODE_1
X181?93?94?NDRDIODE_1
X180?93?108?NDRDIODE_1
X179?93?92?NDRDIODE_1
X178?108?92?NDRDIODE_0
X177?106?92?NDRDIODE_1
X176?106?90?NDRDIODE_1
X175?105?90?NDRDIODE_0
X174?90?104?NDRDIODE_0
X173?89?90?NDRDIODE_1
X172?104?89?NDRDIODE_0
X171?89?88?NDRDIODE_0
X170?88?104?NDRDIODE_0
X169?103?88?NDRDIODE_0
X168?88?102?NDRDIODE_0
X167?87?88?NDRDIODE_1
X166?87?102?NDRDIODE_1
X165?86?87?NDRDIODE_0
X164?86?102?NDRDIODE_1
X163?101?86?NDRDIODE_1
X162?86?85?NDRDIODE_1
X161?84?85?NDRDIODE_0
X160?84?99?NDRDIODE_0
X159?84?83?NDRDIODE_0
X158?83?82?NDRDIODE_1
X157?82?97?NDRDIODE_1
X156?82?7?NDRDIODE_1
X154?7?82?NDRDIODE_1
X152?1?79?NDRDIODE_1
X151?2?79?NDRDIODE_0
X150?94?79?NDRDIODE_1
X149?93?79?NDRDIODE_1
X148?78?79?NDRDIODE_1
X147?78?93?NDRDIODE_1
X146?78?77?NDRDIODE_1
X145?77?93?NDRDIODE_0
X144?92?77?NDRDIODE_0
X143?77?76?NDRDIODE_1
X142?76?75?NDRDIODE_0
X141?90?75?NDRDIODE_1
X140?75?89?NDRDIODE_1
X139?74?75?NDRDIODE_1
X138?74?89?NDRDIODE_0
X137?87?72?NDRDIODE_0
X136?72?71?NDRDIODE_0
X135?87?71?NDRDIODE_1
X134?71?86?NDRDIODE_1
X133?71?85?NDRDIODE_0
X132?70?71?NDRDIODE_0
X131?85?70?NDRDIODE_1
X130?70?69?NDRDIODE_1
X129?85?69?NDRDIODE_1
X128?69?84?NDRDIODE_1
X127?69?83?NDRDIODE_1
X126?68?69?NDRDIODE_1
X125?83?68?NDRDIODE_0
X124?68?67?NDRDIODE_0
X123?83?67?NDRDIODE_0
X122?67?82?NDRDIODE_0
X121?7?67?NDRDIODE_1
X119?6?67?NDRDIODE_0
X117?64?1?NDRDIODE_1
X116?64?1?NDRDIODE_0
X115?79?64?NDRDIODE_0
X114?64?78?NDRDIODE_0
X113?63?64?NDRDIODE_0
X112?78?63?NDRDIODE_0
X111?63?62?NDRDIODE_0
X110?78?62?NDRDIODE_0
X109?62?77?NDRDIODE_0
X108?62?76?NDRDIODE_0
X107?62?61?NDRDIODE_1
X106?76?61?NDRDIODE_1
X105?60?61?NDRDIODE_0
X104?76?60?NDRDIODE_0
X103?60?75?NDRDIODE_1
X102?74?60?NDRDIODE_0
X101?59?60?NDRDIODE_0
X100?59?74?NDRDIODE_1
X99?59?58?NDRDIODE_1
X98?58?74?NDRDIODE_1
X97?72?58?NDRDIODE_0
X96?57?58?NDRDIODE_0
X95?72?57?NDRDIODE_0
X94?56?57?NDRDIODE_1
X93?72?56?NDRDIODE_1
X92?56?71?NDRDIODE_0
X91?56?70?NDRDIODE_1
X90?56?55?NDRDIODE_1
X89?55?70?NDRDIODE_1
X88?54?55?NDRDIODE_0
X87?70?54?NDRDIODE_0
X86?69?54?NDRDIODE_1
X85?54?68?NDRDIODE_0
X84?54?53?NDRDIODE_0
X83?68?53?NDRDIODE_1
X82?52?53?NDRDIODE_1
X81?68?52?NDRDIODE_0
X80?67?52?NDRDIODE_1
X79?52?6?NDRDIODE_1
X77?6?52?NDRDIODE_1
X76?1?50?NDRDIODE_0
X75?50?49?NDRDIODE_0
X74?49?1?NDRDIODE_1
X73?64?49?NDRDIODE_0
X72?63?49?NDRDIODE_1
X71?15?49?NDRDIODE_0
X70?15?63?NDRDIODE_0
X69?15?47?NDRDIODE_1
X68?63?47?NDRDIODE_0
X67?62?47?NDRDIODE_1
X66?47?61?NDRDIODE_0
X65?47?14?NDRDIODE_0
X64?61?14?NDRDIODE_1
X62?14?61?NDRDIODE_1
X61?60?14?NDRDIODE_0
X60?14?59?NDRDIODE_1
X59?14?44?NDRDIODE_1
X58?44?59?NDRDIODE_1
X57?13?44?NDRDIODE_1
X56?13?59?NDRDIODE_0
X55?13?58?NDRDIODE_0
X54?13?57?NDRDIODE_0
X53?13?42?NDRDIODE_0
X52?57?42?NDRDIODE_0
X51?12?42?NDRDIODE_1
X50?57?12?NDRDIODE_1
X49?12?56?NDRDIODE_0
X48?55?12?NDRDIODE_0
X46?12?55?NDRDIODE_0
X45?12?39?NDRDIODE_1
X44?55?39?NDRDIODE_0
X43?39?54?NDRDIODE_1
X42?53?39?NDRDIODE_1
X41?11?39?NDRDIODE_1
X40?11?53?NDRDIODE_0
X39?37?11?NDRDIODE_0
X38?53?37?NDRDIODE_1
X37?37?52?NDRDIODE_0
X36?6?37?NDRDIODE_0
X35?35?50?NDRDIODE_0
X34?35?34?NDRDIODE_0
X33?50?34?NDRDIODE_1
X32?34?49?NDRDIODE_1
X31?15?34?NDRDIODE_1
X30?32?15?NDRDIODE_1
X29?32?47?NDRDIODE_0
X28?32?14?NDRDIODE_0
X27?32?14?NDRDIODE_1
X22?44?14?NDRDIODE_1
X21?14?29?NDRDIODE_0
X20?29?44?NDRDIODE_0
X19?13?29?NDRDIODE_0
X18?44?13?NDRDIODE_0
X16?13?42?NDRDIODE_0
X15?13?27?NDRDIODE_1
X14?42?27?NDRDIODE_0
X13?27?12?NDRDIODE_0
X12?12?42?NDRDIODE_0
X7 12?24?NDRDIODE_0
X6?12?24?NDRDIODE_0
X5?39?24?NDRDIODE_1
X4?11?24?NDRDIODE_1
X3?11?24?NDRDIODE_1
.SUBCKT?NDRDIODE_1?IN?OUT
G1?IN?OUT?PWL(1)IN?OUT-1V,-1n-.8V,-1n-.625V,-760n?0V,0n
.625V,760n.8V,1n?1V,1n?SMOOTH=1
.ENDS
.SUBCKT?NDRDIODE_0?IN?OUT
G1?IN?OUT?PWL(1)IN?OUT-2V,-.8n-1V,-.8n-.75V,-.55n-.5V,-.21n
0V,0n.5V,.21n.75V,.55n?1V,.8n?2V,.8n?SMOOTH=1
.ENDS
.END

Claims (56)

1. programmable molecular device comprises:
At least one input lead;
At least one output lead; And
A nanometer network of crossing over described input lead and described output lead, wherein said nanometer network comprises a plurality of molecular circuit parts.
2. programmable molecular device as claimed in claim 1 is characterized in that: described nanometer network is self assembly.
3. programmable molecular device as claimed in claim 1 is characterized in that: described nanometer network is at random.
4. programmable molecular device as claimed in claim 1 is characterized in that: described device can be programmed by a kind of adaptive algorithm that is used to dispose described molecular circuit parts.
5. programmable molecular device as claimed in claim 4 is characterized in that: described adaptive algorithm is selected from genetic algorithm, simulated annealing, the winning algorithm of tracking, time difference learning algorithm, strengthens learning algorithm and their combination.
6. programmable molecular device as claimed in claim 4 is characterized in that: can dispose described molecular circuit parts by applying voltage to described input lead and described output lead.
7. programmable molecular device as claimed in claim 1 is characterized in that: described device is programmed for as a logical block.
8. programmable molecular device as claimed in claim 7 is characterized in that: described logical block is selected from the group that comprises the truth table of being supported by described at least one input lead and described at least one output lead.
9. programmable molecular device as claimed in claim 8 is characterized in that: described logical block is programmed for as the device that is selected from AND, OR, XOR, NAND, NOT, totalizer, half-adder, anti-phase half adder, multiplexer, demoder and their combination.
10. programmable molecular device as claimed in claim 1 is characterized in that: described device is programmed for as a memory cell.
11. programmable molecular device as claimed in claim 1 is characterized in that: described device is re-programmable.
12. programmable molecular device as claimed in claim 1 is characterized in that: described molecular circuit parts are selected from molecular switch, molecule diode, molecule circuit, molecular rectifier, resistance, transistor, molecular memory and their combination.
13. programmable molecular device as claimed in claim 12 is characterized in that: described molecular circuit parts comprise molecular switch.
14. programmable molecular device as claimed in claim 13 is characterized in that: described device can be programmed by a kind of algorithm that is used to be provided with described molecular switch.
15. programmable molecular device as claimed in claim 14 is characterized in that: can described switch be set by applying voltage to described input lead and described output lead.
16. programmable molecular device as claimed in claim 1 is characterized in that: described nanometer network further comprises the nanoscale parts.
17. programmable molecular device as claimed in claim 16 is characterized in that: described nanoscale parts are selected from nanotube, nano particle, nanometer rods and their combination.
18. programmable molecular device as claimed in claim 17 is characterized in that: described nanoscale circuit block comprises nano particle, and described molecular circuit parts comprise molecular switch and the described molecular switch described nano particle that interconnects.
19. programmable molecular device as claimed in claim 18 is characterized in that: described nano particle is a random alignment.
20. programmable molecular device as claimed in claim 18 is characterized in that: the described molecular switch described nano particle that interconnects randomly.
21. a method of making electronic unit comprises:
(a) provide the nano unit of a self assembly; And
(b) programme this nano unit to be used as electronic unit.
22. method as claimed in claim 21 is characterized in that: nano unit comprises:
At least one input lead;
At least one output lead; And
A nanometer network of crossing over this input lead and this output lead, wherein this nanometer network comprises a plurality of molecular circuit parts.
23. method as claimed in claim 22 is characterized in that: described molecular circuit parts are selected from molecular switch, molecule diode, molecule circuit, molecular rectifier, molecule resistance, molecular transistors, molecular memory and their combination.
24. method as claimed in claim 23 is characterized in that: these molecular circuit parts comprise the molecular resonance tunnel diode.
25. method as claimed in claim 24 is characterized in that: these molecular circuit parts present negative differential resistance.
26. method as claimed in claim 22 is characterized in that: this nanometer network further comprises the nanoscale parts that are selected from nanotube, nano particle, nanometer rods and their combination.
27. method as claimed in claim 22 is characterized in that: described nanometer network is at random.
28. method as claimed in claim 21 is characterized in that: step (b) comprises:
(b1) dispose this molecular circuit parts.
29. method as claimed in claim 28 is characterized in that: step (b1) comprises:
(b1.i) bring in the attribute that influenced by conductance that is adjusted to few molecular circuit parts by voltage being added to input lead and output lead two.
30. method as claimed in claim 29 is characterized in that: the attribute that influenced by conductance is selected from electric charge, structural regime, electronic state and their combination.
31. method as claimed in claim 28 is characterized in that: step (b) further comprises:
(b2) test the performance of this nano unit.
32. method as claimed in claim 31 is characterized in that: step (b) further comprises:
(b3) use a kind of adaptive algorithm to reconfigure this molecular circuit parts.
33. method as claimed in claim 32 is characterized in that: this adaptive algorithm is selected from genetic algorithm, simulated annealing, the winning algorithm of tracking, time difference learning algorithm, strengthens learning algorithm and their combination.
34. method as claimed in claim 32 further comprises:
(b4) repeating step (b2) and (b3) play electronic unit and act as and end up to nano unit.
35. method as claimed in claim 22 is characterized in that: this electronic unit comprises a logical block.
36. method as claimed in claim 35 is characterized in that: described logical block is selected from the group that comprises the truth table of being supported by this input lead and this output lead.
37. method as claimed in claim 36 is characterized in that: this logical block is selected from AND, OR, XOR, NOR, NAND, NOT, totalizer, half-adder, anti-phase half adder, multiplexer, demoder and their combination.
38. method as claimed in claim 22 is characterized in that: this electronic unit comprises a memory cell.
39. method as claimed in claim 22 is characterized in that: step (a) comprises:
(a1) allowing a plurality of nanoscale parts to be self-assembled into is a random array;
(a2) allow a plurality of molecular circuit parts to be self-assembled into the molecule at random that interconnects between these nanoscale parts; And
(a3) utilize the molecule binding clip that this molecular circuit components bonding is arrived the nanoscale parts.
40. method as claimed in claim 39 is characterized in that: the molecule binding clip is selected from sulphur, oxygen, selenium, phosphorus, isonitrile, pyridine, carboxylate and thiol molecule part.
41. method as claimed in claim 39 is characterized in that: these nanoscale parts are selected from nanotube, nano particle, nanometer rods and their combination.
42. method as claimed in claim 39 is characterized in that: these molecular circuit parts are selected from molecular switch, molecule diode, molecule circuit, molecular rectifier, molecule resistance, molecular transistors and their combination.
43. a molecular computer comprises:
A plurality of nano units able to programme, each nano unit comprises:
A plurality of nano particles; And
A plurality of molecule diodes;
The wherein said molecule diode described nano particle that interconnects; And
A plurality of metallic circuits;
The wherein said metallic circuit described nano unit that interconnects.
44. molecular computer as claimed in claim 43 is characterized in that: described nano unit is self assembly.
45. molecular computer as claimed in claim 43 is characterized in that: described nano particle is a random alignment.
46. molecular computer as claimed in claim 43 is characterized in that: the described molecule diode described nano particle that interconnects randomly.
47. molecular computer as claimed in claim 43 is characterized in that: each described nano unit comprises about 2 a microns linear dimension at most.
48. molecular computer as claimed in claim 43 is characterized in that: at least one of described nano unit is able to programme to play a logical block.
49. molecular computer as claimed in claim 48 is characterized in that: described logical block is selected from from comprising the group of the truth table of being supported by described interconnect.
50. method as claimed in claim 49 is characterized in that: at least one in the described nano unit is programmed for as the device that is selected from AND, OR, XOR, NOR, NAND, NOT, totalizer, half-adder, anti-phase half-adder, multiplexer, demoder and their combination.
51. molecular computer as claimed in claim 43 is characterized in that: at least one in the described nano unit is able to programme to play a memory cell.
52. molecular computer as claimed in claim 43 is characterized in that: described nano unit can be programmed by a kind of algorithm that is used to dispose the molecule diode of described nano unit.
53. molecular computer as claimed in claim 43 is characterized in that: described nano unit further comprises:
First and second lead-in wires; And
Wherein said diode can dispose by applying voltage to described first and second lead-in wires.
54. molecular computer as claimed in claim 43 is characterized in that: at least one in the described molecule diode presents negative differential resistance.
55. make computer method, comprise for one kind:
(a) provide a plurality of self-assembled nanometer unit of having trained;
(b) described nano unit of having trained is interconnected to a plurality of unbred nano units;
(c) nano unit that allows to have trained is trained described unbred nano unit.
56., further comprise according to the described method of claim 53:
(d) multistage repeating step (b) and (c).
CNA018152295A 2000-07-25 2001-07-25 Programmable molecular device Pending CN1535466A (en)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US22079000P 2000-07-25 2000-07-25
US60/220,790 2000-07-25
US22408000P 2000-08-08 2000-08-08
US22364400P 2000-08-08 2000-08-08
US60/223,644 2000-08-08
US60/224,080 2000-08-08
US27338301P 2001-03-05 2001-03-05
US60/273,383 2001-03-05

Publications (1)

Publication Number Publication Date
CN1535466A true CN1535466A (en) 2004-10-06

Family

ID=27499200

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA018152295A Pending CN1535466A (en) 2000-07-25 2001-07-25 Programmable molecular device

Country Status (7)

Country Link
EP (1) EP1319231A4 (en)
JP (1) JP2004505357A (en)
KR (1) KR100808966B1 (en)
CN (1) CN1535466A (en)
AU (1) AU2001280759A1 (en)
CA (1) CA2417462A1 (en)
WO (1) WO2002009117A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102280139A (en) * 2005-05-09 2011-12-14 南泰若股份有限公司 Memory arrays using nanotube articles with reprogrammable resistance

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203789B2 (en) * 2004-05-10 2007-04-10 Hewlett-Packard Development Company, L.P. Architecture and methods for computing with reconfigurable resistor crossbars
US11823032B2 (en) 2019-01-23 2023-11-21 International Business Machines Corporation Tuning local conductances of molecular networks: applications to artificial neural networks

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6569382B1 (en) 1991-11-07 2003-05-27 Nanogen, Inc. Methods apparatus for the electronic, homogeneous assembly and fabrication of devices
US6259277B1 (en) * 1998-07-27 2001-07-10 University Of South Carolina Use of molecular electrostatic potential to process electronic signals
US6128214A (en) 1999-03-29 2000-10-03 Hewlett-Packard Molecular wire crossbar memory
US6518156B1 (en) 1999-03-29 2003-02-11 Hewlett-Packard Company Configurable nanoscale crossbar electronic circuits made by electrochemical reaction
US6198655B1 (en) * 1999-12-10 2001-03-06 The Regents Of The University Of California Electrically addressable volatile non-volatile molecular-based switching devices

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102280139A (en) * 2005-05-09 2011-12-14 南泰若股份有限公司 Memory arrays using nanotube articles with reprogrammable resistance
CN102280139B (en) * 2005-05-09 2014-09-24 南泰若股份有限公司 Memory arrays using nanotube articles with reprogrammable resistance

Also Published As

Publication number Publication date
JP2004505357A (en) 2004-02-19
AU2001280759A1 (en) 2002-02-05
CA2417462A1 (en) 2002-01-31
KR20030064373A (en) 2003-07-31
WO2002009117A1 (en) 2002-01-31
KR100808966B1 (en) 2008-03-04
EP1319231A4 (en) 2008-11-19
EP1319231A1 (en) 2003-06-18

Similar Documents

Publication Publication Date Title
CN1077727C (en) Semiconductor integrated circuit device
Navi et al. A low-voltage and energy-efficient full adder cell based on carbon nanotube technology
Choi et al. Protein-based biomemory device consisting of the cysteine-modified azurin
Xie et al. 5nm FinFET standard cell library optimization and circuit synthesis in near-and super-threshold voltage regimes
CN1535466A (en) Programmable molecular device
CN1338120A (en) Quantum-size electronic devices and operating conditions thereof
Nguyen et al. Structure and energy landscape of a photoswitchable peptide: a replica exchange molecular dynamics study
CN1428865A (en) Semiconductor device
CN1263043C (en) Semiconductor memory device having memory cells requiring no refresh operations
Xu et al. High-efficiency switching effect and negative differential conductance in cyclo [18] carbon–graphene nanoribbon junction
Athikulwongse et al. Buffered clock tree sizing for skew minimization under power and thermal budgets
Zhang et al. A hybrid nano/CMOS dynamically reconfigurable system—Part I: Architecture
Ghasemi et al. A new SPICE model for organic molecular transistors and a novel hybrid architecture
Seminario et al. Ab Initio methods for the study of molecular systems for nanometer technology: toward the first‐principles design of molecular computers
CN1950382A (en) Organosilanes, process for production of the same, and use thereof
CN1745488A (en) Chemical switching of nucleic acid circuit elements
Zhang et al. ALLCN: An automatic logic-to-layout tool for carbon nanotube based nanotechnology
Ganie et al. Gate All around CNTFET based Ternary Content Addressable Memory
ZHANG et al. Comparative Analysis of Noise Margin between Pure SET-SET and Hybrid SET-PMOS Inverters
Venkataratnam et al. Design and simulation of logic circuits with hybrid architectures of single electron transistors and conventional devices
Marangunic et al. Machine Learning Dependent Arithmetic Module Realization for High-Speed Computing
Tredennick et al. Reconfigurable systems emerge
Koning A theoretical study of the effect of electron delocalization on electron transfer reactions in small organic molecules
Papaefthymiou et al. Design Technologies for Energy-Efficient VLSI Systems
Zhang et al. Insights into the structures, stabilities, electronic and magnetic properties of X2Au n (X= La, Y, and Sc; n= 1–9) clusters: comparison with pure gold clusters

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned

Effective date of abandoning: 20041006

C20 Patent right or utility model deemed to be abandoned or is abandoned