CN1535466A - Programmable molecular device - Google Patents
Programmable molecular device Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic 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
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B82—NANOTECHNOLOGY
- B82Y—SPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
- B82Y30/00—Nanotechnology for materials or surface science, e.g. nanocomposites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/002—Biomolecular computers, i.e. using biomolecules, proteins, cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/36—Digital 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)
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital 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/0009—RRAM elements whose operation depends upon chemical change
- G11C13/0014—RRAM elements whose operation depends upon chemical change comprising cells based on organic memory material
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/02—Digital 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/025—Digital 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
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B82—NANOTECHNOLOGY
- B82Y—SPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
- B82Y10/00—Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2213/00—Indexing scheme relating to G11C13/00 for features not covered by this group
- G11C2213/70—Resistive array aspects
- G11C2213/81—Array wherein the array conductors, e.g. word lines, bit lines, are made of nanowires
-
- H—ELECTRICITY
- H10—SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
- H10K—ORGANIC ELECTRIC SOLID-STATE DEVICES
- H10K10/00—Organic devices specially adapted for rectifying, amplifying, oscillating or switching; Organic capacitors or resistors having a potential-jump barrier or a surface barrier
- H10K10/701—Organic 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
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
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.
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 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
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
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
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
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.
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
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
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
-1。
1H?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
-1。
1H?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
-1。
1HNMR(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
-1。
1H 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
-1。
1H?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
-1。
1HNMR(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
-1。
1H?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
-1。
1H?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
-1。
1H?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
-1。
1HNMR(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
-1。
1H?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
-1。
1H?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
-1。
1H?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
-1。
1H?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
-1。
1H?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
-1。
1HNMR(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
-1。
1H?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.
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.
Route 2 (a) K
2CO
3, MeOH, Pd (PPh
3)
2Cl
2, PPh
3, CuI, THF, 64 ℃, 20h, 24%
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.
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.
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.
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;}//**************************************************************************<!-- SIPO <DP n="63"> --><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;}//**************************************************************************<!-- SIPO <DP n="64"> --><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();}<!-- SIPO <DP n="65"> --><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;}//**************************************************************************<!-- SIPO <DP n="66"> --><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(); <!-- SIPO <DP n="67"> --><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;<!-- SIPO <DP n="68"> --><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;<!-- SIPO <DP n="69"> --><dp n="d69"/> gal.cpp sprintf(buffer,″%d:%f″,i++,totFitness);textout(screen,font,buffer,5,5,BLACK); return totFitness;}//**************************************************************************<!-- SIPO <DP n="70"> --><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;<!-- SIPO <DP n="71"> --><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;<!-- SIPO <DP n="72"> --><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;};<!-- SIPO <DP n="73"> --><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&&y<50.0) y=50.0; if(x*PI/50.0<-PI/2&&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&&y>50.0)||x*PI/50.0>PI/2) y=50.0; if((x<0.0&&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();}<!-- SIPO <DP n="74"> --><dp n="d74"/>plot.cpp<!-- SIPO <DP n="75"> --><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;<!-- SIPO <DP n="76"> --><dp n="d76"/> ptest.cpp } return n;}<!-- SIPO <DP n="77"> --><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;}//**************************************************************************<!-- SIPO <DP n="78"> --><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,<!-- SIPO <DP n="79"> --><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<!-- SIPO <DP n="80"> --><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;<!-- SIPO <DP n="81"> --><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();<!-- SIPO <DP n="82"> --><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);<!-- SIPO <DP n="83"> --><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);<!-- SIPO <DP n="84"> --><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);<!-- SIPO <DP n="85"> --><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);<!-- SIPO <DP n="86"> --><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;<!-- SIPO <DP n="87"> --><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());<!-- SIPO <DP n="88"> --><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());<!-- SIPO <DP n="89"> --><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;<!-- SIPO <DP n="90"> --><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(″?****″)<!-- SIPO <DP n="91"> --><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;<!-- SIPO <DP n="92"> --><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;}<!-- SIPO <DP n="93"> --><dp n="d93"/> theSimulator.cppint doClassifierAND(){ return D_O_K;}<!-- SIPO <DP n="94"> --><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)&&(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)&&(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)&&(Successval<80)) box(mBoxWidth*2*x+5,2*y*mBoxHeight+10,mBoxWidth*(2*x+1)+5,<!-- SIPO <DP n="95"> --><dp n="d95"/> vzGrid.cpp mBoxHeight*(2*y+1)+10,YELLOW,FILLED); if((Successval>=60)&&(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)&&(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);}<!-- SIPO <DP n="96"> --><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<!-- SIPO <DP n="97"> --><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++)<!-- SIPO <DP n="98"> --><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);}}<!-- SIPO <DP n="99"> --><dp n="d99"/> vzPercolation.cpp getch(); vgaexit();return 0;}//**************************************************************************<!-- SIPO <DP n="100"> --><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;}/*<!-- SIPO <DP n="101"> --><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;<!-- SIPO <DP n="102"> --><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;<!-- SIPO <DP n="103"> --><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<!-- SIPO <DP n="104"> --><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();}//*************************************************************************<!-- SIPO <DP n="105"> --><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<!-- SIPO <DP n="106"> --><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//**************************************************************************<!-- SIPO <DP n="107"> --><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;}<!-- SIPO <DP n="108"> --><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;}<!-- SIPO <DP n="109"> --><dp n="d109"/> vzComputer.hvoid TraceOff(){Trace=false;}void TraceOn(){Trace=true;}#include″vzNanoCell.h″#endif//_vzComputer_h//***********************************************************************<!-- SIPO <DP n="110"> --><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;<!-- SIPO <DP n="111"> --><dp n="d111"/> vzConnector.cpp if((mColor==cLowColor)&&(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;}<!-- SIPO <DP n="112"> --><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)&&(mFlow>0)) {<!-- SIPO <DP n="113"> --><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;}//**************************************************************************<!-- SIPO <DP n="114"> --><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();<!-- SIPO <DP n="115"> --><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//**************************************************************************<!-- SIPO <DP n="116"> --><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];<!-- SIPO <DP n="117"> --><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;}<!-- SIPO <DP n="118"> --><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<!-- SIPO <DP n="119"> --><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;<!-- SIPO <DP n="120"> --><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++);<!-- SIPO <DP n="121"> --><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; }}<!-- SIPO <DP n="122"> --><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<!-- SIPO <DP n="123"> --><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);<!-- SIPO <DP n="124"> --><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;}//************************************************************************<!-- SIPO <DP n="125"> --><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 &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//**************************************************************************<!-- SIPO <DP n="126"> --><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;<!-- SIPO <DP n="127"> --><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,&mEventQ); mpOutRegister->DoCreate(mX2-(4*mDeviceSize),mY1,mY2,false,&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,&mEventQ); } for(r=0;r<mRowCount;r++) for(c=0;c<mColumnCount;c++)<!-- SIPO <DP n="128"> --><dp n="d128"/> vzNanocell.cpp { if(mConnector[r][c].IsAlive()) { if((c==0)&&(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)&&(c<mColumnCount-1)&&(c%2>0)&&(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)&&(c<mColumnCount-1)&&(c%2==0)&&(r<mRowCount-1)) { if(mConnector[r][c-1].IsAlive()) SetSwitch(r,c,r,c-1);<!-- SIPO <DP n="129"> --><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)&&(c<mColumnCount-1)&&(c%2==0)) { if(mConnector[r][c+1].IsAlive()) SetSwitch(r,c,r,c+1); } if((r==mRowCount-1)&&(c<mColumnCount-1)&&(c%2>0)) { if(mConnector[r][c+1].IsAlive()) SetSwitch(r,c,r,c+1); } if((r<mRowCount-1)&&(c==mColumnCount-1)&&(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)&&(c==mColumnCount-1)&&(c%2>0)) 121<!-- SIPO <DP n="130"> --><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(&mConnector[r][0],mSwitchDensity*2); if(temp>=0) SetPinSwitch(mpInRegister->GetPinPtr(temp),&mConnector[r][0]); } if(mConnector[r][mColumnCount-1].IsAlive()) { temp=mpOutRegister->ConnectToPin(&mConnector[r][mColumnCount-1],mSwitchDensity*2); if(temp>=0) SetPinSwitch(mpOutRegister->GetPinPtr(temp),&mConnector[r][mColumnCount-1]); } } DoDraw();}void vzNanocell::SetSwitch(int r1,int c1,int r2,int c2){ int i; int state; if(mSwitchCount>=mSwitchMax) {<!-- SIPO <DP n="131"> --><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,&mEventQ); mConnector[r1][c1].AddNeighbor((vzDevice*)mpSwitch[mSwitchCount]); mpSwitch[mSwitchCount]->AddNeighbor(&mConnector[r1][c1]); mpSwitch[mSwitchCount]->AddNeighbor(&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;<!-- SIPO <DP n="132"> --><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,&mEventQ); mConnector[r1][c1].AddNeighbor((vzDevice *)mpSwitch[mSwitchCount]); mpSwitch[mSwitchCount]->AddNeighbor(&mConnector[r1][c1]); mpSwitch[mSwitchCount]->AddNeighbor(&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,&mEventQ);aConnector->AddNeighbor((vzDevice *)mpSwitch[mSwitchCount]); mpSwitch[mSwitchCount]->AddNeighbor(aConnector); mpSwitch[mSwitchCount]->AddNeighbor(aPin); aPin->AddNeighbor(mpSwitch[mSwitchCount]);mpSwitch[mSwitchCount]->SetState(state);<!-- SIPO <DP n="133"> --><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,&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<!-- SIPO <DP n="134"> --><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();<!-- SIPO <DP n="135"> --><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<!-- SIPO <DP n="136"> --><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;}<!-- SIPO <DP n="137"> --><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;<!-- SIPO <DP n="138"> --><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)<!-- SIPO <DP n="139"> --><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)&&(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];}<!-- SIPO <DP n="140"> --><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,&mEven<!-- SIPO <DP n="141"> --><dp n="d141"/> vzNanocell.cpptQ); mpOutRegister->DoCreate(mX2-(4*mDeviceSize),mY1,mY2,false,&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,&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), &mConnector[tmpNeighbor1Parm1][tmpNeighbor1Parm2],tmpState); else SetPinSwitch2(mpOutRegister->GetPinPtr(tmpNeighbor2Parm2), &mConnector[tmpNeighbor1Parm1][tmpNeighbor1Parm2],tmpState);<!-- SIPO <DP n="142"> --><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();}<!-- SIPO <DP n="143"> --><dp n="d143"/> vzNanocell.cpp//**************************************************************************<!-- SIPO <DP n="144"> --><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();<!-- SIPO <DP n="145"> --><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//**************************************************************************<!-- SIPO <DP n="146"> --><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;<!-- SIPO <DP n="147"> --><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;}<!-- SIPO <DP n="148"> --><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();}<!-- SIPO <DP n="149"> --><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){<!-- SIPO <DP n="150"> --><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)&&(mFlow>0)&&(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]-><!-- SIPO <DP n="151"> --><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)&&(mLabel==false)&&(mTempFlow>0)&&(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]); } } }<!-- SIPO <DP n="152"> --><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;}<!-- SIPO <DP n="153"> --><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;<!-- SIPO <DP n="154"> --><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//***********************************************************************<!-- SIPO <DP n="155"> --><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++)<!-- SIPO <DP n="156"> --><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;<!-- SIPO <DP n="157"> --><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)<!-- SIPO <DP n="158"> --><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]);<!-- SIPO <DP n="159"> --><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])); }}//************************************************************************<!-- SIPO <DP n="160"> --><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();<!-- SIPO <DP n="161"> --><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//**************************************************************************<!-- SIPO <DP n="162"> --><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++) {<!-- SIPO <DP n="163"> --><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;<!-- SIPO <DP n="164"> --><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())&&(any<=mPin[counter].GetOutY2())) if(getRandom(100)<SwitchDensity) whichpin=counter; } return whichpin;}vzPin *vzRegister::GetPinPtr(int i){ return &mPin[i];}<!-- SIPO <DP n="165"> --><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())&&(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())&&(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++)<!-- SIPO <DP n="166"> --><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){<!-- SIPO <DP n="167"> --><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);}//**************************************************************************<!-- SIPO <DP n="168"> --><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);<!-- SIPO <DP n="169"> --><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//**************************************************************************<!-- SIPO <DP n="170"> --><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);<!-- SIPO <DP n="171"> --><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//**************************************************************************<!-- SIPO <DP n="172"> --><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;<!-- SIPO <DP n="173"> --><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)<!-- SIPO <DP n="174"> --><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)<!-- SIPO <DP n="175"> --><dp n="d175"/> vzSwitch.cpp{ int j,returncode; returncode=0; if((mLabel==false)&&(mTempFlow>0)) { for(j=0;j<mNeighborCount;j++) { if((mNeighborArray[j]!=mpSource)&&(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;<!-- SIPO <DP n="176"> --><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;}<!-- SIPO <DP n="177"> --><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,<!-- SIPO <DP n="178"> --><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).
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)
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)
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)
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 |
-
2001
- 2001-07-25 EP EP01959175A patent/EP1319231A4/en not_active Withdrawn
- 2001-07-25 CN CNA018152295A patent/CN1535466A/en active Pending
- 2001-07-25 AU AU2001280759A patent/AU2001280759A1/en not_active Abandoned
- 2001-07-25 KR KR1020037001125A patent/KR100808966B1/en not_active IP Right Cessation
- 2001-07-25 JP JP2002514735A patent/JP2004505357A/en active Pending
- 2001-07-25 WO PCT/US2001/023333 patent/WO2002009117A1/en active Search and Examination
- 2001-07-25 CA CA002417462A patent/CA2417462A1/en not_active Abandoned
Cited By (2)
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 |